@avalabs/avalanche-module 3.12.0 → 3.13.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
@@ -7,21 +7,21 @@ var glacierSdk = require('@avalabs/glacier-sdk');
7
7
  var rpcErrors = require('@metamask/rpc-errors');
8
8
  var coreWalletsSdk = require('@avalabs/core-wallets-sdk');
9
9
  var avalanchejs = require('@avalabs/avalanchejs');
10
- var H = require('big.js');
10
+ var G = require('big.js');
11
11
  var cryptoSdk = require('@avalabs/crypto-sdk');
12
12
  var coreUtilsSdk = require('@avalabs/core-utils-sdk');
13
13
  var nn = require('crypto');
14
14
 
15
15
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
16
16
 
17
- var H__default = /*#__PURE__*/_interopDefault(H);
17
+ var G__default = /*#__PURE__*/_interopDefault(G);
18
18
  var nn__default = /*#__PURE__*/_interopDefault(nn);
19
19
 
20
- var Gt=Object.defineProperty;var Zr=(e,t,r)=>t in e?Gt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var a=(e,t)=>Gt(e,"name",{value:t,configurable:!0});var G=(e,t,r)=>(Zr(e,typeof t!="symbol"?t+"":t,r),r),Ke=(e,t,r)=>{if(!t.has(e))throw TypeError("Cannot "+r)};var x=(e,t,r)=>(Ke(e,t,"read from private field"),r?r.call(e):t.get(e)),I=(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);},C=(e,t,r,n)=>(Ke(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r);var ze=(e,t,r)=>(Ke(e,t,"access private method"),r);function qt(e){let t,r=0;for(t=0;t<e.length;t++)r+=e.charCodeAt(t)*(t+1);return r}a(qt,"charsum");function Ye(e){let t,r=0;for(t=0;t<e.length;t++){let n=qt(e[t]??"");r=r+65027/n;}return (""+r).slice(0,16)}a(Ye,"arrayHash");var q=a(async({operation:e,isSuccess:t,maxRetries:r=10,backoffPolicy:n=U.exponential()})=>{let o=0,s=0,i;for(;s<r;){s>0&&await ea(o);try{let l=await e(s);if(t(l))return l}catch(l){i=l;}o=n(s),s++;}let c=i?`Max retry exceeded. ${i}`:"Max retry exceeded.";throw new Error(c)},"retry"),Qe=class Qe{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 n=>{if(n<t)return (n+1)*r;let o=n-t+1,s=t*r,i=2*r*(Math.pow(2,o)-1);return s+i}}};a(Qe,"RetryBackoffPolicy");var U=Qe;function ea(e){return new Promise(t=>setTimeout(t,e))}a(ea,"delay");var Ze=a(e=>q({operation:t=>e(t>0),maxRetries:2,backoffPolicy:U.constant(1),isSuccess:t=>t?.status?.error_code!==429}),"coingeckoRetry");async function $(e,t,r=fetch){let n=await r(...e);if(!n.ok)throw new Error(`Request failed with status ${n.status}`);let o=await n.json();return t.parse(o)}a($,"fetchAndVerify");var et=class et{constructor(t,r){this.proxyApiUrl=t;this.fetchFn=r;}simplePrice(t){let r=new URLSearchParams(t);return $([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${r}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema,this.fetchFn)}simplePriceByContractAddresses(t){let{id:r,...n}=t,o=new URLSearchParams(n);return $([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${o}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema,this.fetchFn)}};a(et,"CoingeckoProxyClient");var Ae=et;var ta=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())})),tt=class tt{constructor(t){this.proxyApiUrl=t;}watchlistToken(t){let r=new URLSearchParams(t);return $([`${this.proxyApiUrl}/watchlist/tokens?${r}`,{method:"GET",headers:{"Content-Type":"application/json"}}],ta)}};a(tt,"WatchlistProxyClient");var Be=tt;var F,W,j,ne,rt=class rt{constructor({storage:t,proxyApiUrl:r,fetch:n}){I(this,F,void 0);I(this,W,void 0);I(this,j,void 0);I(this,ne,void 0);G(this,"transformSimplePriceResponse",a((t,r=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let n={};return Object.keys(t).forEach(o=>{let s=t[o];n[o]={},r.forEach(i=>{n[o]={[i]:{price:s?.[i],change24:s?.[`${i}_24h_change`],vol24:s?.[`${i}_24h_vol`],marketCap:s?.[`${i}_market_cap`]}};});}),n},"transformSimplePriceResponse"));C(this,F,t),C(this,W,r),C(this,j,n??globalThis.fetch),C(this,ne,coreCoingeckoSdk.getBasicCoingeckoHttp(void 0,x(this,j)));}async getWatchlistDataForToken({tokenDetails:t,currency:r=coreCoingeckoSdk.VsCurrencyType.USD}){let n=(await new Be(x(this,W)).watchlistToken({tokens:t.symbol,currency:r})).filter(s=>t.isNative?s.internalId===`NATIVE-${t.symbol.toLowerCase()}`:s.platforms[t.caip2Id]===t.address),[o]=n;return o?{priceInCurrency:o.current_price??0,change24:o.price_change_percentage_24h??0,marketCap:o.market_cap??0,vol24:o.total_volume??0}:{priceInCurrency:0,change24:0,marketCap:0,vol24:0}}async getSimplePrice({coinIds:t=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD]}){let n,s=`getSimplePrice-${t?`${Ye(t)}-${r.toString()}`:`${r.toString()}`}`;if(n=x(this,F)?.get?.(s),n)return n;try{n=await Ze(i=>this.simplePrice({coinIds:t,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:i}));}catch{n=void 0;}return x(this,F)?.set?.(s,n),n}async getPricesByAddresses(t,r,n=coreCoingeckoSdk.VsCurrencyType.USD){let o,i=`getPricesWithMarketDataByAddresses-${`${Ye(t)}-${r}-${n}`}`;if(o=x(this,F)?.get?.(i),o)return o;try{o=await Ze(c=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:t,currency:n,useCoingeckoProxy:c}));}catch(c){console.error(c),o=void 0;}return x(this,F)?.set?.(i,o),o}async fetchPricesByAddresses({assetPlatformId:t,tokenAddresses:r,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:o=!1}){if(o){let s=await new Ae(x(this,W),x(this,j)).simplePriceByContractAddresses({id:t,contract_addresses:r,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0});return this.transformSimplePriceResponse(s,[n])}return coreCoingeckoSdk.simpleTokenPrice(x(this,ne),{assetPlatformId:t,tokenAddresses:r,currencies:[n],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:t=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD],marketCap:n=!1,vol24:o=!1,change24:s=!1,lastUpdated:i=!1,useCoingeckoProxy:c=!1,shouldThrow:l=!0}){if(c){let d=await new Ae(x(this,W),x(this,j)).simplePrice({ids:t,vs_currencies:r,include_market_cap:n,include_24hr_vol:o,include_24hr_change:s,include_last_updated_at:i});return this.transformSimplePriceResponse(d,r)}return coreCoingeckoSdk.simplePrice(x(this,ne),{coinIds:t,currencies:r,marketCap:n,vol24:o,change24:s,lastUpdated:i,shouldThrow:l})}};F=new WeakMap,W=new WeakMap,j=new WeakMap,ne=new WeakMap,a(rt,"TokenService");var Te=rt;zod.object({date:zod.string(),usd:zod.record(zod.number())});var h=a((e,t,r,n)=>({label:e,type:vmModuleTypes.DetailItemType.CURRENCY,value:t,maxDecimals:r,symbol:n}),"currencyItem"),T=a((e,t,r="horizontal")=>({label:e,alignment:r,type:vmModuleTypes.DetailItemType.TEXT,value:t}),"textItem");var V=a((e,t)=>({label:e,type:vmModuleTypes.DetailItemType.ADDRESS,value:t}),"addressItem"),Wt=a((e,t)=>({label:e,type:vmModuleTypes.DetailItemType.ADDRESS_LIST,value:t}),"addressListItem"),v=a((e,t)=>({label:e,type:vmModuleTypes.DetailItemType.NODE_ID,value:t}),"nodeIDItem"),at=a((e,t)=>({label:e,type:vmModuleTypes.DetailItemType.DATA,value:t}),"dataItem"),E=a((e,t)=>({label:e,type:vmModuleTypes.DetailItemType.DATE,value:t}),"dateItem"),oe=a((e,t)=>({label:e,type:vmModuleTypes.DetailItemType.NETWORK,value:t}),"networkItem");var J=a(({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}},"getCoreHeaders");var jt=process.env.GLACIER_API_KEY;var K=a(()=>jt,"getGlacierApiKey");var pa={rltoken:K()},z,Me,Le,Kt,_e,zt,nt=class nt extends glacierSdk.FetchHttpRequest{constructor(r){super(r);I(this,Le);I(this,_e);I(this,z,0);I(this,Me,U.exponential());}request(r){let n={...pa,...r.query||{}},o={...r,query:Object.keys(n).length>0?n:void 0},s=a(()=>super.request(o),"getRequest");return x(this,z)>0?ze(this,_e,zt).call(this,s):ze(this,Le,Kt).call(this,s)}};z=new WeakMap,Me=new WeakMap,Le=new WeakSet,Kt=a(function(r){let n=r();return new glacierSdk.CancelablePromise((o,s,i)=>{i(()=>n.cancel()),n.then(c=>{C(this,z,0),o(c);}).catch(c=>{if(c instanceof glacierSdk.ApiError){let l=c.status===429,d=c.status>=500&&c.status<600;C(this,z,x(this,z)+Number(l||d));}s(c);});})},"#request"),_e=new WeakSet,zt=a(function(r){let n=x(this,Me).call(this,x(this,z));return new glacierSdk.CancelablePromise((o,s,i)=>{let c=setTimeout(()=>{let l=r();i(()=>{l.cancel(),clearTimeout(c);}),l.then(o).catch(s);},n);})},"#postponeRequest"),a(nt,"GlacierFetchHttpRequest");var ve=nt;var Y=a((e,t)=>({message:`${e}${t instanceof Error?`: ${t.message}`:""}`,data:{cause:t}}),"rpcErrorOpts");var Yt={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 ua={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},ha={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},Zt=a(e=>{switch(e){case vmModuleTypes.Environment.PRODUCTION:return ua;case vmModuleTypes.Environment.DEV:return ha}},"getEnv");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()}),er=a(e=>ga.safeParse(e),"parseRequestParams");var S=a(async e=>{let{isTestnet:t,isDevnet:r,rpcUrl:n,customRpcHeaders:o}=e,s=o?{headers:o}:void 0;return r?coreWalletsSdk.Avalanche.JsonRpcProvider.fromBaseURL(n):t?coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultFujiProvider(s):coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultMainnetProvider(s)},"getProvider");var Ue=a(({utxoHexes:e=[],vm:t})=>{try{let r=avalanchejs.utils.getManagerForVM(t).getDefaultCodec();return e.map(n=>{let o=avalanchejs.utils.hexToBuffer(n);return avalanchejs.Utxo.fromBytes(o,r)[0]})}catch(r){return console.error("Error getting provided utxos",r),[]}},"getProvidedUtxos");var Fe=a(e=>{switch(e.type){case vmModuleTypes.TxType.AddPermissionlessDelegator:return {...e,type:vmModuleTypes.TxType.AddPermissionlessDelegator};case vmModuleTypes.TxType.AddPermissionlessValidator:return {...e,type:vmModuleTypes.TxType.AddPermissionlessValidator};case vmModuleTypes.TxType.AddSubnetValidator:return {...e,type:vmModuleTypes.TxType.AddSubnetValidator};case vmModuleTypes.TxType.CreateChain:return {...e,type:vmModuleTypes.TxType.CreateChain};case vmModuleTypes.TxType.CreateSubnet:return {...e,type:vmModuleTypes.TxType.CreateSubnet};case vmModuleTypes.TxType.RemoveSubnetValidator:return {...e,type:vmModuleTypes.TxType.RemoveSubnetValidator};case vmModuleTypes.TxType.AddAutoRenewedValidator:return {...e,type:vmModuleTypes.TxType.AddAutoRenewedValidator};case vmModuleTypes.TxType.SetAutoRenewedValidatorConfig:return {...e,type:vmModuleTypes.TxType.SetAutoRenewedValidatorConfig};case vmModuleTypes.TxType.ConvertSubnetToL1:return {...e,type:vmModuleTypes.TxType.ConvertSubnetToL1,chain:e.chain};case vmModuleTypes.TxType.SetL1ValidatorWeight:return {...e,type:vmModuleTypes.TxType.SetL1ValidatorWeight,chain:e.chain};case vmModuleTypes.TxType.DisableL1Validator:return {...e,type:vmModuleTypes.TxType.DisableL1Validator,chain:e.chain};case vmModuleTypes.TxType.IncreaseL1ValidatorBalance:return {...e,type:vmModuleTypes.TxType.IncreaseL1ValidatorBalance,chain:e.chain};case vmModuleTypes.TxType.RegisterL1Validator:return {...e,type:vmModuleTypes.TxType.RegisterL1Validator,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}},"parseTxDetails");var rr=a(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 L1?";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?";case vmModuleTypes.TxType.AddAutoRenewedValidator:return "Do you want to add this auto-renewed validator?";case vmModuleTypes.TxType.SetAutoRenewedValidatorConfig:return "Do you want to update this auto-renewed validator config?";default:return "Sign Message"}},"parseTxDisplayTitle");var st=a(async({indices:e,chainAlias:t,isChange:r,network:n,xpubXP:o,externalXPAddresses:s})=>{if(o){let i=await S(n);return e.map(c=>coreWalletsSdk.Avalanche.getAddressFromXpub(o,c,i,t,r))}return s&&Array.isArray(s)?e.map(c=>s.find(l=>l.index===c)).filter(c=>c!==void 0).map(c=>c.address):[]},"getAddressesByIndices");var it=a(e=>e.type===vmModuleTypes.TxType.AddPermissionlessDelegator,"isAddPermissionlessDelegatorTx"),ct=a(e=>e.type===vmModuleTypes.TxType.AddPermissionlessValidator,"isAddPermissionlessValidatorTx"),lt=a(e=>e.type===vmModuleTypes.TxType.Export,"isExportTx"),dt=a(e=>e.type===vmModuleTypes.TxType.Import,"isImportTx"),xa=a(e=>e.type===vmModuleTypes.TxType.Base,"isBaseTx"),pt=a(e=>e.type===vmModuleTypes.TxType.AddSubnetValidator,"isAddSubnetValidatorTx"),Aa=a(e=>e.type===vmModuleTypes.TxType.CreateChain,"isCreateChainTx"),Ta=a(e=>e.type===vmModuleTypes.TxType.CreateSubnet,"isCreateSubnetTx"),mt=a(e=>e.type===vmModuleTypes.TxType.RemoveSubnetValidator,"isRemoveSubnetValidatorTx"),ar=a(e=>e.type===vmModuleTypes.TxType.ConvertSubnetToL1,"isConvertSubnetToL1Tx"),nr=a(e=>e.type===vmModuleTypes.TxType.DisableL1Validator,"isDisableL1ValidatorTx"),or=a(e=>e.type===vmModuleTypes.TxType.IncreaseL1ValidatorBalance,"isIncreaseL1ValidatorBalanceTx"),sr=a(e=>e.type===vmModuleTypes.TxType.RegisterL1Validator,"isRegisterL1ValidatorTx"),ir=a(e=>e.type===vmModuleTypes.TxType.SetL1ValidatorWeight,"isSetL1ValidatorWeightTx"),ut=a(e=>e.type===vmModuleTypes.TxType.AddAutoRenewedValidator,"isAddAutoRenewedValidatorTx"),ht=a(e=>e.type===vmModuleTypes.TxType.SetAutoRenewedValidatorConfig,"isSetAutoRenewedValidatorConfigTx"),$o=a(e=>it(e)||ct(e)||pt(e)||mt(e)||ut(e)||ht(e),"isStakingDetails"),Wo=a(e=>lt(e)||dt(e),"isExportImportTxDetails"),cr=a(e=>xa(e),"isChainDetails"),lr=a(e=>Aa(e),"isBlockchainDetails"),dr=a(e=>Ta(e),"isSubnetDetails");var B=(n=>(n.AVM="X-Chain",n.PVM="P-Chain",n.EVM="C-Chain",n))(B||{});var gt=a(({tx:e,symbol:t,network:r,signerAccount:n})=>{let o=[],{txFee:s,nodeID:i,start:c,end:l,stake:d}=e,p={items:[V("Account",n),oe("Network",{name:r.chainName,logoUri:r.logoUri})]};o.push(p);let m=[v("Node",i),h("Stake Amount",d,9,t),E("Start",c),E("End",l)];return o.push({title:"Staking Details",items:m}),s&&o.push({title:"Network Fee",items:[h("Fee Amount",s,9,t)]}),o},"addPermissionlessDelegatorDetailSection");var ft=a(({tx:e,symbol:t,network:r,signerAccount:n})=>{let o=[],{txFee:s,nodeID:i,delegationFee:c,start:l,end:d,stake:p}=e,m={items:[V("Account",n),oe("Network",{name:r.chainName,logoUri:r.logoUri})]};o.push(m);let u=[v("Node",i)];return u.push(h("Stake Amount",p,9,t),T("Delegation Fee",`${c/1e4} %`),E("Start",l),E("End",d)),o.push({title:"Staking Details",items:u}),s&&o.push({title:"Network Fee",items:[h("Fee Amount",s,9,t)]}),o},"addPermissionlessValidatorDetailSection");var yt=a((e,t)=>{let r=[],{txFee:n,nodeID:o,start:s,end:i,subnetID:c}=e,l=[v("Subnet ID",c),v("Node ID",o),E("Start Date",s),E("End Date",i)];return r.push({title:"Staking Details",items:l}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"addSubnetValidatorDetailSection");var xt=a((e,t)=>{let r=[],{txFee:n,chainID:o,managerAddress:s,subnetID:i,validators:c}=e,l=[v("Subnet ID",i),v("Chain ID",o),V("Manager Address",s)];return r.push({title:"L1 Details",items:l}),c.forEach(({balance:d,stake:p,nodeId:m,remainingBalanceOwners:u,deactivationOwners:y},f)=>{let D=[v("Node ID",m),h("Balance",d,9,t),h("Stake",p,9,t)];y.length>0&&D.push(T(`${y.length>1?"Owners":"Owner"} Able to Deactivate`,y.join(`
21
- `),"vertical")),u.length>0&&D.push(T(`${u.length>1?"Owners":"Owner"} of the Remaining Balance`,u.join(`
22
- `),"vertical")),r.push({title:f===0?"Validators":void 0,items:D});}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"convertSubnetToL1DetailSection");var At=a((e,t)=>{let r=[],{txFee:n,amount:o,chain:s,destination:i,type:c}=e;return r.push({items:[T("Source Chain",`Avalanche ${B[s]}`),T("Target Chain",`Avalanche ${B[i]}`)]}),r.push({items:[T("Transaction Type",c?(c[0]||"").toUpperCase()+c.slice(1):""),h("Amount",o,9,t)]}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"exportDetailSection");var Tt=a((e,t)=>{let r=[],{txFee:n,amount:o,chain:s,source:i,type:c}=e;return r.push({items:[T("Source Chain",`Avalanche ${B[i]}`),T("Destination Chain",`Avalanche ${B[s]}`)]}),r.push({items:[T("Transaction Type",c?(c[0]||"").toUpperCase()+c.slice(1):""),h("Amount",o,9,t)]}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"importDetailSection");var vt=a((e,t)=>{let r=[],{txFee:n,nodeID:o,subnetID:s}=e,i=[v("Node ID",o),v("Subnet ID",s)];return r.push({title:"Staking Details",items:i}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"removeSubnetValidatorDetailSection");var Dt=a((e,t)=>{let r=[],{txFee:n,chain:o,outputs:s,memo:i}=e;return r.push({title:"Chain Details",items:[T("Active chain",`Avalanche ${B[o]}`)]}),s.forEach((c,l)=>{let d=c.owners.flatMap(p=>[V("To",p),h("Amount",c.amount,9,t)]);c.owners.length>1&&d.push(T("Threshold",c.threshold.toString())),r.push({title:l===0?"Balance Change":void 0,items:d});}),o!==avalanchejs.PVM&&i&&r.push({title:"Memo",items:[i]}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"chainDetailSection");var It=a((e,t)=>{let r=[],{txFee:n,threshold:o,controlKeys:s}=e;return r.push({title:"L1 Details",items:[Wt(s.length>1?"Owners":"Owner",s),T("Signature Threshold",`${o}/${s.length}`,"horizontal")]}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"subnetDetailSection");var Da=a(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}},"formatGenesisData"),St=a((e,t)=>{let r=[],{txFee:n,chainID:o,chainName:s,vmID:i,genesisData:c}=e,l=[T("Blockchain name",s,"vertical"),T("Blockchain ID",o,"vertical"),T("Virtual Machine ID",i,"vertical"),at("Genesis Data",Da(c))];return r.push({title:"Blockchain Details",items:l}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"blockChainDetailSection");var kt=a((e,t)=>{let r=[],{txFee:n,validationId:o}=e,s=[v("Validation ID",o)];return r.push({title:"L1 Details",items:s}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"disableL1ValidatorDetailSection");var Pt=a((e,t)=>{let r=[],{txFee:n,balance:o,validationId:s}=e,i=[v("Validation ID",s),h("Increase by amount",o,9,t)];return r.push({title:"L1 Details",items:i}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"increaseL1ValidatorBalanceDetailSection");var bt=a((e,t)=>{let r=[],{txFee:n,balance:o}=e,s=[h("Initial balance",o,9,t)];return r.push({title:"L1 Details",items:s}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"registerL1ValidatorDetailSection");var Ct=a((e,t)=>{let r=[],{txFee:n}=e;return n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"setL1ValidatorWeightDetailSection");var Ia=60*60*24,pr=1e4,wt=a(({tx:e,symbol:t,network:r,signerAccount:n})=>{let o=[],{txFee:s,nodeID:i,stake:c,delegationFee:l,autoCompoundRewardShares:d,period:p}=e,m={items:[V("Account",n),oe("Network",{name:r.chainName,logoUri:r.logoUri})]};o.push(m);let u=[v("Node",i),h("Stake Amount",c,9,t),T("Delegation fee",`${l/pr} %`),T("Cycle duration",`${Number(p)/Ia} days`),T("Compound rewards percentage",`${d/pr} %`)];return o.push({title:"Staking Details",items:u}),s&&o.push({title:"Network Fee",items:[h("Fee Amount",s,9,t)]}),o},"addAutoRenewedValidatorDetailSection");var Sa=60*60*24,ka=1e4,Nt=a((e,t)=>{let r=[],{txFee:n,txId:o,autoCompoundRewardShares:s,period:i}=e,c=[v("Validator Tx ID",o),T("Cycle duration",`${Number(i)/Sa} days`),T("Compound rewards percentage",`${s/ka} %`)];return r.push({title:"Staking Details",items:c}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"setAutoRenewedValidatorConfigDetailSection");var Oe=a((e,t,r)=>{if(cr(e))return Dt(e,t);if(lt(e))return At(e,t);if(dt(e))return Tt(e,t);if(dr(e))return It(e,t);if(it(e)){if(!r)throw new Error("context (network, signerAccount) is required for AddPermissionlessDelegator");return gt({tx:e,symbol:t,network:r.network,signerAccount:r.signerAccount})}else if(ct(e)){if(!r)throw new Error("context (network, signerAccount) is required for AddPermissionlessValidator");return ft({tx:e,symbol:t,network:r.network,signerAccount:r.signerAccount})}else {if(lr(e))return St(e,t);if(pt(e))return yt(e,t);if(mt(e))return vt(e,t);if(ar(e))return xt(e,t);if(nr(e))return kt(e,t);if(or(e))return Pt(e,t);if(sr(e))return bt(e,t);if(ir(e))return Ct(e,t);if(ut(e)){if(!r)throw new Error("context (network, signerAccount) is required for AddAutoRenewedValidator");return wt({tx:e,symbol:t,network:r.network,signerAccount:r.signerAccount})}else if(ht(e))return Nt(e,t)}},"getTransactionDetailSections");var hr=a(e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.P_CHAIN,"isPChainTransactions"),gr=a(e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.X_CHAIN,"isXChainTransactions");function ce(e,t,r="tx"){return `${e}/${r}/${t}`}a(ce,"getExplorerAddressByNetwork");function Q({amount:e,decimals:t}){return e===void 0?new H__default.default(0):new H__default.default(e/10**t)}a(Q,"getTokenValue");var Pa=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()}),ba=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()}))})}),Ca=a(e=>({xpAddress:e.currentAddress,evmAddress:e.currentEvmAddress,xpubXP:e.xpubXP,externalXPAddresses:[]}),"getAccountFromLegacyContext"),wa=a(e=>e.account,"getAccountFromNewContext"),Na=a(e=>e!=null&&typeof e=="object"&&"account"in e&&e.account!=null&&typeof e.account=="object","hasAccountField"),Xe=a(e=>{if(!e)return {success:!1,error:"Missing Avalanche transaction context"};if(Na(e)){let{success:o,data:s,error:i}=ba.safeParse(e);return o?{success:!0,data:wa(s)}:{success:!1,error:i.errors[0]?.message||"Invalid or missing Avalanche transaction context"}}let{success:t,data:r,error:n}=Pa.safeParse(e);return t?{success:!0,data:Ca(r)}:{success:!1,error:n.errors[0]?.message||"Invalid or missing Avalanche transaction context"}},"getAccountFromContext");var yr=a(async({request:e,network:t,approvalController:r,glacierApiUrl:n,appInfo:o})=>{let s=er(e.params);if(!s.success)return {error:rpcErrors.rpcErrors.invalidParams(Y("Transaction params are invalid",s.error))};try{let{transactionHex:i,chainAlias:c,externalIndices:l,internalIndices:d,utxos:p}=s.data,m=coreWalletsSdk.Avalanche.getVmByChainAlias(c),u=avalanchejs.utils.hexToBuffer(i),y=t.isTestnet??!1,f=await S(t),D=Xe(e.context);if(!D.success)return {error:rpcErrors.rpcErrors.invalidParams(D.error)};let{xpAddress:b,xpubXP:L,externalXPAddresses:R}=D.data,he=Ue({utxoHexes:p,vm:m}),te=he.length?he:await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:i,chainAlias:c,network:y?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,url:n,token:K(),headers:J(o)}),re;if(c==="C")re=await coreWalletsSdk.Avalanche.createAvalancheEvmUnsignedTx({txBytes:u,vm:m,utxos:te,fromAddress:b});else {let xe=avalanchejs.utils.unpackWithManager(m,u);if(L!==void 0&&typeof L!="string")return {error:rpcErrors.rpcErrors.invalidParams("xpubXP must be a string")};let Je=await st({indices:l??[],chainAlias:c,isChange:!1,network:t,xpubXP:L,externalXPAddresses:R}),zr=await st({indices:d??[],chainAlias:c,isChange:!0,network:t,xpubXP:L,externalXPAddresses:R}),Yr=[...new Set([b,...Je,...zr])].map(Qr=>avalanchejs.utils.parse(Qr)[2]);re=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:xe,utxos:te,provider:f,fromAddressBytes:Yr});}let ge=await coreWalletsSdk.Avalanche.parseAvalancheTx(re,f,b),Ne=Fe(ge),fe=rr(ge);if(ge.type==="unknown"||Ne===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction data. Unsupported tx type")};let Re={type:vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION,unsignedTxJson:JSON.stringify(re.toJSON()),data:ge,vm:m,externalIndices:l,internalIndices:d},Ve=Oe(Ne,t.networkToken.symbol,{network:t,signerAccount:b});if(Ve===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction display data. Unsupported tx type")};let Ee={title:fe,network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},details:Ve,networkFeeSelector:!1},ye=await r.requestApproval({request:e,displayData:Ee,signingData:Re});if("error"in ye)return {error:ye.error};let _;try{_=await Ba(f,ye,m);}catch(xe){return {error:rpcErrors.rpcErrors.internal(Y("Unable to broadcast transaction",xe))}}return Ma({explorerUrl:t.explorerUrl??"",provider:f,txHash:_,vm:m,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:e}),{result:_}}catch(i){return console.error(i),{error:rpcErrors.rpcErrors.internal(Y("Unable to create transaction",i))}}},"avalancheSendTransaction"),Ba=a(async(e,t,r)=>{if("txHash"in t)return t.txHash;let{txID:n}=await e.issueTxHex(t.signedData,r);return n},"getTxHash"),Ma=a(async({explorerUrl:e,provider:t,txHash:r,vm:n,onTransactionPending:o,onTransactionConfirmed:s,onTransactionReverted:i,request:c})=>{let d=ce(e,r);try{o({txHash:r,request:c,explorerLink:d}),n===avalanchejs.PVM?(await q({operation:()=>t.getApiP().getTxStatus({txID:r}),isSuccess:m=>["Committed","Dropped"].includes(m.status),maxRetries:7})).status==="Committed"?s({txHash:r,explorerLink:d,request:c}):i({txHash:r,request:c}):n===avalanchejs.AVM?(await q({operation:()=>t.getApiX().getTxStatus({txID:r}),isSuccess:m=>["Accepted","Rejected"].includes(m.status),maxRetries:7})).status==="Accepted"?s({txHash:r,explorerLink:d,request:c}):i({txHash:r,request:c}):(await q({operation:()=>t.getApiC().getAtomicTxStatus(r),isSuccess:m=>["Accepted","Dropped"].includes(m.status),maxRetries:7})).status==="Accepted"?s({txHash:r,explorerLink:d,request:c}):i({txHash:r,request:c});}catch(p){console.error(p),p instanceof Error&&p.message.startsWith("Max retry exceeded.")||i({txHash:r,request:c});}},"waitForTransactionReceipt");var La=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")])]),xr=a(e=>La.safeParse(e),"parseRequestParams");var Tr=a(async({request:e,network:t,approvalController:r})=>{let n=xr(e.params);if(!n.success)return console.error("invalid params",n.error),{error:rpcErrors.rpcErrors.invalidParams(Y("Params are invalid",n.error))};let[o,s]=n.data,i=Buffer.from(o,"utf-8").toString("hex"),c={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE,data:i,accountIndex:s},l={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:[o]}]},d=await r.requestApproval({request:e,displayData:l,signingData:c});return "error"in d?{error:d.error}:"signedData"in d?{result:d.signedData}:{error:rpcErrors.rpcErrors.internal("No signed data returned")}},"avalancheSignMessage");var Ua=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()}),vr=a(e=>Ua.safeParse(e),"parseRequestParams");var kr=a(async({vm:e,txBytes:t,utxos:r,currentAddress:n,currentEvmAddress:o,provider:s})=>{let i,c,l=avalanchejs.utils.unpackWithManager(e,t);if(avalanchejs.evmSerial.isExportTx(l)){let d=l.ins[0]?.address.toHex();if(!o)throw rpcErrors.rpcErrors.invalidRequest("Missing EVM address");if(d?.toLowerCase()!==o.toLowerCase())throw new Error("This account has nothing to sign");return coreWalletsSdk.Avalanche.createAvalancheEvmUnsignedTx({txBytes:t,vm:e,utxos:r,fromAddress:n})}try{let p=avalanchejs.utils.getManagerForVM(e).unpack(t,avalanchejs.avaxSerial.SignedTx);avalanchejs.evmSerial.isImportTx(l)?c=await coreWalletsSdk.Avalanche.createAvalancheEvmUnsignedTx({txBytes:t,vm:e,utxos:r,fromAddress:n}):c=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:l,provider:s,credentials:p.getCredentials(),utxos:r}),i=l.getSigIndices().map((m,u)=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(m,{unsignedTx:c,credentialIndex:u})));}catch{i=l.getSigIndices().map(p=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(p)));}return coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:l,provider:s,credentials:i,utxos:r})},"getUnsignedOrPartiallySignedTx");var br=a(async({request:e,network:t,approvalController:r,glacierApiUrl:n,appInfo:o})=>{let s=vr(e.params);if(!s.success)return console.error("invalid params",s.error),{error:rpcErrors.rpcErrors.invalidParams("Params are invalid")};let{transactionHex:i,chainAlias:c,from:l,utxos:d}=s.data,p=coreWalletsSdk.Avalanche.getVmByChainAlias(c),m=t.isTestnet??!1,u=await S(t),y=Xe(e.context);if(!y.success)return {error:rpcErrors.rpcErrors.invalidParams(y.error)};let{xpAddress:f,evmAddress:D}=y.data,b=Ue({utxoHexes:d,vm:p}),L=b.length?b:await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:i,chainAlias:c,network:m?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,url:n,token:K(),headers:J(o)}),R=await kr({txBytes:avalanchejs.utils.hexToBuffer(i),vm:p,utxos:L,currentAddress:f,currentEvmAddress:D,provider:u}),he=avalanchejs.utils.addressesFromBytes([avalanchejs.utils.parse(l??f)[2]])[0];if(!he)return {error:rpcErrors.rpcErrors.invalidRequest("Missing signer address")};let te=R.getSigIndicesForAddress(he);if(!te)return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let re=R.getSigIndices();if(!te.some(([xe,Je])=>re[xe]?.includes(Je)))return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let Ne=l??f,fe=await coreWalletsSdk.Avalanche.parseAvalancheTx(R,u,l??f),Re=Fe(fe);if(fe.type==="unknown"||Re===void 0)return {error:rpcErrors.rpcErrors.invalidParams("Unable to parse transaction data. Unsupported tx type")};let Ve={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION,data:fe,vm:p,unsignedTxJson:JSON.stringify(R.toJSON()),ownSignatureIndices:te},Ee=Oe(Re,t.networkToken.symbol,{network:t,signerAccount:Ne});if(Ee===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction display data. Unsupported tx type")};let ye={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:Ee},_=await r.requestApproval({request:e,displayData:ye,signingData:Ve});return "error"in _?{error:_.error}:"signedData"in _?{result:_.signedData}:{error:rpcErrors.rpcErrors.invalidRequest("No signed data returned")}},"avalancheSignTransaction");var ee=a(({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}`)}},"buildDerivationPath");var Mt=a(e=>"derivationPathType"in e&&"accountIndex"in e&&typeof e.accountIndex=="number"&&typeof e.derivationPathType=="string","hasDerivationDetails");var Cr=a(async e=>{let{approvalController:t,network:r,secretId:n}=e,o=Mt(e)?ee(e).AVM:void 0,s=Mt(e)?ee(e).CoreEth:void 0,i=await S(r),c=await t.requestPublicKey({curve:"secp256k1",secretId:n,derivationPath:o}).catch(()=>null),l=await t.requestPublicKey({curve:"secp256k1",secretId:n,derivationPath:s}).catch(()=>null),d=l?{[vmModuleTypes.NetworkVMType.CoreEth]:i.getAddress(Buffer.from(l,"hex"),"C")}:{},p=c?{[vmModuleTypes.NetworkVMType.AVM]:i.getAddress(Buffer.from(c,"hex"),"X"),[vmModuleTypes.NetworkVMType.PVM]:i.getAddress(Buffer.from(c,"hex"),"P")}:{};return {...d,...p}},"deriveAddress");var wr=a(async e=>{let{approvalController:t,network:r,secretId:n,accountIndices:o,derivationPathType:s,addressIndex:i}=e;if(o.length===0)return [];await cryptoSdk.init();let c=await Promise.all(o.map(async d=>{let p=ee({accountIndex:d,derivationPathType:s,addressIndex:i}),[m,u]=await Promise.all([t.requestPublicKey({curve:"secp256k1",secretId:n,derivationPath:p.AVM}),t.requestPublicKey({curve:"secp256k1",secretId:n,derivationPath:p.CoreEth})]);return {xp:Uint8Array.from(Buffer.from(m,"hex")),evm:Uint8Array.from(Buffer.from(u,"hex"))}}));return (await cryptoSdk.deriveAddressesForAvalanche(c.map(d=>d.xp),c.map(d=>d.evm),!!r.isTestnet)).map(d=>({[vmModuleTypes.NetworkVMType.AVM]:d.x,[vmModuleTypes.NetworkVMType.PVM]:d.p,[vmModuleTypes.NetworkVMType.CoreEth]:d.coreEth}))},"deriveAddresses");var Rr=a(async({accountIndex:e,xpubXP:t,walletType:r,network:n})=>{if(!n)throw rpcErrors.rpcErrors.invalidParams("network is required to get address");if(t===void 0)throw rpcErrors.rpcErrors.invalidParams("xpubXP is required to get address");let o=await S(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")}},"getAddress");var Ft=class Ft extends Error{constructor(){super(...arguments);G(this,"message","Glacier is unhealthy. Try again later.");}};a(Ft,"GlacierUnhealthyError");var Ge=Ft,Ot=class Ot{constructor({glacierApiUrl:t,headers:r}){G(this,"glacierSdk");G(this,"isGlacierHealthy",!0);G(this,"isHealthy",a(()=>this.isGlacierHealthy,"isHealthy"));this.glacierSdk=new glacierSdk.Glacier({BASE:t,HEADERS:r},ve);}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 Ge&&this.setGlacierToUnhealthy(),r}}async getChainBalance(t){try{return this.glacierSdk.primaryNetworkBalances.getBalancesByAddresses(t)}catch(r){throw r instanceof Ge&&this.setGlacierToUnhealthy(),r}}};a(Ot,"AvalancheGlacierService");var qe=Ot;var Vr=a(e=>Object.keys(e).includes("unlockedUnstaked"),"isPchainBalance"),Er=a(e=>Object.keys(e).includes("locked"),"isXchainBalance");function $e(e,t){let r=Object.values(e).reduce(function(n,o){let s=o.reduce(function(i,c){if(c.assetId!==t)return i;let l=Number(c.amount);return i+l},0);return n+s},0);return BigInt(r)}a($e,"calculateAvaxTotalBalance");var Mr=a(({balance:e,networkToken:t,priceInCurrency:r,marketCap:n,vol24:o,change24:s,coingeckoId:i,avaxAssetId:c})=>{let l={},d={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 d){let D=d[f];if(!D||!D.length){l[f]=0n;continue}D.forEach(b=>{if(b.assetId!==c)return;let R=(l[f]??0n)+BigInt(b.amount);l[f]=R;});}let p=new coreUtilsSdk.TokenUnit(l.unlockedUnstaked?l.unlockedUnstaked:0n,t.decimals,t.symbol),m=r?p.mul(r).toDisplay({fixedDp:2,asNumber:!0}):void 0,u=new coreUtilsSdk.TokenUnit($e(e,c),t.decimals,t.symbol),y=r?u.mul(r).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {...t,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:r,balance:u.toSubUnit(),balanceInCurrency:y,balanceDisplayValue:u.toDisplay(),balanceCurrencyDisplayValue:y?.toFixed(2),available:p.toSubUnit(),availableInCurrency:m,availableDisplayValue:p.toDisplay(),availableCurrencyDisplayValue:m?.toFixed(2),utxos:e,balancePerType:{lockedStaked:l.lockedStaked,lockedStakeable:l.lockedStakeable,lockedPlatform:l.lockedPlatform,atomicMemoryLocked:l.atomicMemoryLocked,atomicMemoryUnlocked:l.atomicMemoryUnlocked,unlockedUnstaked:l.unlockedUnstaked,unlockedStaked:l.unlockedStaked,pendingStaked:l.pendingStaked},marketCap:n,vol24:o,change24:s,coingeckoId:i}},"convertPChainBalance");var _r=a(({balance:e,networkToken:t,priceInCurrency:r,marketCap:n,vol24:o,change24:s,coingeckoId:i,avaxAssetId:c})=>{let l={},d={unlocked:e.unlocked,locked:e.locked,atomicMemoryUnlocked:e.atomicMemoryUnlocked,atomicMemoryLocked:e.atomicMemoryLocked};for(let f in d){let D=d[f];if(!D||!D.length){l[f]=0n;continue}D.forEach(b=>{if(b.assetId!==c)return;let R=(l[f]??0n)+BigInt(b.amount);l[f]=R;});}let p=new coreUtilsSdk.TokenUnit(l.unlocked?l.unlocked:0n,t.decimals,t.symbol),m=r?p.mul(r).toDisplay({fixedDp:2,asNumber:!0}):void 0,u=new coreUtilsSdk.TokenUnit($e(e,c),t.decimals,t.symbol),y=r!==void 0?u.mul(r):void 0;return {...t,coingeckoId:i,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:r,balance:u.toSubUnit(),balanceInCurrency:y?.toDisplay({fixedDp:2,asNumber:!0}),balanceDisplayValue:u.toDisplay(),balanceCurrencyDisplayValue:y?.toDisplay({fixedDp:2}),available:p.toSubUnit(),availableInCurrency:m,availableDisplayValue:p.toDisplay(),availableCurrencyDisplayValue:m?.toFixed(2),utxos:e,balancePerType:{unlocked:l.unlocked,locked:l.locked,atomicMemoryUnlocked:l.atomicMemoryUnlocked,atomicMemoryLocked:l.atomicMemoryLocked},marketCap:n,vol24:o,change24:s}},"convertXChainBalance");var Or=a(async({addresses:e,currency:t,network:r,glacierService:n,tokenService:o})=>{let s=await S(r);if(!n.isHealthy())return Promise.reject("Glacier is unhealthy. Try again later.");let c=t.toLowerCase(),l=e[0]??"",d=r.networkToken,p=r.pricingProviders?.coingecko.nativeTokenId,m=r.vmName===vmModuleTypes.NetworkVMType.PVM?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN,u=r.isDevnet?null:r.isTestnet?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET;if(!u)return Promise.reject("Glacier does not supported local devnets");let y=await n.getChainBalance({blockchainId:m,network:u,addresses:e.join(",")}).then(b=>b.balances),f=await o.getWatchlistDataForToken({tokenDetails:{symbol:r.networkToken.symbol,isNative:!0,caip2Id:r.caipId??""},currency:c}),D;return Vr(y)?(D=Mr({balance:y,networkToken:d,priceInCurrency:f.priceInCurrency??void 0,marketCap:f.marketCap??void 0,vol24:f.vol24??void 0,change24:f.change24??void 0,coingeckoId:p??"",avaxAssetId:s.getContext().avaxAssetID}),{[l]:{[d.symbol]:D}}):Er(y)?(D=_r({balance:y,networkToken:d,priceInCurrency:f.priceInCurrency??void 0,marketCap:f.marketCap??void 0,vol24:f.vol24??void 0,change24:f.change24??void 0,coingeckoId:p??"",avaxAssetId:s.getContext().avaxAssetID}),{[l]:{[d.symbol]:D}}):Promise.reject("Incorrect type balance was returned from glacier")},"getBalances");async function Xr(e){let{vmName:t}=e,r=await S(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: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)),c=1+s,l=1+i;return {baseFee:n,low:{maxFeePerGas:n},medium:{maxFeePerGas:n*BigInt(Math.round(100*c))/100n},high:{maxFeePerGas:n*BigInt(Math.round(100*l))/100n},isFixedFee:!1}}a(Xr,"getNetworkFee");function Gr({tx:e,address:t,networkToken:r,chainId:n,explorerUrl:o,isTestnet:s}){let i=new Set(e.consumedUtxos.flatMap(u=>u.addresses)||[]),c=new Set(e.emittedUtxos.flatMap(u=>u.addresses)||[]),l=Ya({tx:e,isTestnet:s,networkToken:r,froms:i}),d=Qa({tx:e,isTestnet:s,networkToken:r}),p=t.toLowerCase().startsWith("p-")?t.slice(2):t,m=i.has(p);return {hash:e.txHash,isContractCall:!1,isIncoming:!m,isOutgoing:m,from:[...i.values()].join(","),to:[...c.values()].join(","),isSender:m,timestamp:e.blockTimestamp*1e3,tokens:[{decimal:r.decimals.toString(),name:r.name,symbol:r.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:l.toString()}],gasUsed:d.toString(),explorerLink:ce(o??"",e.txHash,"tx"),txType:e.txType,chainId:n.toString()}}a(Gr,"convertPChainTransaction");function Ya({tx:e,isTestnet:t,networkToken:r,froms:n}){let o=["ImportTx","ExportTx"].includes(e.txType),s=e.txType==="BaseTx",i=e.emittedUtxos.filter(u=>u.asset.assetId===ke(!!t)&&!u.addresses.some(y=>n.has(y))).reduce((u,y)=>u.add(y.asset.amount),new H__default.default(0)),c=e.value.find(u=>u.assetId===ke(!!t))?.amount,l=i.gt(new H__default.default(0))?i:c?new H__default.default(c):new H__default.default(0)??new H__default.default(0),d=t?coreWalletsSdk.Avalanche.FujiContext.pBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID,p=e.emittedUtxos.filter(u=>u.asset.assetId===ke(!!t)&&(e.txType==="ImportTx"&&u.consumedOnChainId===d||e.txType==="ExportTx"&&u.consumedOnChainId!==d)).reduce((u,y)=>u.add(y.amount),new H__default.default(0)),m=s?l:o?p:e.amountStaked.length===0?Hr(e.value,!!t):Hr(e.amountStaked,!!t);return Q({amount:m?.toNumber(),decimals:r.decimals})}a(Ya,"getAmount");function Qa({tx:e,isTestnet:t,networkToken:r}){let n=e.amountBurned?.filter(o=>o.assetId===ke(!!t)).reduce((o,s)=>o.add(s.amount),new H__default.default(0));return Q({amount:n?.toNumber(),decimals:r.decimals})}a(Qa,"getBurnedAmount");function Hr(e,t){return e.filter(r=>r.assetId===ke(t)).reduce((r,n)=>r.add(n.amount),new H__default.default(0))}a(Hr,"aggregateValue");function ke(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}a(ke,"getAvaxAssetId");function qr({tx:e,address:t,networkToken:r,chainId:n,explorerUrl:o,isTestnet:s}){let i=new Set(e.consumedUtxos.flatMap(f=>f.addresses)||[]),c=new Set(e.emittedUtxos.flatMap(f=>f.addresses)||[]),l=t.toLowerCase().startsWith("x-")?t.slice(2):t,d=["ImportTx","ExportTx"].includes(e.txType),{amount:p,isSender:m}=en({tx:e,isTestnet:s,networkToken:r,chainAddress:l,isImportExport:d}),u=tn({isTestnet:s,tx:e,networkToken:r}),y=d?p.toString():m?p.minus(u).toString():p.toString();return {hash:e.txHash,isContractCall:!1,isIncoming:!m,isOutgoing:m,from:[...i.values()].join(","),to:[...c.values()].join(","),isSender:m,timestamp:e.timestamp*1e3,tokens:[{decimal:r.decimals.toString(),name:r.name,symbol:r.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:y}],gasUsed:u.toString(),explorerLink:ce(o??"",e.txHash,"tx"),txType:e.txType,chainId:n.toString()}}a(qr,"convertXChainTransaction");function en({tx:e,isTestnet:t,networkToken:r,chainAddress:n,isImportExport:o}){if(o){let d=t?coreWalletsSdk.Avalanche.FujiContext.xBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.xBlockchainID,p=e.emittedUtxos.filter(m=>m.asset.assetId===be(!!t)&&(e.txType==="ImportTx"&&m.consumedOnChainId===d||e.txType==="ExportTx"&&m.consumedOnChainId!==d)).reduce((m,u)=>m.add(u.asset.amount),new H__default.default(0));return {amount:Q({amount:p.toNumber(),decimals:r.decimals}),isSender:!0}}let s=e.consumedUtxos.filter(d=>d.asset.assetId===be(!!t)&&d.addresses.includes(n)).reduce((d,p)=>d.add(p.asset.amount),new H__default.default(0)),i=e.emittedUtxos.filter(d=>d.asset.assetId===be(!!t)&&d.addresses.includes(n)).reduce((d,p)=>d.add(p.asset.amount),new H__default.default(0)),c=s.gte(i),l=c?s.minus(i):i.minus(s);return {amount:Q({amount:l.toNumber(),decimals:r.decimals}),isSender:c}}a(en,"getAmount");function tn({isTestnet:e,tx:t,networkToken:r}){let n=t.amountUnlocked.filter(i=>i.assetId===be(!!e)).reduce((i,c)=>i.add(c.amount),new H__default.default(0)),o=t.amountCreated.filter(i=>i.assetId===be(!!e)).reduce((i,c)=>i.add(c.amount),new H__default.default(0)),s=n.minus(o);return Q({amount:s.toNumber(),decimals:r.decimals})}a(tn,"getBurnedAmount");function be(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}a(be,"getAvaxAssetId");var jr=a(async({address:e,nextPageToken:t,offset:r,network:n,glacierService:o})=>{let{isTestnet:s,networkToken:i,explorerUrl:c,chainId:l}=n;if(!o.isHealthy())return {transactions:[],nextPageToken:""};let p=n.isTestnet?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,m=await o.listLatestPrimaryNetworkTransactions({addresses:e,blockchainId:an(e),network:p,pageSize:r,pageToken:t,sortOrder:glacierSdk.SortOrder.DESC}),u=[];return hr(m)&&(u=m.transactions.map(y=>Gr({tx:y,isTestnet:s,address:e,networkToken:i,explorerUrl:c,chainId:l}))),gr(m)&&(u=m.transactions.map(y=>qr({tx:y,isTestnet:s,address:e,networkToken:i,explorerUrl:c,chainId:l}))),{transactions:u,nextPageToken:m.nextPageToken}},"getTransactionHistory"),an=a(e=>e.split(",")[0]?.toLowerCase().startsWith("p-")?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN,"getBlockchainIdByAddress");function Jr({blockchainId:e,isTestnet:t}){let r=t?"fuji"+e:e,n=nn__default.default.createHash("sha256").update(r).digest("base64");return "avax:"+on(n).substring(0,32)}a(Jr,"hashBlockchainId");var on=a(e=>e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,""),"convertBase64ToBase64Url");var pe,Ce,me,M,ue,we,Ht=class Ht{constructor({approvalController:t,environment:r,appInfo:n,runtime:o}){I(this,pe,void 0);I(this,Ce,void 0);I(this,me,void 0);I(this,M,void 0);I(this,ue,void 0);I(this,we,void 0);let{glacierApiUrl:s,proxyApiUrl:i}=Zt(r);C(this,ue,n),C(this,we,o),C(this,pe,new qe({glacierApiUrl:s,headers:J(n)})),C(this,Ce,i),C(this,me,s),C(this,M,t);}getProvider(t){return S(t)}getAddress({accountIndex:t,xpubXP:r,walletType:n,network:o}){return Rr({accountIndex:t,xpubXP:r,walletType:n,network:o})}getBalances({addresses:t,network:r,storage:n,currency:o}){let s=new Te({storage:n,proxyApiUrl:x(this,Ce),fetch:x(this,we)?.fetch});return Or({addresses:t,currency:o,network:r,glacierService:x(this,pe),tokenService:s})}getManifest(){let t=vmModuleTypes.parseManifest(Yt);return t.success?t.data:void 0}getNetworkFee(t){return Xr(t)}getTransactionHistory({network:t,address:r,nextPageToken:n,offset:o}){return jr({network:t,address:r,nextPageToken:n,offset:o,glacierService:x(this,pe)})}getTokens(t){return Promise.resolve([])}buildDerivationPath(t){return ee(t)}async deriveAddress(t){return Cr({...t,approvalController:x(this,M)})}async deriveAddresses(t){return wr({...t,approvalController:x(this,M)})}async onRpcRequest(t,r){switch(t.method){case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE:return Tr({request:t,network:r,approvalController:x(this,M)});case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION:return br({request:t,network:r,approvalController:x(this,M),glacierApiUrl:x(this,me),appInfo:x(this,ue)});case vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION:return yr({request:t,network:r,approvalController:x(this,M),glacierApiUrl:x(this,me),appInfo:x(this,ue)});default:return {error:rpcErrors.rpcErrors.methodNotSupported(`Method ${t.method} not supported`)}}}static getHashedBlockchainId({blockchainId:t,isTestnet:r}){return Jr({blockchainId:t,isTestnet:r})}};pe=new WeakMap,Ce=new WeakMap,me=new WeakMap,M=new WeakMap,ue=new WeakMap,we=new WeakMap,a(Ht,"AvalancheModule");var Kr=Ht;var Ed=a(e=>"balancePerType"in e&&"unlockedUnstaked"in e.balancePerType,"isTokenWithBalancePVM"),Bd=a(e=>"balancePerType"in e&&"unlocked"in e.balancePerType,"isTokenWithBalanceAVM");
20
+ var Gt=Object.defineProperty;var Zr=(e,t,r)=>t in e?Gt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var a=(e,t)=>Gt(e,"name",{value:t,configurable:!0});var q=(e,t,r)=>(Zr(e,typeof t!="symbol"?t+"":t,r),r),Je=(e,t,r)=>{if(!t.has(e))throw TypeError("Cannot "+r)};var x=(e,t,r)=>(Je(e,t,"read from private field"),r?r.call(e):t.get(e)),D=(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);},C=(e,t,r,n)=>(Je(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r);var ze=(e,t,r)=>(Je(e,t,"access private method"),r);function qt(e){let t,r=0;for(t=0;t<e.length;t++)r+=e.charCodeAt(t)*(t+1);return r}a(qt,"charsum");function Ye(e){let t,r=0;for(t=0;t<e.length;t++){let n=qt(e[t]??"");r=r+65027/n;}return (""+r).slice(0,16)}a(Ye,"arrayHash");var $=a(async({operation:e,isSuccess:t,maxRetries:r=10,backoffPolicy:n=U.exponential()})=>{let o=0,s=0,i;for(;s<r;){s>0&&await ea(o);try{let l=await e(s);if(t(l))return l}catch(l){i=l;}o=n(s),s++;}let c=i?`Max retry exceeded. ${i}`:"Max retry exceeded.";throw new Error(c)},"retry"),Qe=class Qe{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 n=>{if(n<t)return (n+1)*r;let o=n-t+1,s=t*r,i=2*r*(Math.pow(2,o)-1);return s+i}}};a(Qe,"RetryBackoffPolicy");var U=Qe;function ea(e){return new Promise(t=>setTimeout(t,e))}a(ea,"delay");var Ze=a(e=>$({operation:t=>e(t>0),maxRetries:2,backoffPolicy:U.constant(1),isSuccess:t=>t?.status?.error_code!==429}),"coingeckoRetry");async function W(e,t,r=fetch){let n=await r(...e);if(!n.ok)throw new Error(`Request failed with status ${n.status}`);let o=await n.json();return t.parse(o)}a(W,"fetchAndVerify");var et=class et{constructor(t,r){this.proxyApiUrl=t;this.fetchFn=r;}simplePrice(t){let r=new URLSearchParams(t);return W([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${r}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema,this.fetchFn)}simplePriceByContractAddresses(t){let{id:r,...n}=t,o=new URLSearchParams(n);return W([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${o}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema,this.fetchFn)}};a(et,"CoingeckoProxyClient");var Ae=et;var ta=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())})),tt=class tt{constructor(t){this.proxyApiUrl=t;}watchlistToken(t){let r=new URLSearchParams(t);return W([`${this.proxyApiUrl}/watchlist/tokens?${r}`,{method:"GET",headers:{"Content-Type":"application/json"}}],ta)}};a(tt,"WatchlistProxyClient");var Be=tt;var F,j,K,ne,rt=class rt{constructor({storage:t,proxyApiUrl:r,fetch:n}){D(this,F,void 0);D(this,j,void 0);D(this,K,void 0);D(this,ne,void 0);q(this,"transformSimplePriceResponse",a((t,r=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let n={};return Object.keys(t).forEach(o=>{let s=t[o];n[o]={},r.forEach(i=>{n[o]={[i]:{price:s?.[i],change24:s?.[`${i}_24h_change`],vol24:s?.[`${i}_24h_vol`],marketCap:s?.[`${i}_market_cap`]}};});}),n},"transformSimplePriceResponse"));C(this,F,t),C(this,j,r),C(this,K,n??globalThis.fetch),C(this,ne,coreCoingeckoSdk.getBasicCoingeckoHttp(void 0,x(this,K)));}async getWatchlistDataForToken({tokenDetails:t,currency:r=coreCoingeckoSdk.VsCurrencyType.USD}){let n=(await new Be(x(this,j)).watchlistToken({tokens:t.symbol,currency:r})).filter(s=>t.isNative?s.internalId===`NATIVE-${t.symbol.toLowerCase()}`:s.platforms[t.caip2Id]===t.address),[o]=n;return o?{priceInCurrency:o.current_price??0,change24:o.price_change_percentage_24h??0,marketCap:o.market_cap??0,vol24:o.total_volume??0}:{priceInCurrency:0,change24:0,marketCap:0,vol24:0}}async getSimplePrice({coinIds:t=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD]}){let n,s=`getSimplePrice-${t?`${Ye(t)}-${r.toString()}`:`${r.toString()}`}`;if(n=x(this,F)?.get?.(s),n)return n;try{n=await Ze(i=>this.simplePrice({coinIds:t,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:i}));}catch{n=void 0;}return x(this,F)?.set?.(s,n),n}async getPricesByAddresses(t,r,n=coreCoingeckoSdk.VsCurrencyType.USD){let o,i=`getPricesWithMarketDataByAddresses-${`${Ye(t)}-${r}-${n}`}`;if(o=x(this,F)?.get?.(i),o)return o;try{o=await Ze(c=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:t,currency:n,useCoingeckoProxy:c}));}catch(c){console.error(c),o=void 0;}return x(this,F)?.set?.(i,o),o}async fetchPricesByAddresses({assetPlatformId:t,tokenAddresses:r,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:o=!1}){if(o){let s=await new Ae(x(this,j),x(this,K)).simplePriceByContractAddresses({id:t,contract_addresses:r,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0});return this.transformSimplePriceResponse(s,[n])}return coreCoingeckoSdk.simpleTokenPrice(x(this,ne),{assetPlatformId:t,tokenAddresses:r,currencies:[n],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:t=[],currencies:r=[coreCoingeckoSdk.VsCurrencyType.USD],marketCap:n=!1,vol24:o=!1,change24:s=!1,lastUpdated:i=!1,useCoingeckoProxy:c=!1,shouldThrow:l=!0}){if(c){let d=await new Ae(x(this,j),x(this,K)).simplePrice({ids:t,vs_currencies:r,include_market_cap:n,include_24hr_vol:o,include_24hr_change:s,include_last_updated_at:i});return this.transformSimplePriceResponse(d,r)}return coreCoingeckoSdk.simplePrice(x(this,ne),{coinIds:t,currencies:r,marketCap:n,vol24:o,change24:s,lastUpdated:i,shouldThrow:l})}};F=new WeakMap,j=new WeakMap,K=new WeakMap,ne=new WeakMap,a(rt,"TokenService");var Te=rt;zod.object({date:zod.string(),usd:zod.record(zod.number())});var h=a((e,t,r,n)=>({label:e,type:vmModuleTypes.DetailItemType.CURRENCY,value:t,maxDecimals:r,symbol:n}),"currencyItem"),T=a((e,t,r="horizontal")=>({label:e,alignment:r,type:vmModuleTypes.DetailItemType.TEXT,value:t}),"textItem");var V=a((e,t)=>({label:e,type:vmModuleTypes.DetailItemType.ADDRESS,value:t}),"addressItem"),Wt=a((e,t)=>({label:e,type:vmModuleTypes.DetailItemType.ADDRESS_LIST,value:t}),"addressListItem"),v=a((e,t)=>({label:e,type:vmModuleTypes.DetailItemType.NODE_ID,value:t}),"nodeIDItem"),at=a((e,t)=>({label:e,type:vmModuleTypes.DetailItemType.DATA,value:t}),"dataItem"),E=a((e,t)=>({label:e,type:vmModuleTypes.DetailItemType.DATE,value:t}),"dateItem"),oe=a((e,t)=>({label:e,type:vmModuleTypes.DetailItemType.NETWORK,value:t}),"networkItem");var J=a(({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}},"getCoreHeaders");var jt=process.env.GLACIER_API_KEY;var X=a(()=>jt,"getGlacierApiKey");var pa={rltoken:X()},z,Me,Le,Jt,_e,zt,nt=class nt extends glacierSdk.FetchHttpRequest{constructor(r){super(r);D(this,Le);D(this,_e);D(this,z,0);D(this,Me,U.exponential());}request(r){let n={...pa,...r.query||{}},o={...r,query:Object.keys(n).length>0?n:void 0},s=a(()=>super.request(o),"getRequest");return x(this,z)>0?ze(this,_e,zt).call(this,s):ze(this,Le,Jt).call(this,s)}};z=new WeakMap,Me=new WeakMap,Le=new WeakSet,Jt=a(function(r){let n=r();return new glacierSdk.CancelablePromise((o,s,i)=>{i(()=>n.cancel()),n.then(c=>{C(this,z,0),o(c);}).catch(c=>{if(c instanceof glacierSdk.ApiError){let l=c.status===429,d=c.status>=500&&c.status<600;C(this,z,x(this,z)+Number(l||d));}s(c);});})},"#request"),_e=new WeakSet,zt=a(function(r){let n=x(this,Me).call(this,x(this,z));return new glacierSdk.CancelablePromise((o,s,i)=>{let c=setTimeout(()=>{let l=r();i(()=>{l.cancel(),clearTimeout(c);}),l.then(o).catch(s);},n);})},"#postponeRequest"),a(nt,"GlacierFetchHttpRequest");var ve=nt;var Y=a((e,t)=>({message:`${e}${t instanceof Error?`: ${t.message}`:""}`,data:{cause:t}}),"rpcErrorOpts");var Yt={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 ua={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},ha={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},Zt=a(e=>{switch(e){case vmModuleTypes.Environment.PRODUCTION:return ua;case vmModuleTypes.Environment.DEV:return ha}},"getEnv");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()}),er=a(e=>ga.safeParse(e),"parseRequestParams");var S=a(async e=>{let{isTestnet:t,isDevnet:r,rpcUrl:n,customRpcHeaders:o}=e,s=o?{headers:o}:void 0;return r?coreWalletsSdk.Avalanche.JsonRpcProvider.fromBaseURL(n):t?coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultFujiProvider(s):coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultMainnetProvider(s)},"getProvider");var Ue=a(({utxoHexes:e=[],vm:t})=>{try{let r=avalanchejs.utils.getManagerForVM(t).getDefaultCodec();return e.map(n=>{let o=avalanchejs.utils.hexToBuffer(n);return avalanchejs.Utxo.fromBytes(o,r)[0]})}catch(r){return console.error("Error getting provided utxos",r),[]}},"getProvidedUtxos");var Fe=a(e=>{switch(e.type){case vmModuleTypes.TxType.AddPermissionlessDelegator:return {...e,type:vmModuleTypes.TxType.AddPermissionlessDelegator};case vmModuleTypes.TxType.AddPermissionlessValidator:return {...e,type:vmModuleTypes.TxType.AddPermissionlessValidator};case vmModuleTypes.TxType.AddSubnetValidator:return {...e,type:vmModuleTypes.TxType.AddSubnetValidator};case vmModuleTypes.TxType.CreateChain:return {...e,type:vmModuleTypes.TxType.CreateChain};case vmModuleTypes.TxType.CreateSubnet:return {...e,type:vmModuleTypes.TxType.CreateSubnet};case vmModuleTypes.TxType.RemoveSubnetValidator:return {...e,type:vmModuleTypes.TxType.RemoveSubnetValidator};case vmModuleTypes.TxType.AddAutoRenewedValidator:return {...e,type:vmModuleTypes.TxType.AddAutoRenewedValidator};case vmModuleTypes.TxType.SetAutoRenewedValidatorConfig:return {...e,type:vmModuleTypes.TxType.SetAutoRenewedValidatorConfig};case vmModuleTypes.TxType.ConvertSubnetToL1:return {...e,type:vmModuleTypes.TxType.ConvertSubnetToL1,chain:e.chain};case vmModuleTypes.TxType.SetL1ValidatorWeight:return {...e,type:vmModuleTypes.TxType.SetL1ValidatorWeight,chain:e.chain};case vmModuleTypes.TxType.DisableL1Validator:return {...e,type:vmModuleTypes.TxType.DisableL1Validator,chain:e.chain};case vmModuleTypes.TxType.IncreaseL1ValidatorBalance:return {...e,type:vmModuleTypes.TxType.IncreaseL1ValidatorBalance,chain:e.chain};case vmModuleTypes.TxType.RegisterL1Validator:return {...e,type:vmModuleTypes.TxType.RegisterL1Validator,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}},"parseTxDetails");var rr=a(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 L1?";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?";case vmModuleTypes.TxType.AddAutoRenewedValidator:return "Do you want to add this auto-renewed validator?";case vmModuleTypes.TxType.SetAutoRenewedValidatorConfig:return "Do you want to update this auto-renewed validator config?";default:return "Sign Message"}},"parseTxDisplayTitle");var st=a(async({indices:e,chainAlias:t,isChange:r,network:n,xpubXP:o,externalXPAddresses:s})=>{if(o){let i=await S(n);return e.map(c=>coreWalletsSdk.Avalanche.getAddressFromXpub(o,c,i,t,r))}return s&&Array.isArray(s)?e.map(c=>s.find(l=>l.index===c)).filter(c=>c!==void 0).map(c=>c.address):[]},"getAddressesByIndices");var it=a(e=>e.type===vmModuleTypes.TxType.AddPermissionlessDelegator,"isAddPermissionlessDelegatorTx"),ct=a(e=>e.type===vmModuleTypes.TxType.AddPermissionlessValidator,"isAddPermissionlessValidatorTx"),lt=a(e=>e.type===vmModuleTypes.TxType.Export,"isExportTx"),dt=a(e=>e.type===vmModuleTypes.TxType.Import,"isImportTx"),xa=a(e=>e.type===vmModuleTypes.TxType.Base,"isBaseTx"),pt=a(e=>e.type===vmModuleTypes.TxType.AddSubnetValidator,"isAddSubnetValidatorTx"),Aa=a(e=>e.type===vmModuleTypes.TxType.CreateChain,"isCreateChainTx"),Ta=a(e=>e.type===vmModuleTypes.TxType.CreateSubnet,"isCreateSubnetTx"),mt=a(e=>e.type===vmModuleTypes.TxType.RemoveSubnetValidator,"isRemoveSubnetValidatorTx"),ar=a(e=>e.type===vmModuleTypes.TxType.ConvertSubnetToL1,"isConvertSubnetToL1Tx"),nr=a(e=>e.type===vmModuleTypes.TxType.DisableL1Validator,"isDisableL1ValidatorTx"),or=a(e=>e.type===vmModuleTypes.TxType.IncreaseL1ValidatorBalance,"isIncreaseL1ValidatorBalanceTx"),sr=a(e=>e.type===vmModuleTypes.TxType.RegisterL1Validator,"isRegisterL1ValidatorTx"),ir=a(e=>e.type===vmModuleTypes.TxType.SetL1ValidatorWeight,"isSetL1ValidatorWeightTx"),ut=a(e=>e.type===vmModuleTypes.TxType.AddAutoRenewedValidator,"isAddAutoRenewedValidatorTx"),ht=a(e=>e.type===vmModuleTypes.TxType.SetAutoRenewedValidatorConfig,"isSetAutoRenewedValidatorConfigTx"),zo=a(e=>it(e)||ct(e)||pt(e)||mt(e)||ut(e)||ht(e),"isStakingDetails"),Yo=a(e=>lt(e)||dt(e),"isExportImportTxDetails"),cr=a(e=>xa(e),"isChainDetails"),lr=a(e=>Aa(e),"isBlockchainDetails"),dr=a(e=>Ta(e),"isSubnetDetails");var B=(n=>(n.AVM="X-Chain",n.PVM="P-Chain",n.EVM="C-Chain",n))(B||{});var gt=a(({tx:e,symbol:t,network:r,signerAccount:n})=>{let o=[],{txFee:s,nodeID:i,start:c,end:l,stake:d}=e,p={items:[V("Account",n),oe("Network",{name:r.chainName,logoUri:r.logoUri})]};o.push(p);let m=[v("Node",i),h("Stake Amount",d,9,t),E("Start",c),E("End",l)];return o.push({title:"Staking Details",items:m}),s&&o.push({title:"Network Fee",items:[h("Fee Amount",s,9,t)]}),o},"addPermissionlessDelegatorDetailSection");var ft=a(({tx:e,symbol:t,network:r,signerAccount:n})=>{let o=[],{txFee:s,nodeID:i,delegationFee:c,start:l,end:d,stake:p}=e,m={items:[V("Account",n),oe("Network",{name:r.chainName,logoUri:r.logoUri})]};o.push(m);let u=[v("Node",i)];return u.push(h("Stake Amount",p,9,t),T("Delegation Fee",`${c/1e4} %`),E("Start",l),E("End",d)),o.push({title:"Staking Details",items:u}),s&&o.push({title:"Network Fee",items:[h("Fee Amount",s,9,t)]}),o},"addPermissionlessValidatorDetailSection");var yt=a((e,t)=>{let r=[],{txFee:n,nodeID:o,start:s,end:i,subnetID:c}=e,l=[v("Subnet ID",c),v("Node ID",o),E("Start Date",s),E("End Date",i)];return r.push({title:"Staking Details",items:l}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"addSubnetValidatorDetailSection");var xt=a((e,t)=>{let r=[],{txFee:n,chainID:o,managerAddress:s,subnetID:i,validators:c}=e,l=[v("Subnet ID",i),v("Chain ID",o),V("Manager Address",s)];return r.push({title:"L1 Details",items:l}),c.forEach(({balance:d,stake:p,nodeId:m,remainingBalanceOwners:u,deactivationOwners:y},f)=>{let I=[v("Node ID",m),h("Balance",d,9,t),h("Stake",p,9,t)];y.length>0&&I.push(T(`${y.length>1?"Owners":"Owner"} Able to Deactivate`,y.join(`
21
+ `),"vertical")),u.length>0&&I.push(T(`${u.length>1?"Owners":"Owner"} of the Remaining Balance`,u.join(`
22
+ `),"vertical")),r.push({title:f===0?"Validators":void 0,items:I});}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"convertSubnetToL1DetailSection");var At=a((e,t)=>{let r=[],{txFee:n,amount:o,chain:s,destination:i,type:c}=e;return r.push({items:[T("Source Chain",`Avalanche ${B[s]}`),T("Target Chain",`Avalanche ${B[i]}`)]}),r.push({items:[T("Transaction Type",c?(c[0]||"").toUpperCase()+c.slice(1):""),h("Amount",o,9,t)]}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"exportDetailSection");var Tt=a((e,t)=>{let r=[],{txFee:n,amount:o,chain:s,source:i,type:c}=e;return r.push({items:[T("Source Chain",`Avalanche ${B[i]}`),T("Destination Chain",`Avalanche ${B[s]}`)]}),r.push({items:[T("Transaction Type",c?(c[0]||"").toUpperCase()+c.slice(1):""),h("Amount",o,9,t)]}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"importDetailSection");var vt=a((e,t)=>{let r=[],{txFee:n,nodeID:o,subnetID:s}=e,i=[v("Node ID",o),v("Subnet ID",s)];return r.push({title:"Staking Details",items:i}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"removeSubnetValidatorDetailSection");var It=a((e,t)=>{let r=[],{txFee:n,chain:o,outputs:s,memo:i}=e;return r.push({title:"Chain Details",items:[T("Active chain",`Avalanche ${B[o]}`)]}),s.forEach((c,l)=>{let d=c.owners.flatMap(p=>[V("To",p),h("Amount",c.amount,9,t)]);c.owners.length>1&&d.push(T("Threshold",c.threshold.toString())),r.push({title:l===0?"Balance Change":void 0,items:d});}),o!==avalanchejs.PVM&&i&&r.push({title:"Memo",items:[i]}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"chainDetailSection");var Dt=a((e,t)=>{let r=[],{txFee:n,threshold:o,controlKeys:s}=e;return r.push({title:"L1 Details",items:[Wt(s.length>1?"Owners":"Owner",s),T("Signature Threshold",`${o}/${s.length}`,"horizontal")]}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"subnetDetailSection");var Ia=a(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}},"formatGenesisData"),St=a((e,t)=>{let r=[],{txFee:n,chainID:o,chainName:s,vmID:i,genesisData:c}=e,l=[T("Blockchain name",s,"vertical"),T("Blockchain ID",o,"vertical"),T("Virtual Machine ID",i,"vertical"),at("Genesis Data",Ia(c))];return r.push({title:"Blockchain Details",items:l}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"blockChainDetailSection");var kt=a((e,t)=>{let r=[],{txFee:n,validationId:o}=e,s=[v("Validation ID",o)];return r.push({title:"L1 Details",items:s}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"disableL1ValidatorDetailSection");var Pt=a((e,t)=>{let r=[],{txFee:n,balance:o,validationId:s}=e,i=[v("Validation ID",s),h("Increase by amount",o,9,t)];return r.push({title:"L1 Details",items:i}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"increaseL1ValidatorBalanceDetailSection");var bt=a((e,t)=>{let r=[],{txFee:n,balance:o}=e,s=[h("Initial balance",o,9,t)];return r.push({title:"L1 Details",items:s}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"registerL1ValidatorDetailSection");var Ct=a((e,t)=>{let r=[],{txFee:n}=e;return n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"setL1ValidatorWeightDetailSection");var Da=60*60*24,pr=1e4,wt=a(({tx:e,symbol:t,network:r,signerAccount:n})=>{let o=[],{txFee:s,nodeID:i,stake:c,delegationFee:l,autoCompoundRewardShares:d,period:p}=e,m={items:[V("Account",n),oe("Network",{name:r.chainName,logoUri:r.logoUri})]};o.push(m);let u=[v("Node",i),h("Stake Amount",c,9,t),T("Delegation fee",`${l/pr} %`),T("Cycle duration",`${Number(p)/Da} days`),T("Compound rewards percentage",`${d/pr} %`)];return o.push({title:"Staking Details",items:u}),s&&o.push({title:"Network Fee",items:[h("Fee Amount",s,9,t)]}),o},"addAutoRenewedValidatorDetailSection");var Sa=60*60*24,ka=1e4,Nt=a((e,t)=>{let r=[],{txFee:n,txId:o,autoCompoundRewardShares:s,period:i}=e,c=[v("Validator Tx ID",o),T("Cycle duration",`${Number(i)/Sa} days`),T("Compound rewards percentage",`${s/ka} %`)];return r.push({title:"Staking Details",items:c}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"setAutoRenewedValidatorConfigDetailSection");var Oe=a((e,t,r)=>{if(cr(e))return It(e,t);if(lt(e))return At(e,t);if(dt(e))return Tt(e,t);if(dr(e))return Dt(e,t);if(it(e)){if(!r)throw new Error("context (network, signerAccount) is required for AddPermissionlessDelegator");return gt({tx:e,symbol:t,network:r.network,signerAccount:r.signerAccount})}else if(ct(e)){if(!r)throw new Error("context (network, signerAccount) is required for AddPermissionlessValidator");return ft({tx:e,symbol:t,network:r.network,signerAccount:r.signerAccount})}else {if(lr(e))return St(e,t);if(pt(e))return yt(e,t);if(mt(e))return vt(e,t);if(ar(e))return xt(e,t);if(nr(e))return kt(e,t);if(or(e))return Pt(e,t);if(sr(e))return bt(e,t);if(ir(e))return Ct(e,t);if(ut(e)){if(!r)throw new Error("context (network, signerAccount) is required for AddAutoRenewedValidator");return wt({tx:e,symbol:t,network:r.network,signerAccount:r.signerAccount})}else if(ht(e))return Nt(e,t)}},"getTransactionDetailSections");var hr=a(e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.P_CHAIN,"isPChainTransactions"),gr=a(e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.X_CHAIN,"isXChainTransactions");function ce(e,t,r="tx"){return `${e}/${r}/${t}`}a(ce,"getExplorerAddressByNetwork");function Q({amount:e,decimals:t}){return e===void 0?new G__default.default(0):new G__default.default(e/10**t)}a(Q,"getTokenValue");var Pa=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()}),ba=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()}))})}),Ca=a(e=>({xpAddress:e.currentAddress,evmAddress:e.currentEvmAddress,xpubXP:e.xpubXP,externalXPAddresses:[]}),"getAccountFromLegacyContext"),wa=a(e=>e.account,"getAccountFromNewContext"),Na=a(e=>e!=null&&typeof e=="object"&&"account"in e&&e.account!=null&&typeof e.account=="object","hasAccountField"),Xe=a(e=>{if(!e)return {success:!1,error:"Missing Avalanche transaction context"};if(Na(e)){let{success:o,data:s,error:i}=ba.safeParse(e);return o?{success:!0,data:wa(s)}:{success:!1,error:i.errors[0]?.message||"Invalid or missing Avalanche transaction context"}}let{success:t,data:r,error:n}=Pa.safeParse(e);return t?{success:!0,data:Ca(r)}:{success:!1,error:n.errors[0]?.message||"Invalid or missing Avalanche transaction context"}},"getAccountFromContext");var yr=a(async({request:e,network:t,approvalController:r,glacierApiUrl:n,appInfo:o})=>{let s=er(e.params);if(!s.success)return {error:rpcErrors.rpcErrors.invalidParams(Y("Transaction params are invalid",s.error))};try{let{transactionHex:i,chainAlias:c,externalIndices:l,internalIndices:d,utxos:p}=s.data,m=coreWalletsSdk.Avalanche.getVmByChainAlias(c),u=avalanchejs.utils.hexToBuffer(i),y=t.isTestnet??!1,f=await S(t),I=Xe(e.context);if(!I.success)return {error:rpcErrors.rpcErrors.invalidParams(I.error)};let{xpAddress:b,xpubXP:L,externalXPAddresses:R}=I.data,he=Ue({utxoHexes:p,vm:m}),te=he.length?he:await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:i,chainAlias:c,network:y?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,url:n,token:X(),headers:J(o)}),re;if(c==="C")re=await coreWalletsSdk.Avalanche.createAvalancheEvmUnsignedTx({txBytes:u,vm:m,utxos:te,fromAddress:b});else {let xe=avalanchejs.utils.unpackWithManager(m,u);if(L!==void 0&&typeof L!="string")return {error:rpcErrors.rpcErrors.invalidParams("xpubXP must be a string")};let Ke=await st({indices:l??[],chainAlias:c,isChange:!1,network:t,xpubXP:L,externalXPAddresses:R}),zr=await st({indices:d??[],chainAlias:c,isChange:!0,network:t,xpubXP:L,externalXPAddresses:R}),Yr=[...new Set([b,...Ke,...zr])].map(Qr=>avalanchejs.utils.parse(Qr)[2]);re=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:xe,utxos:te,provider:f,fromAddressBytes:Yr});}let ge=await coreWalletsSdk.Avalanche.parseAvalancheTx(re,f,b),Ne=Fe(ge),fe=rr(ge);if(ge.type==="unknown"||Ne===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction data. Unsupported tx type")};let Re={type:vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION,unsignedTxJson:JSON.stringify(re.toJSON()),data:ge,vm:m,externalIndices:l,internalIndices:d},Ve=Oe(Ne,t.networkToken.symbol,{network:t,signerAccount:b});if(Ve===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction display data. Unsupported tx type")};let Ee={title:fe,network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},details:Ve,networkFeeSelector:!1},ye=await r.requestApproval({request:e,displayData:Ee,signingData:Re});if("error"in ye)return {error:ye.error};let _;try{_=await Ba(f,ye,m);}catch(xe){return {error:rpcErrors.rpcErrors.internal(Y("Unable to broadcast transaction",xe))}}return Ma({explorerUrl:t.explorerUrl??"",provider:f,txHash:_,vm:m,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:e}),{result:_}}catch(i){return console.error(i),{error:rpcErrors.rpcErrors.internal(Y("Unable to create transaction",i))}}},"avalancheSendTransaction"),Ba=a(async(e,t,r)=>{if("txHash"in t)return t.txHash;let{txID:n}=await e.issueTxHex(t.signedData,r);return n},"getTxHash"),Ma=a(async({explorerUrl:e,provider:t,txHash:r,vm:n,onTransactionPending:o,onTransactionConfirmed:s,onTransactionReverted:i,request:c})=>{let d=ce(e,r);try{o({txHash:r,request:c,explorerLink:d}),n===avalanchejs.PVM?(await $({operation:()=>t.getApiP().getTxStatus({txID:r}),isSuccess:m=>["Committed","Dropped"].includes(m.status),maxRetries:7})).status==="Committed"?s({txHash:r,explorerLink:d,request:c}):i({txHash:r,request:c}):n===avalanchejs.AVM?(await $({operation:()=>t.getApiX().getTxStatus({txID:r}),isSuccess:m=>["Accepted","Rejected"].includes(m.status),maxRetries:7})).status==="Accepted"?s({txHash:r,explorerLink:d,request:c}):i({txHash:r,request:c}):(await $({operation:()=>t.getApiC().getAtomicTxStatus(r),isSuccess:m=>["Accepted","Dropped"].includes(m.status),maxRetries:7})).status==="Accepted"?s({txHash:r,explorerLink:d,request:c}):i({txHash:r,request:c});}catch(p){console.error(p),p instanceof Error&&p.message.startsWith("Max retry exceeded.")||i({txHash:r,request:c});}},"waitForTransactionReceipt");var La=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")])]),xr=a(e=>La.safeParse(e),"parseRequestParams");var Tr=a(async({request:e,network:t,approvalController:r})=>{let n=xr(e.params);if(!n.success)return console.error("invalid params",n.error),{error:rpcErrors.rpcErrors.invalidParams(Y("Params are invalid",n.error))};let[o,s]=n.data,i=Buffer.from(o,"utf-8").toString("hex"),c={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE,data:i,accountIndex:s},l={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:[o]}]},d=await r.requestApproval({request:e,displayData:l,signingData:c});return "error"in d?{error:d.error}:"signedData"in d?{result:d.signedData}:{error:rpcErrors.rpcErrors.internal("No signed data returned")}},"avalancheSignMessage");var Ua=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()}),vr=a(e=>Ua.safeParse(e),"parseRequestParams");var kr=a(async({vm:e,txBytes:t,utxos:r,currentAddress:n,currentEvmAddress:o,provider:s})=>{let i,c,l=avalanchejs.utils.unpackWithManager(e,t);if(avalanchejs.evmSerial.isExportTx(l)){let d=l.ins[0]?.address.toHex();if(!o)throw rpcErrors.rpcErrors.invalidRequest("Missing EVM address");if(d?.toLowerCase()!==o.toLowerCase())throw new Error("This account has nothing to sign");return coreWalletsSdk.Avalanche.createAvalancheEvmUnsignedTx({txBytes:t,vm:e,utxos:r,fromAddress:n})}try{let p=avalanchejs.utils.getManagerForVM(e).unpack(t,avalanchejs.avaxSerial.SignedTx);avalanchejs.evmSerial.isImportTx(l)?c=await coreWalletsSdk.Avalanche.createAvalancheEvmUnsignedTx({txBytes:t,vm:e,utxos:r,fromAddress:n}):c=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:l,provider:s,credentials:p.getCredentials(),utxos:r}),i=l.getSigIndices().map((m,u)=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(m,{unsignedTx:c,credentialIndex:u})));}catch{i=l.getSigIndices().map(p=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(p)));}return coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:l,provider:s,credentials:i,utxos:r})},"getUnsignedOrPartiallySignedTx");var br=a(async({request:e,network:t,approvalController:r,glacierApiUrl:n,appInfo:o})=>{let s=vr(e.params);if(!s.success)return console.error("invalid params",s.error),{error:rpcErrors.rpcErrors.invalidParams("Params are invalid")};let{transactionHex:i,chainAlias:c,from:l,utxos:d}=s.data,p=coreWalletsSdk.Avalanche.getVmByChainAlias(c),m=t.isTestnet??!1,u=await S(t),y=Xe(e.context);if(!y.success)return {error:rpcErrors.rpcErrors.invalidParams(y.error)};let{xpAddress:f,evmAddress:I}=y.data,b=Ue({utxoHexes:d,vm:p}),L=b.length?b:await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:i,chainAlias:c,network:m?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,url:n,token:X(),headers:J(o)}),R=await kr({txBytes:avalanchejs.utils.hexToBuffer(i),vm:p,utxos:L,currentAddress:f,currentEvmAddress:I,provider:u}),he=avalanchejs.utils.addressesFromBytes([avalanchejs.utils.parse(l??f)[2]])[0];if(!he)return {error:rpcErrors.rpcErrors.invalidRequest("Missing signer address")};let te=R.getSigIndicesForAddress(he);if(!te)return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let re=R.getSigIndices();if(!te.some(([xe,Ke])=>re[xe]?.includes(Ke)))return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let Ne=l??f,fe=await coreWalletsSdk.Avalanche.parseAvalancheTx(R,u,l??f),Re=Fe(fe);if(fe.type==="unknown"||Re===void 0)return {error:rpcErrors.rpcErrors.invalidParams("Unable to parse transaction data. Unsupported tx type")};let Ve={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION,data:fe,vm:p,unsignedTxJson:JSON.stringify(R.toJSON()),ownSignatureIndices:te},Ee=Oe(Re,t.networkToken.symbol,{network:t,signerAccount:Ne});if(Ee===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction display data. Unsupported tx type")};let ye={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:Ee},_=await r.requestApproval({request:e,displayData:ye,signingData:Ve});return "error"in _?{error:_.error}:"signedData"in _?{result:_.signedData}:{error:rpcErrors.rpcErrors.invalidRequest("No signed data returned")}},"avalancheSignTransaction");var ee=a(({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}`)}},"buildDerivationPath");var Mt=a(e=>"derivationPathType"in e&&"accountIndex"in e&&typeof e.accountIndex=="number"&&typeof e.derivationPathType=="string","hasDerivationDetails");var Cr=a(async e=>{let{approvalController:t,network:r,secretId:n}=e,o=Mt(e)?ee(e).AVM:void 0,s=Mt(e)?ee(e).CoreEth:void 0,i=await S(r),c=await t.requestPublicKey({curve:"secp256k1",secretId:n,derivationPath:o}).catch(()=>null),l=await t.requestPublicKey({curve:"secp256k1",secretId:n,derivationPath:s}).catch(()=>null),d=l?{[vmModuleTypes.NetworkVMType.CoreEth]:i.getAddress(Buffer.from(l,"hex"),"C")}:{},p=c?{[vmModuleTypes.NetworkVMType.AVM]:i.getAddress(Buffer.from(c,"hex"),"X"),[vmModuleTypes.NetworkVMType.PVM]:i.getAddress(Buffer.from(c,"hex"),"P")}:{};return {...d,...p}},"deriveAddress");var wr=a(async e=>{let{approvalController:t,network:r,secretId:n,accountIndices:o,derivationPathType:s,addressIndex:i}=e;if(o.length===0)return [];await cryptoSdk.init();let c=await Promise.all(o.map(async d=>{let p=ee({accountIndex:d,derivationPathType:s,addressIndex:i}),[m,u]=await Promise.all([t.requestPublicKey({curve:"secp256k1",secretId:n,derivationPath:p.AVM}),t.requestPublicKey({curve:"secp256k1",secretId:n,derivationPath:p.CoreEth})]);return {xp:Uint8Array.from(Buffer.from(m,"hex")),evm:Uint8Array.from(Buffer.from(u,"hex"))}}));return (await cryptoSdk.deriveAddressesForAvalanche(c.map(d=>d.xp),c.map(d=>d.evm),!!r.isTestnet)).map(d=>({[vmModuleTypes.NetworkVMType.AVM]:d.x,[vmModuleTypes.NetworkVMType.PVM]:d.p,[vmModuleTypes.NetworkVMType.CoreEth]:d.coreEth}))},"deriveAddresses");var Rr=a(async({accountIndex:e,xpubXP:t,walletType:r,network:n})=>{if(!n)throw rpcErrors.rpcErrors.invalidParams("network is required to get address");if(t===void 0)throw rpcErrors.rpcErrors.invalidParams("xpubXP is required to get address");let o=await S(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")}},"getAddress");var Ft=class Ft extends Error{constructor(){super(...arguments);q(this,"message","Glacier is unhealthy. Try again later.");}};a(Ft,"GlacierUnhealthyError");var Ge=Ft,Ot=class Ot{constructor({glacierApiUrl:t,headers:r}){q(this,"glacierSdk");q(this,"isGlacierHealthy",!0);q(this,"isHealthy",a(()=>this.isGlacierHealthy,"isHealthy"));this.glacierSdk=new glacierSdk.Glacier({BASE:t,HEADERS:r},ve);}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 Ge&&this.setGlacierToUnhealthy(),r}}async getChainBalance(t){try{return this.glacierSdk.primaryNetworkBalances.getBalancesByAddresses(t)}catch(r){throw r instanceof Ge&&this.setGlacierToUnhealthy(),r}}};a(Ot,"AvalancheGlacierService");var qe=Ot;var Vr=a(e=>Object.keys(e).includes("unlockedUnstaked"),"isPchainBalance"),Er=a(e=>Object.keys(e).includes("locked"),"isXchainBalance");function $e(e,t){let r=Object.values(e).reduce(function(n,o){let s=o.reduce(function(i,c){if(c.assetId!==t)return i;let l=Number(c.amount);return i+l},0);return n+s},0);return BigInt(r)}a($e,"calculateAvaxTotalBalance");var Mr=a(({balance:e,networkToken:t,priceInCurrency:r,marketCap:n,vol24:o,change24:s,coingeckoId:i,avaxAssetId:c})=>{let l={},d={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 d){let I=d[f];if(!I||!I.length){l[f]=0n;continue}I.forEach(b=>{if(b.assetId!==c)return;let R=(l[f]??0n)+BigInt(b.amount);l[f]=R;});}let p=new coreUtilsSdk.TokenUnit(l.unlockedUnstaked?l.unlockedUnstaked:0n,t.decimals,t.symbol),m=r?p.mul(r).toDisplay({fixedDp:2,asNumber:!0}):void 0,u=new coreUtilsSdk.TokenUnit($e(e,c),t.decimals,t.symbol),y=r?u.mul(r).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {...t,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:r,balance:u.toSubUnit(),balanceInCurrency:y,balanceDisplayValue:u.toDisplay(),balanceCurrencyDisplayValue:y?.toFixed(2),available:p.toSubUnit(),availableInCurrency:m,availableDisplayValue:p.toDisplay(),availableCurrencyDisplayValue:m?.toFixed(2),utxos:e,balancePerType:{lockedStaked:l.lockedStaked,lockedStakeable:l.lockedStakeable,lockedPlatform:l.lockedPlatform,atomicMemoryLocked:l.atomicMemoryLocked,atomicMemoryUnlocked:l.atomicMemoryUnlocked,unlockedUnstaked:l.unlockedUnstaked,unlockedStaked:l.unlockedStaked,pendingStaked:l.pendingStaked},marketCap:n,vol24:o,change24:s,coingeckoId:i}},"convertPChainBalance");var _r=a(({balance:e,networkToken:t,priceInCurrency:r,marketCap:n,vol24:o,change24:s,coingeckoId:i,avaxAssetId:c})=>{let l={},d={unlocked:e.unlocked,locked:e.locked,atomicMemoryUnlocked:e.atomicMemoryUnlocked,atomicMemoryLocked:e.atomicMemoryLocked};for(let f in d){let I=d[f];if(!I||!I.length){l[f]=0n;continue}I.forEach(b=>{if(b.assetId!==c)return;let R=(l[f]??0n)+BigInt(b.amount);l[f]=R;});}let p=new coreUtilsSdk.TokenUnit(l.unlocked?l.unlocked:0n,t.decimals,t.symbol),m=r?p.mul(r).toDisplay({fixedDp:2,asNumber:!0}):void 0,u=new coreUtilsSdk.TokenUnit($e(e,c),t.decimals,t.symbol),y=r!==void 0?u.mul(r):void 0;return {...t,coingeckoId:i,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:r,balance:u.toSubUnit(),balanceInCurrency:y?.toDisplay({fixedDp:2,asNumber:!0}),balanceDisplayValue:u.toDisplay(),balanceCurrencyDisplayValue:y?.toDisplay({fixedDp:2}),available:p.toSubUnit(),availableInCurrency:m,availableDisplayValue:p.toDisplay(),availableCurrencyDisplayValue:m?.toFixed(2),utxos:e,balancePerType:{unlocked:l.unlocked,locked:l.locked,atomicMemoryUnlocked:l.atomicMemoryUnlocked,atomicMemoryLocked:l.atomicMemoryLocked},marketCap:n,vol24:o,change24:s}},"convertXChainBalance");var Or=a(async({addresses:e,currency:t,network:r,glacierService:n,tokenService:o})=>{let s=await S(r);if(!n.isHealthy())return Promise.reject("Glacier is unhealthy. Try again later.");let c=t.toLowerCase(),l=e[0]??"",d=r.networkToken,p=r.pricingProviders?.coingecko.nativeTokenId,m=r.vmName===vmModuleTypes.NetworkVMType.PVM?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN,u=r.isDevnet?null:r.isTestnet?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET;if(!u)return Promise.reject("Glacier does not supported local devnets");let y=await n.getChainBalance({blockchainId:m,network:u,addresses:e.join(",")}).then(b=>b.balances),f=await o.getWatchlistDataForToken({tokenDetails:{symbol:r.networkToken.symbol,isNative:!0,caip2Id:r.caipId??""},currency:c}),I;return Vr(y)?(I=Mr({balance:y,networkToken:d,priceInCurrency:f.priceInCurrency??void 0,marketCap:f.marketCap??void 0,vol24:f.vol24??void 0,change24:f.change24??void 0,coingeckoId:p??"",avaxAssetId:s.getContext().avaxAssetID}),{[l]:{[d.symbol]:I}}):Er(y)?(I=_r({balance:y,networkToken:d,priceInCurrency:f.priceInCurrency??void 0,marketCap:f.marketCap??void 0,vol24:f.vol24??void 0,change24:f.change24??void 0,coingeckoId:p??"",avaxAssetId:s.getContext().avaxAssetID}),{[l]:{[d.symbol]:I}}):Promise.reject("Incorrect type balance was returned from glacier")},"getBalances");async function Xr(e){let{vmName:t}=e,r=await S(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: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)),c=1+s,l=1+i;return {baseFee:n,low:{maxFeePerGas:n},medium:{maxFeePerGas:n*BigInt(Math.round(100*c))/100n},high:{maxFeePerGas:n*BigInt(Math.round(100*l))/100n},isFixedFee:!1}}a(Xr,"getNetworkFee");function Gr({tx:e,address:t,networkToken:r,chainId:n,explorerUrl:o,isTestnet:s}){let i=new Set(e.consumedUtxos.flatMap(u=>u.addresses)||[]),c=new Set(e.emittedUtxos.flatMap(u=>u.addresses)||[]),l=Ya({tx:e,isTestnet:s,networkToken:r,froms:i}),d=Qa({tx:e,isTestnet:s,networkToken:r}),p=t.toLowerCase().startsWith("p-")?t.slice(2):t,m=i.has(p);return {hash:e.txHash,isContractCall:!1,isIncoming:!m,isOutgoing:m,from:[...i.values()].join(","),to:[...c.values()].join(","),isSender:m,timestamp:e.blockTimestamp*1e3,tokens:[{decimal:r.decimals.toString(),name:r.name,symbol:r.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:l.toString()}],gasUsed:d.toString(),explorerLink:ce(o??"",e.txHash,"tx"),txType:e.txType,chainId:n.toString()}}a(Gr,"convertPChainTransaction");function Ya({tx:e,isTestnet:t,networkToken:r,froms:n}){let o=["ImportTx","ExportTx"].includes(e.txType),s=e.txType==="BaseTx",i=e.emittedUtxos.filter(u=>u.asset.assetId===ke(!!t)&&!u.addresses.some(y=>n.has(y))).reduce((u,y)=>u.add(y.asset.amount),new G__default.default(0)),c=e.value.find(u=>u.assetId===ke(!!t))?.amount,l=i.gt(new G__default.default(0))?i:c?new G__default.default(c):new G__default.default(0)??new G__default.default(0),d=t?coreWalletsSdk.Avalanche.FujiContext.pBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID,p=e.emittedUtxos.filter(u=>u.asset.assetId===ke(!!t)&&(e.txType==="ImportTx"&&u.consumedOnChainId===d||e.txType==="ExportTx"&&u.consumedOnChainId!==d)).reduce((u,y)=>u.add(y.amount),new G__default.default(0)),m=s?l:o?p:e.amountStaked.length===0?Hr(e.value,!!t):Hr(e.amountStaked,!!t);return Q({amount:m?.toNumber(),decimals:r.decimals})}a(Ya,"getAmount");function Qa({tx:e,isTestnet:t,networkToken:r}){let n=e.amountBurned?.filter(o=>o.assetId===ke(!!t)).reduce((o,s)=>o.add(s.amount),new G__default.default(0));return Q({amount:n?.toNumber(),decimals:r.decimals})}a(Qa,"getBurnedAmount");function Hr(e,t){return e.filter(r=>r.assetId===ke(t)).reduce((r,n)=>r.add(n.amount),new G__default.default(0))}a(Hr,"aggregateValue");function ke(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}a(ke,"getAvaxAssetId");function qr({tx:e,address:t,networkToken:r,chainId:n,explorerUrl:o,isTestnet:s}){let i=new Set(e.consumedUtxos.flatMap(f=>f.addresses)||[]),c=new Set(e.emittedUtxos.flatMap(f=>f.addresses)||[]),l=t.toLowerCase().startsWith("x-")?t.slice(2):t,d=["ImportTx","ExportTx"].includes(e.txType),{amount:p,isSender:m}=en({tx:e,isTestnet:s,networkToken:r,chainAddress:l,isImportExport:d}),u=tn({isTestnet:s,tx:e,networkToken:r}),y=d?p.toString():m?p.minus(u).toString():p.toString();return {hash:e.txHash,isContractCall:!1,isIncoming:!m,isOutgoing:m,from:[...i.values()].join(","),to:[...c.values()].join(","),isSender:m,timestamp:e.timestamp*1e3,tokens:[{decimal:r.decimals.toString(),name:r.name,symbol:r.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:y}],gasUsed:u.toString(),explorerLink:ce(o??"",e.txHash,"tx"),txType:e.txType,chainId:n.toString()}}a(qr,"convertXChainTransaction");function en({tx:e,isTestnet:t,networkToken:r,chainAddress:n,isImportExport:o}){if(o){let d=t?coreWalletsSdk.Avalanche.FujiContext.xBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.xBlockchainID,p=e.emittedUtxos.filter(m=>m.asset.assetId===be(!!t)&&(e.txType==="ImportTx"&&m.consumedOnChainId===d||e.txType==="ExportTx"&&m.consumedOnChainId!==d)).reduce((m,u)=>m.add(u.asset.amount),new G__default.default(0));return {amount:Q({amount:p.toNumber(),decimals:r.decimals}),isSender:!0}}let s=e.consumedUtxos.filter(d=>d.asset.assetId===be(!!t)&&d.addresses.includes(n)).reduce((d,p)=>d.add(p.asset.amount),new G__default.default(0)),i=e.emittedUtxos.filter(d=>d.asset.assetId===be(!!t)&&d.addresses.includes(n)).reduce((d,p)=>d.add(p.asset.amount),new G__default.default(0)),c=s.gte(i),l=c?s.minus(i):i.minus(s);return {amount:Q({amount:l.toNumber(),decimals:r.decimals}),isSender:c}}a(en,"getAmount");function tn({isTestnet:e,tx:t,networkToken:r}){let n=t.amountUnlocked.filter(i=>i.assetId===be(!!e)).reduce((i,c)=>i.add(c.amount),new G__default.default(0)),o=t.amountCreated.filter(i=>i.assetId===be(!!e)).reduce((i,c)=>i.add(c.amount),new G__default.default(0)),s=n.minus(o);return Q({amount:s.toNumber(),decimals:r.decimals})}a(tn,"getBurnedAmount");function be(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}a(be,"getAvaxAssetId");var jr=a(async({address:e,nextPageToken:t,offset:r,network:n,glacierService:o})=>{let{isTestnet:s,networkToken:i,explorerUrl:c,chainId:l}=n;if(!o.isHealthy())return {transactions:[],nextPageToken:""};let p=n.isTestnet?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,m=await o.listLatestPrimaryNetworkTransactions({addresses:e,blockchainId:an(e),network:p,pageSize:r,pageToken:t,sortOrder:glacierSdk.SortOrder.DESC}),u=[];return hr(m)&&(u=m.transactions.map(y=>Gr({tx:y,isTestnet:s,address:e,networkToken:i,explorerUrl:c,chainId:l}))),gr(m)&&(u=m.transactions.map(y=>qr({tx:y,isTestnet:s,address:e,networkToken:i,explorerUrl:c,chainId:l}))),{transactions:u,nextPageToken:m.nextPageToken}},"getTransactionHistory"),an=a(e=>e.split(",")[0]?.toLowerCase().startsWith("p-")?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN,"getBlockchainIdByAddress");function Kr({blockchainId:e,isTestnet:t}){let r=t?"fuji"+e:e,n=nn__default.default.createHash("sha256").update(r).digest("base64");return "avax:"+on(n).substring(0,32)}a(Kr,"hashBlockchainId");var on=a(e=>e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,""),"convertBase64ToBase64Url");var pe,Ce,me,M,ue,we,Ht=class Ht{constructor({approvalController:t,environment:r,appInfo:n,runtime:o}){D(this,pe,void 0);D(this,Ce,void 0);D(this,me,void 0);D(this,M,void 0);D(this,ue,void 0);D(this,we,void 0);let{glacierApiUrl:s,proxyApiUrl:i}=Zt(r);C(this,ue,n),C(this,we,o),C(this,pe,new qe({glacierApiUrl:s,headers:J(n)})),C(this,Ce,i),C(this,me,s),C(this,M,t);}getProvider(t){return S(t)}getAddress({accountIndex:t,xpubXP:r,walletType:n,network:o}){return Rr({accountIndex:t,xpubXP:r,walletType:n,network:o})}getBalances({addresses:t,network:r,storage:n,currency:o}){let s=new Te({storage:n,proxyApiUrl:x(this,Ce),fetch:x(this,we)?.fetch});return Or({addresses:t,currency:o,network:r,glacierService:x(this,pe),tokenService:s})}getManifest(){let t=vmModuleTypes.parseManifest(Yt);return t.success?t.data:void 0}getNetworkFee(t){return Xr(t)}getTransactionHistory({network:t,address:r,nextPageToken:n,offset:o}){return jr({network:t,address:r,nextPageToken:n,offset:o,glacierService:x(this,pe)})}getTokens(t){return Promise.resolve([])}buildDerivationPath(t){return ee(t)}async deriveAddress(t){return Cr({...t,approvalController:x(this,M)})}async deriveAddresses(t){return wr({...t,approvalController:x(this,M)})}async onRpcRequest(t,r){switch(t.method){case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE:return Tr({request:t,network:r,approvalController:x(this,M)});case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION:return br({request:t,network:r,approvalController:x(this,M),glacierApiUrl:x(this,me),appInfo:x(this,ue)});case vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION:return yr({request:t,network:r,approvalController:x(this,M),glacierApiUrl:x(this,me),appInfo:x(this,ue)});default:return {error:rpcErrors.rpcErrors.methodNotSupported(`Method ${t.method} not supported`)}}}static getHashedBlockchainId({blockchainId:t,isTestnet:r}){return Kr({blockchainId:t,isTestnet:r})}};pe=new WeakMap,Ce=new WeakMap,me=new WeakMap,M=new WeakMap,ue=new WeakMap,we=new WeakMap,a(Ht,"AvalancheModule");var Jr=Ht;var Ud=a(e=>"balancePerType"in e&&"unlockedUnstaked"in e.balancePerType,"isTokenWithBalancePVM"),Fd=a(e=>"balancePerType"in e&&"unlocked"in e.balancePerType,"isTokenWithBalanceAVM");
23
23
 
24
- exports.AvalancheModule = Kr;
24
+ exports.AvalancheModule = Jr;
25
25
  exports.isAddAutoRenewedValidatorTx = ut;
26
26
  exports.isAddPermissionlessDelegatorTx = it;
27
27
  exports.isAddPermissionlessValidatorTx = ct;
@@ -33,7 +33,7 @@ exports.isConvertSubnetToL1Tx = ar;
33
33
  exports.isCreateChainTx = Aa;
34
34
  exports.isCreateSubnetTx = Ta;
35
35
  exports.isDisableL1ValidatorTx = nr;
36
- exports.isExportImportTxDetails = Wo;
36
+ exports.isExportImportTxDetails = Yo;
37
37
  exports.isExportTx = lt;
38
38
  exports.isImportTx = dt;
39
39
  exports.isIncreaseL1ValidatorBalanceTx = or;
@@ -41,9 +41,9 @@ exports.isRegisterL1ValidatorTx = sr;
41
41
  exports.isRemoveSubnetValidatorTx = mt;
42
42
  exports.isSetAutoRenewedValidatorConfigTx = ht;
43
43
  exports.isSetL1ValidatorWeightTx = ir;
44
- exports.isStakingDetails = $o;
44
+ exports.isStakingDetails = zo;
45
45
  exports.isSubnetDetails = dr;
46
- exports.isTokenWithBalanceAVM = Bd;
47
- exports.isTokenWithBalancePVM = Ed;
46
+ exports.isTokenWithBalanceAVM = Fd;
47
+ exports.isTokenWithBalancePVM = Ud;
48
48
  //# sourceMappingURL=out.js.map
49
49
  //# sourceMappingURL=index.cjs.map
package/dist/index.js CHANGED
@@ -5,15 +5,15 @@ import { CancelablePromise, ApiError, PrimaryNetworkChainName, Network, Blockcha
5
5
  import { rpcErrors } from '@metamask/rpc-errors';
6
6
  import { Avalanche } from '@avalabs/core-wallets-sdk';
7
7
  import { utils, Utxo, PVM, AVM, evmSerial, avaxSerial, Credential } from '@avalabs/avalanchejs';
8
- import H from 'big.js';
8
+ import G from 'big.js';
9
9
  import { init, deriveAddressesForAvalanche } from '@avalabs/crypto-sdk';
10
10
  import { TokenUnit } from '@avalabs/core-utils-sdk';
11
11
  import nn from 'crypto';
12
12
 
13
- var Gt=Object.defineProperty;var Zr=(e,t,r)=>t in e?Gt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var a=(e,t)=>Gt(e,"name",{value:t,configurable:!0});var G=(e,t,r)=>(Zr(e,typeof t!="symbol"?t+"":t,r),r),Ke=(e,t,r)=>{if(!t.has(e))throw TypeError("Cannot "+r)};var x=(e,t,r)=>(Ke(e,t,"read from private field"),r?r.call(e):t.get(e)),I=(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);},C=(e,t,r,n)=>(Ke(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r);var ze=(e,t,r)=>(Ke(e,t,"access private method"),r);function qt(e){let t,r=0;for(t=0;t<e.length;t++)r+=e.charCodeAt(t)*(t+1);return r}a(qt,"charsum");function Ye(e){let t,r=0;for(t=0;t<e.length;t++){let n=qt(e[t]??"");r=r+65027/n;}return (""+r).slice(0,16)}a(Ye,"arrayHash");var q=a(async({operation:e,isSuccess:t,maxRetries:r=10,backoffPolicy:n=U.exponential()})=>{let o=0,s=0,i;for(;s<r;){s>0&&await ea(o);try{let l=await e(s);if(t(l))return l}catch(l){i=l;}o=n(s),s++;}let c=i?`Max retry exceeded. ${i}`:"Max retry exceeded.";throw new Error(c)},"retry"),Qe=class Qe{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 n=>{if(n<t)return (n+1)*r;let o=n-t+1,s=t*r,i=2*r*(Math.pow(2,o)-1);return s+i}}};a(Qe,"RetryBackoffPolicy");var U=Qe;function ea(e){return new Promise(t=>setTimeout(t,e))}a(ea,"delay");var Ze=a(e=>q({operation:t=>e(t>0),maxRetries:2,backoffPolicy:U.constant(1),isSuccess:t=>t?.status?.error_code!==429}),"coingeckoRetry");async function $(e,t,r=fetch){let n=await r(...e);if(!n.ok)throw new Error(`Request failed with status ${n.status}`);let o=await n.json();return t.parse(o)}a($,"fetchAndVerify");var et=class et{constructor(t,r){this.proxyApiUrl=t;this.fetchFn=r;}simplePrice(t){let r=new URLSearchParams(t);return $([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${r}`,{method:"POST",headers:{"Content-Type":"application/json"}}],RawSimplePriceResponseSchema,this.fetchFn)}simplePriceByContractAddresses(t){let{id:r,...n}=t,o=new URLSearchParams(n);return $([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${o}`,{method:"POST",headers:{"Content-Type":"application/json"}}],RawSimplePriceResponseSchema,this.fetchFn)}};a(et,"CoingeckoProxyClient");var Ae=et;var ta=z$1.array(z$1.object({internalId:z$1.string(),id:z$1.string(),symbol:z$1.string(),name:z$1.string(),image:z$1.string().optional().nullable(),current_price:z$1.number().optional().nullable(),price_change_percentage_24h:z$1.number().optional().nullable(),market_cap:z$1.number().optional().nullable(),total_volume:z$1.number().optional().nullable(),platforms:z$1.record(z$1.string(),z$1.string())})),tt=class tt{constructor(t){this.proxyApiUrl=t;}watchlistToken(t){let r=new URLSearchParams(t);return $([`${this.proxyApiUrl}/watchlist/tokens?${r}`,{method:"GET",headers:{"Content-Type":"application/json"}}],ta)}};a(tt,"WatchlistProxyClient");var Be=tt;var F,W,j,ne,rt=class rt{constructor({storage:t,proxyApiUrl:r,fetch:n}){I(this,F,void 0);I(this,W,void 0);I(this,j,void 0);I(this,ne,void 0);G(this,"transformSimplePriceResponse",a((t,r=[VsCurrencyType.USD])=>{let n={};return Object.keys(t).forEach(o=>{let s=t[o];n[o]={},r.forEach(i=>{n[o]={[i]:{price:s?.[i],change24:s?.[`${i}_24h_change`],vol24:s?.[`${i}_24h_vol`],marketCap:s?.[`${i}_market_cap`]}};});}),n},"transformSimplePriceResponse"));C(this,F,t),C(this,W,r),C(this,j,n??globalThis.fetch),C(this,ne,getBasicCoingeckoHttp(void 0,x(this,j)));}async getWatchlistDataForToken({tokenDetails:t,currency:r=VsCurrencyType.USD}){let n=(await new Be(x(this,W)).watchlistToken({tokens:t.symbol,currency:r})).filter(s=>t.isNative?s.internalId===`NATIVE-${t.symbol.toLowerCase()}`:s.platforms[t.caip2Id]===t.address),[o]=n;return o?{priceInCurrency:o.current_price??0,change24:o.price_change_percentage_24h??0,marketCap:o.market_cap??0,vol24:o.total_volume??0}:{priceInCurrency:0,change24:0,marketCap:0,vol24:0}}async getSimplePrice({coinIds:t=[],currencies:r=[VsCurrencyType.USD]}){let n,s=`getSimplePrice-${t?`${Ye(t)}-${r.toString()}`:`${r.toString()}`}`;if(n=x(this,F)?.get?.(s),n)return n;try{n=await Ze(i=>this.simplePrice({coinIds:t,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:i}));}catch{n=void 0;}return x(this,F)?.set?.(s,n),n}async getPricesByAddresses(t,r,n=VsCurrencyType.USD){let o,i=`getPricesWithMarketDataByAddresses-${`${Ye(t)}-${r}-${n}`}`;if(o=x(this,F)?.get?.(i),o)return o;try{o=await Ze(c=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:t,currency:n,useCoingeckoProxy:c}));}catch(c){console.error(c),o=void 0;}return x(this,F)?.set?.(i,o),o}async fetchPricesByAddresses({assetPlatformId:t,tokenAddresses:r,currency:n=VsCurrencyType.USD,useCoingeckoProxy:o=!1}){if(o){let s=await new Ae(x(this,W),x(this,j)).simplePriceByContractAddresses({id:t,contract_addresses:r,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0});return this.transformSimplePriceResponse(s,[n])}return simpleTokenPrice(x(this,ne),{assetPlatformId:t,tokenAddresses:r,currencies:[n],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:t=[],currencies:r=[VsCurrencyType.USD],marketCap:n=!1,vol24:o=!1,change24:s=!1,lastUpdated:i=!1,useCoingeckoProxy:c=!1,shouldThrow:l=!0}){if(c){let d=await new Ae(x(this,W),x(this,j)).simplePrice({ids:t,vs_currencies:r,include_market_cap:n,include_24hr_vol:o,include_24hr_change:s,include_last_updated_at:i});return this.transformSimplePriceResponse(d,r)}return simplePrice(x(this,ne),{coinIds:t,currencies:r,marketCap:n,vol24:o,change24:s,lastUpdated:i,shouldThrow:l})}};F=new WeakMap,W=new WeakMap,j=new WeakMap,ne=new WeakMap,a(rt,"TokenService");var Te=rt;object({date:string(),usd:record(number())});var h=a((e,t,r,n)=>({label:e,type:DetailItemType.CURRENCY,value:t,maxDecimals:r,symbol:n}),"currencyItem"),T=a((e,t,r="horizontal")=>({label:e,alignment:r,type:DetailItemType.TEXT,value:t}),"textItem");var V=a((e,t)=>({label:e,type:DetailItemType.ADDRESS,value:t}),"addressItem"),Wt=a((e,t)=>({label:e,type:DetailItemType.ADDRESS_LIST,value:t}),"addressListItem"),v=a((e,t)=>({label:e,type:DetailItemType.NODE_ID,value:t}),"nodeIDItem"),at=a((e,t)=>({label:e,type:DetailItemType.DATA,value:t}),"dataItem"),E=a((e,t)=>({label:e,type:DetailItemType.DATE,value:t}),"dateItem"),oe=a((e,t)=>({label:e,type:DetailItemType.NETWORK,value:t}),"networkItem");var J=a(({name:e,version:t})=>{switch(e){case AppName.CORE_MOBILE_IOS:case AppName.CORE_MOBILE_ANDROID:case AppName.CORE_WEB:case AppName.CORE_EXTENSION:case AppName.EXPLORER:return {"x-application-name":e,"x-application-version":t};case AppName.OTHER:return}},"getCoreHeaders");var jt=process.env.GLACIER_API_KEY;var K=a(()=>jt,"getGlacierApiKey");var pa={rltoken:K()},z,Me,Le,Kt,_e,zt,nt=class nt extends FetchHttpRequest{constructor(r){super(r);I(this,Le);I(this,_e);I(this,z,0);I(this,Me,U.exponential());}request(r){let n={...pa,...r.query||{}},o={...r,query:Object.keys(n).length>0?n:void 0},s=a(()=>super.request(o),"getRequest");return x(this,z)>0?ze(this,_e,zt).call(this,s):ze(this,Le,Kt).call(this,s)}};z=new WeakMap,Me=new WeakMap,Le=new WeakSet,Kt=a(function(r){let n=r();return new CancelablePromise((o,s,i)=>{i(()=>n.cancel()),n.then(c=>{C(this,z,0),o(c);}).catch(c=>{if(c instanceof ApiError){let l=c.status===429,d=c.status>=500&&c.status<600;C(this,z,x(this,z)+Number(l||d));}s(c);});})},"#request"),_e=new WeakSet,zt=a(function(r){let n=x(this,Me).call(this,x(this,z));return new CancelablePromise((o,s,i)=>{let c=setTimeout(()=>{let l=r();i(()=>{l.cancel(),clearTimeout(c);}),l.then(o).catch(s);},n);})},"#postponeRequest"),a(nt,"GlacierFetchHttpRequest");var ve=nt;var Y=a((e,t)=>({message:`${e}${t instanceof Error?`: ${t.message}`:""}`,data:{cause:t}}),"rpcErrorOpts");var Yt={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 ua={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},ha={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},Zt=a(e=>{switch(e){case Environment.PRODUCTION:return ua;case Environment.DEV:return ha}},"getEnv");var ga=z$1.object({transactionHex:z$1.string(),chainAlias:z$1.enum(["X","P","C"]),externalIndices:z$1.number().array().optional(),internalIndices:z$1.number().array().optional(),utxos:z$1.string().array().optional()}),er=a(e=>ga.safeParse(e),"parseRequestParams");var S=a(async e=>{let{isTestnet:t,isDevnet:r,rpcUrl:n,customRpcHeaders:o}=e,s=o?{headers:o}:void 0;return r?Avalanche.JsonRpcProvider.fromBaseURL(n):t?Avalanche.JsonRpcProvider.getDefaultFujiProvider(s):Avalanche.JsonRpcProvider.getDefaultMainnetProvider(s)},"getProvider");var Ue=a(({utxoHexes:e=[],vm:t})=>{try{let r=utils.getManagerForVM(t).getDefaultCodec();return e.map(n=>{let o=utils.hexToBuffer(n);return Utxo.fromBytes(o,r)[0]})}catch(r){return console.error("Error getting provided utxos",r),[]}},"getProvidedUtxos");var Fe=a(e=>{switch(e.type){case TxType.AddPermissionlessDelegator:return {...e,type:TxType.AddPermissionlessDelegator};case TxType.AddPermissionlessValidator:return {...e,type:TxType.AddPermissionlessValidator};case TxType.AddSubnetValidator:return {...e,type:TxType.AddSubnetValidator};case TxType.CreateChain:return {...e,type:TxType.CreateChain};case TxType.CreateSubnet:return {...e,type:TxType.CreateSubnet};case TxType.RemoveSubnetValidator:return {...e,type:TxType.RemoveSubnetValidator};case TxType.AddAutoRenewedValidator:return {...e,type:TxType.AddAutoRenewedValidator};case TxType.SetAutoRenewedValidatorConfig:return {...e,type:TxType.SetAutoRenewedValidatorConfig};case TxType.ConvertSubnetToL1:return {...e,type:TxType.ConvertSubnetToL1,chain:e.chain};case TxType.SetL1ValidatorWeight:return {...e,type:TxType.SetL1ValidatorWeight,chain:e.chain};case TxType.DisableL1Validator:return {...e,type:TxType.DisableL1Validator,chain:e.chain};case TxType.IncreaseL1ValidatorBalance:return {...e,type:TxType.IncreaseL1ValidatorBalance,chain:e.chain};case TxType.RegisterL1Validator:return {...e,type:TxType.RegisterL1Validator,chain:e.chain};case TxType.Export:return {...e,type:TxType.Export,chain:e.chain,destination:e.destination};case TxType.Import:return {...e,type:TxType.Import,chain:e.chain,source:e.source};case TxType.Base:return {...e,type:TxType.Base,chain:e.chain};default:return}},"parseTxDetails");var rr=a(e=>{switch(e.type){case TxType.AddPermissionlessDelegator:return "Do you want to add this delegator?";case TxType.AddPermissionlessValidator:return "Do you want to add this validator?";case TxType.Export:return "Do you approve this export?";case TxType.Import:return "Do you approve this import?";case TxType.Base:return "Do you approve this transaction?";case TxType.AddSubnetValidator:return "Do you want to add this subnet validator?";case TxType.CreateChain:return "Do you want to create this chain?";case TxType.CreateSubnet:return "Do you want to create this L1?";case TxType.RemoveSubnetValidator:return "Do you want to remove this subnet validator?";case TxType.ConvertSubnetToL1:return "Do you want to convert this subnet?";case TxType.DisableL1Validator:return "Do you want to disable this validator?";case TxType.IncreaseL1ValidatorBalance:return "Do you want to increase this validator balance?";case TxType.RegisterL1Validator:return "Do you want to register this validator?";case TxType.SetL1ValidatorWeight:return "Do you want to set this validator weight?";case TxType.AddAutoRenewedValidator:return "Do you want to add this auto-renewed validator?";case TxType.SetAutoRenewedValidatorConfig:return "Do you want to update this auto-renewed validator config?";default:return "Sign Message"}},"parseTxDisplayTitle");var st=a(async({indices:e,chainAlias:t,isChange:r,network:n,xpubXP:o,externalXPAddresses:s})=>{if(o){let i=await S(n);return e.map(c=>Avalanche.getAddressFromXpub(o,c,i,t,r))}return s&&Array.isArray(s)?e.map(c=>s.find(l=>l.index===c)).filter(c=>c!==void 0).map(c=>c.address):[]},"getAddressesByIndices");var it=a(e=>e.type===TxType.AddPermissionlessDelegator,"isAddPermissionlessDelegatorTx"),ct=a(e=>e.type===TxType.AddPermissionlessValidator,"isAddPermissionlessValidatorTx"),lt=a(e=>e.type===TxType.Export,"isExportTx"),dt=a(e=>e.type===TxType.Import,"isImportTx"),xa=a(e=>e.type===TxType.Base,"isBaseTx"),pt=a(e=>e.type===TxType.AddSubnetValidator,"isAddSubnetValidatorTx"),Aa=a(e=>e.type===TxType.CreateChain,"isCreateChainTx"),Ta=a(e=>e.type===TxType.CreateSubnet,"isCreateSubnetTx"),mt=a(e=>e.type===TxType.RemoveSubnetValidator,"isRemoveSubnetValidatorTx"),ar=a(e=>e.type===TxType.ConvertSubnetToL1,"isConvertSubnetToL1Tx"),nr=a(e=>e.type===TxType.DisableL1Validator,"isDisableL1ValidatorTx"),or=a(e=>e.type===TxType.IncreaseL1ValidatorBalance,"isIncreaseL1ValidatorBalanceTx"),sr=a(e=>e.type===TxType.RegisterL1Validator,"isRegisterL1ValidatorTx"),ir=a(e=>e.type===TxType.SetL1ValidatorWeight,"isSetL1ValidatorWeightTx"),ut=a(e=>e.type===TxType.AddAutoRenewedValidator,"isAddAutoRenewedValidatorTx"),ht=a(e=>e.type===TxType.SetAutoRenewedValidatorConfig,"isSetAutoRenewedValidatorConfigTx"),$o=a(e=>it(e)||ct(e)||pt(e)||mt(e)||ut(e)||ht(e),"isStakingDetails"),Wo=a(e=>lt(e)||dt(e),"isExportImportTxDetails"),cr=a(e=>xa(e),"isChainDetails"),lr=a(e=>Aa(e),"isBlockchainDetails"),dr=a(e=>Ta(e),"isSubnetDetails");var B=(n=>(n.AVM="X-Chain",n.PVM="P-Chain",n.EVM="C-Chain",n))(B||{});var gt=a(({tx:e,symbol:t,network:r,signerAccount:n})=>{let o=[],{txFee:s,nodeID:i,start:c,end:l,stake:d}=e,p={items:[V("Account",n),oe("Network",{name:r.chainName,logoUri:r.logoUri})]};o.push(p);let m=[v("Node",i),h("Stake Amount",d,9,t),E("Start",c),E("End",l)];return o.push({title:"Staking Details",items:m}),s&&o.push({title:"Network Fee",items:[h("Fee Amount",s,9,t)]}),o},"addPermissionlessDelegatorDetailSection");var ft=a(({tx:e,symbol:t,network:r,signerAccount:n})=>{let o=[],{txFee:s,nodeID:i,delegationFee:c,start:l,end:d,stake:p}=e,m={items:[V("Account",n),oe("Network",{name:r.chainName,logoUri:r.logoUri})]};o.push(m);let u=[v("Node",i)];return u.push(h("Stake Amount",p,9,t),T("Delegation Fee",`${c/1e4} %`),E("Start",l),E("End",d)),o.push({title:"Staking Details",items:u}),s&&o.push({title:"Network Fee",items:[h("Fee Amount",s,9,t)]}),o},"addPermissionlessValidatorDetailSection");var yt=a((e,t)=>{let r=[],{txFee:n,nodeID:o,start:s,end:i,subnetID:c}=e,l=[v("Subnet ID",c),v("Node ID",o),E("Start Date",s),E("End Date",i)];return r.push({title:"Staking Details",items:l}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"addSubnetValidatorDetailSection");var xt=a((e,t)=>{let r=[],{txFee:n,chainID:o,managerAddress:s,subnetID:i,validators:c}=e,l=[v("Subnet ID",i),v("Chain ID",o),V("Manager Address",s)];return r.push({title:"L1 Details",items:l}),c.forEach(({balance:d,stake:p,nodeId:m,remainingBalanceOwners:u,deactivationOwners:y},f)=>{let D=[v("Node ID",m),h("Balance",d,9,t),h("Stake",p,9,t)];y.length>0&&D.push(T(`${y.length>1?"Owners":"Owner"} Able to Deactivate`,y.join(`
14
- `),"vertical")),u.length>0&&D.push(T(`${u.length>1?"Owners":"Owner"} of the Remaining Balance`,u.join(`
15
- `),"vertical")),r.push({title:f===0?"Validators":void 0,items:D});}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"convertSubnetToL1DetailSection");var At=a((e,t)=>{let r=[],{txFee:n,amount:o,chain:s,destination:i,type:c}=e;return r.push({items:[T("Source Chain",`Avalanche ${B[s]}`),T("Target Chain",`Avalanche ${B[i]}`)]}),r.push({items:[T("Transaction Type",c?(c[0]||"").toUpperCase()+c.slice(1):""),h("Amount",o,9,t)]}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"exportDetailSection");var Tt=a((e,t)=>{let r=[],{txFee:n,amount:o,chain:s,source:i,type:c}=e;return r.push({items:[T("Source Chain",`Avalanche ${B[i]}`),T("Destination Chain",`Avalanche ${B[s]}`)]}),r.push({items:[T("Transaction Type",c?(c[0]||"").toUpperCase()+c.slice(1):""),h("Amount",o,9,t)]}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"importDetailSection");var vt=a((e,t)=>{let r=[],{txFee:n,nodeID:o,subnetID:s}=e,i=[v("Node ID",o),v("Subnet ID",s)];return r.push({title:"Staking Details",items:i}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"removeSubnetValidatorDetailSection");var Dt=a((e,t)=>{let r=[],{txFee:n,chain:o,outputs:s,memo:i}=e;return r.push({title:"Chain Details",items:[T("Active chain",`Avalanche ${B[o]}`)]}),s.forEach((c,l)=>{let d=c.owners.flatMap(p=>[V("To",p),h("Amount",c.amount,9,t)]);c.owners.length>1&&d.push(T("Threshold",c.threshold.toString())),r.push({title:l===0?"Balance Change":void 0,items:d});}),o!==PVM&&i&&r.push({title:"Memo",items:[i]}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"chainDetailSection");var It=a((e,t)=>{let r=[],{txFee:n,threshold:o,controlKeys:s}=e;return r.push({title:"L1 Details",items:[Wt(s.length>1?"Owners":"Owner",s),T("Signature Threshold",`${o}/${s.length}`,"horizontal")]}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"subnetDetailSection");var Da=a(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}},"formatGenesisData"),St=a((e,t)=>{let r=[],{txFee:n,chainID:o,chainName:s,vmID:i,genesisData:c}=e,l=[T("Blockchain name",s,"vertical"),T("Blockchain ID",o,"vertical"),T("Virtual Machine ID",i,"vertical"),at("Genesis Data",Da(c))];return r.push({title:"Blockchain Details",items:l}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"blockChainDetailSection");var kt=a((e,t)=>{let r=[],{txFee:n,validationId:o}=e,s=[v("Validation ID",o)];return r.push({title:"L1 Details",items:s}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"disableL1ValidatorDetailSection");var Pt=a((e,t)=>{let r=[],{txFee:n,balance:o,validationId:s}=e,i=[v("Validation ID",s),h("Increase by amount",o,9,t)];return r.push({title:"L1 Details",items:i}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"increaseL1ValidatorBalanceDetailSection");var bt=a((e,t)=>{let r=[],{txFee:n,balance:o}=e,s=[h("Initial balance",o,9,t)];return r.push({title:"L1 Details",items:s}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"registerL1ValidatorDetailSection");var Ct=a((e,t)=>{let r=[],{txFee:n}=e;return n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"setL1ValidatorWeightDetailSection");var Ia=60*60*24,pr=1e4,wt=a(({tx:e,symbol:t,network:r,signerAccount:n})=>{let o=[],{txFee:s,nodeID:i,stake:c,delegationFee:l,autoCompoundRewardShares:d,period:p}=e,m={items:[V("Account",n),oe("Network",{name:r.chainName,logoUri:r.logoUri})]};o.push(m);let u=[v("Node",i),h("Stake Amount",c,9,t),T("Delegation fee",`${l/pr} %`),T("Cycle duration",`${Number(p)/Ia} days`),T("Compound rewards percentage",`${d/pr} %`)];return o.push({title:"Staking Details",items:u}),s&&o.push({title:"Network Fee",items:[h("Fee Amount",s,9,t)]}),o},"addAutoRenewedValidatorDetailSection");var Sa=60*60*24,ka=1e4,Nt=a((e,t)=>{let r=[],{txFee:n,txId:o,autoCompoundRewardShares:s,period:i}=e,c=[v("Validator Tx ID",o),T("Cycle duration",`${Number(i)/Sa} days`),T("Compound rewards percentage",`${s/ka} %`)];return r.push({title:"Staking Details",items:c}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"setAutoRenewedValidatorConfigDetailSection");var Oe=a((e,t,r)=>{if(cr(e))return Dt(e,t);if(lt(e))return At(e,t);if(dt(e))return Tt(e,t);if(dr(e))return It(e,t);if(it(e)){if(!r)throw new Error("context (network, signerAccount) is required for AddPermissionlessDelegator");return gt({tx:e,symbol:t,network:r.network,signerAccount:r.signerAccount})}else if(ct(e)){if(!r)throw new Error("context (network, signerAccount) is required for AddPermissionlessValidator");return ft({tx:e,symbol:t,network:r.network,signerAccount:r.signerAccount})}else {if(lr(e))return St(e,t);if(pt(e))return yt(e,t);if(mt(e))return vt(e,t);if(ar(e))return xt(e,t);if(nr(e))return kt(e,t);if(or(e))return Pt(e,t);if(sr(e))return bt(e,t);if(ir(e))return Ct(e,t);if(ut(e)){if(!r)throw new Error("context (network, signerAccount) is required for AddAutoRenewedValidator");return wt({tx:e,symbol:t,network:r.network,signerAccount:r.signerAccount})}else if(ht(e))return Nt(e,t)}},"getTransactionDetailSections");var hr=a(e=>e.chainInfo.chainName===PrimaryNetworkChainName.P_CHAIN,"isPChainTransactions"),gr=a(e=>e.chainInfo.chainName===PrimaryNetworkChainName.X_CHAIN,"isXChainTransactions");function ce(e,t,r="tx"){return `${e}/${r}/${t}`}a(ce,"getExplorerAddressByNetwork");function Q({amount:e,decimals:t}){return e===void 0?new H(0):new H(e/10**t)}a(Q,"getTokenValue");var Pa=z$1.object({currentAddress:z$1.string({required_error:"No active account found"}),currentEvmAddress:z$1.string().optional(),xpubXP:z$1.string({invalid_type_error:"xpubXP must be a string"}).optional()}),ba=z$1.object({account:z$1.object({xpAddress:z$1.string({required_error:"XP address is required",invalid_type_error:"XP address must be a string"}),evmAddress:z$1.string().optional(),xpubXP:z$1.string({invalid_type_error:"xpubXP must be a string"}).optional(),externalXPAddresses:z$1.array(z$1.object({index:z$1.number(),address:z$1.string()}))})}),Ca=a(e=>({xpAddress:e.currentAddress,evmAddress:e.currentEvmAddress,xpubXP:e.xpubXP,externalXPAddresses:[]}),"getAccountFromLegacyContext"),wa=a(e=>e.account,"getAccountFromNewContext"),Na=a(e=>e!=null&&typeof e=="object"&&"account"in e&&e.account!=null&&typeof e.account=="object","hasAccountField"),Xe=a(e=>{if(!e)return {success:!1,error:"Missing Avalanche transaction context"};if(Na(e)){let{success:o,data:s,error:i}=ba.safeParse(e);return o?{success:!0,data:wa(s)}:{success:!1,error:i.errors[0]?.message||"Invalid or missing Avalanche transaction context"}}let{success:t,data:r,error:n}=Pa.safeParse(e);return t?{success:!0,data:Ca(r)}:{success:!1,error:n.errors[0]?.message||"Invalid or missing Avalanche transaction context"}},"getAccountFromContext");var yr=a(async({request:e,network:t,approvalController:r,glacierApiUrl:n,appInfo:o})=>{let s=er(e.params);if(!s.success)return {error:rpcErrors.invalidParams(Y("Transaction params are invalid",s.error))};try{let{transactionHex:i,chainAlias:c,externalIndices:l,internalIndices:d,utxos:p}=s.data,m=Avalanche.getVmByChainAlias(c),u=utils.hexToBuffer(i),y=t.isTestnet??!1,f=await S(t),D=Xe(e.context);if(!D.success)return {error:rpcErrors.invalidParams(D.error)};let{xpAddress:b,xpubXP:L,externalXPAddresses:R}=D.data,he=Ue({utxoHexes:p,vm:m}),te=he.length?he:await Avalanche.getUtxosByTxFromGlacier({transactionHex:i,chainAlias:c,network:y?Network.FUJI:Network.MAINNET,url:n,token:K(),headers:J(o)}),re;if(c==="C")re=await Avalanche.createAvalancheEvmUnsignedTx({txBytes:u,vm:m,utxos:te,fromAddress:b});else {let xe=utils.unpackWithManager(m,u);if(L!==void 0&&typeof L!="string")return {error:rpcErrors.invalidParams("xpubXP must be a string")};let Je=await st({indices:l??[],chainAlias:c,isChange:!1,network:t,xpubXP:L,externalXPAddresses:R}),zr=await st({indices:d??[],chainAlias:c,isChange:!0,network:t,xpubXP:L,externalXPAddresses:R}),Yr=[...new Set([b,...Je,...zr])].map(Qr=>utils.parse(Qr)[2]);re=await Avalanche.createAvalancheUnsignedTx({tx:xe,utxos:te,provider:f,fromAddressBytes:Yr});}let ge=await Avalanche.parseAvalancheTx(re,f,b),Ne=Fe(ge),fe=rr(ge);if(ge.type==="unknown"||Ne===void 0)return {error:rpcErrors.internal("Unable to parse transaction data. Unsupported tx type")};let Re={type:RpcMethod.AVALANCHE_SEND_TRANSACTION,unsignedTxJson:JSON.stringify(re.toJSON()),data:ge,vm:m,externalIndices:l,internalIndices:d},Ve=Oe(Ne,t.networkToken.symbol,{network:t,signerAccount:b});if(Ve===void 0)return {error:rpcErrors.internal("Unable to parse transaction display data. Unsupported tx type")};let Ee={title:fe,network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},details:Ve,networkFeeSelector:!1},ye=await r.requestApproval({request:e,displayData:Ee,signingData:Re});if("error"in ye)return {error:ye.error};let _;try{_=await Ba(f,ye,m);}catch(xe){return {error:rpcErrors.internal(Y("Unable to broadcast transaction",xe))}}return Ma({explorerUrl:t.explorerUrl??"",provider:f,txHash:_,vm:m,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:e}),{result:_}}catch(i){return console.error(i),{error:rpcErrors.internal(Y("Unable to create transaction",i))}}},"avalancheSendTransaction"),Ba=a(async(e,t,r)=>{if("txHash"in t)return t.txHash;let{txID:n}=await e.issueTxHex(t.signedData,r);return n},"getTxHash"),Ma=a(async({explorerUrl:e,provider:t,txHash:r,vm:n,onTransactionPending:o,onTransactionConfirmed:s,onTransactionReverted:i,request:c})=>{let d=ce(e,r);try{o({txHash:r,request:c,explorerLink:d}),n===PVM?(await q({operation:()=>t.getApiP().getTxStatus({txID:r}),isSuccess:m=>["Committed","Dropped"].includes(m.status),maxRetries:7})).status==="Committed"?s({txHash:r,explorerLink:d,request:c}):i({txHash:r,request:c}):n===AVM?(await q({operation:()=>t.getApiX().getTxStatus({txID:r}),isSuccess:m=>["Accepted","Rejected"].includes(m.status),maxRetries:7})).status==="Accepted"?s({txHash:r,explorerLink:d,request:c}):i({txHash:r,request:c}):(await q({operation:()=>t.getApiC().getAtomicTxStatus(r),isSuccess:m=>["Accepted","Dropped"].includes(m.status),maxRetries:7})).status==="Accepted"?s({txHash:r,explorerLink:d,request:c}):i({txHash:r,request:c});}catch(p){console.error(p),p instanceof Error&&p.message.startsWith("Max retry exceeded.")||i({txHash:r,request:c});}},"waitForTransactionReceipt");var La=z$1.union([z$1.tuple([z$1.string()]).describe("message to sign"),z$1.tuple([z$1.string().describe("message to sign"),z$1.number().nonnegative().describe("account index")])]),xr=a(e=>La.safeParse(e),"parseRequestParams");var Tr=a(async({request:e,network:t,approvalController:r})=>{let n=xr(e.params);if(!n.success)return console.error("invalid params",n.error),{error:rpcErrors.invalidParams(Y("Params are invalid",n.error))};let[o,s]=n.data,i=Buffer.from(o,"utf-8").toString("hex"),c={type:RpcMethod.AVALANCHE_SIGN_MESSAGE,data:i,accountIndex:s},l={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:[o]}]},d=await r.requestApproval({request:e,displayData:l,signingData:c});return "error"in d?{error:d.error}:"signedData"in d?{result:d.signedData}:{error:rpcErrors.internal("No signed data returned")}},"avalancheSignMessage");var Ua=z$1.object({from:z$1.string().optional().describe("Avalanche receiving address"),transactionHex:z$1.string(),chainAlias:z$1.enum(["X","P","C"]),utxos:z$1.string().array().optional()}),vr=a(e=>Ua.safeParse(e),"parseRequestParams");var kr=a(async({vm:e,txBytes:t,utxos:r,currentAddress:n,currentEvmAddress:o,provider:s})=>{let i,c,l=utils.unpackWithManager(e,t);if(evmSerial.isExportTx(l)){let d=l.ins[0]?.address.toHex();if(!o)throw rpcErrors.invalidRequest("Missing EVM address");if(d?.toLowerCase()!==o.toLowerCase())throw new Error("This account has nothing to sign");return Avalanche.createAvalancheEvmUnsignedTx({txBytes:t,vm:e,utxos:r,fromAddress:n})}try{let p=utils.getManagerForVM(e).unpack(t,avaxSerial.SignedTx);evmSerial.isImportTx(l)?c=await Avalanche.createAvalancheEvmUnsignedTx({txBytes:t,vm:e,utxos:r,fromAddress:n}):c=await Avalanche.createAvalancheUnsignedTx({tx:l,provider:s,credentials:p.getCredentials(),utxos:r}),i=l.getSigIndices().map((m,u)=>new Credential(Avalanche.populateCredential(m,{unsignedTx:c,credentialIndex:u})));}catch{i=l.getSigIndices().map(p=>new Credential(Avalanche.populateCredential(p)));}return Avalanche.createAvalancheUnsignedTx({tx:l,provider:s,credentials:i,utxos:r})},"getUnsignedOrPartiallySignedTx");var br=a(async({request:e,network:t,approvalController:r,glacierApiUrl:n,appInfo:o})=>{let s=vr(e.params);if(!s.success)return console.error("invalid params",s.error),{error:rpcErrors.invalidParams("Params are invalid")};let{transactionHex:i,chainAlias:c,from:l,utxos:d}=s.data,p=Avalanche.getVmByChainAlias(c),m=t.isTestnet??!1,u=await S(t),y=Xe(e.context);if(!y.success)return {error:rpcErrors.invalidParams(y.error)};let{xpAddress:f,evmAddress:D}=y.data,b=Ue({utxoHexes:d,vm:p}),L=b.length?b:await Avalanche.getUtxosByTxFromGlacier({transactionHex:i,chainAlias:c,network:m?Network.FUJI:Network.MAINNET,url:n,token:K(),headers:J(o)}),R=await kr({txBytes:utils.hexToBuffer(i),vm:p,utxos:L,currentAddress:f,currentEvmAddress:D,provider:u}),he=utils.addressesFromBytes([utils.parse(l??f)[2]])[0];if(!he)return {error:rpcErrors.invalidRequest("Missing signer address")};let te=R.getSigIndicesForAddress(he);if(!te)return {error:rpcErrors.invalidRequest("This account has nothing to sign")};let re=R.getSigIndices();if(!te.some(([xe,Je])=>re[xe]?.includes(Je)))return {error:rpcErrors.invalidRequest("This account has nothing to sign")};let Ne=l??f,fe=await Avalanche.parseAvalancheTx(R,u,l??f),Re=Fe(fe);if(fe.type==="unknown"||Re===void 0)return {error:rpcErrors.invalidParams("Unable to parse transaction data. Unsupported tx type")};let Ve={type:RpcMethod.AVALANCHE_SIGN_TRANSACTION,data:fe,vm:p,unsignedTxJson:JSON.stringify(R.toJSON()),ownSignatureIndices:te},Ee=Oe(Re,t.networkToken.symbol,{network:t,signerAccount:Ne});if(Ee===void 0)return {error:rpcErrors.internal("Unable to parse transaction display data. Unsupported tx type")};let ye={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:Ee},_=await r.requestApproval({request:e,displayData:ye,signingData:Ve});return "error"in _?{error:_.error}:"signedData"in _?{result:_.signedData}:{error:rpcErrors.invalidRequest("No signed data returned")}},"avalancheSignTransaction");var ee=a(({accountIndex:e,derivationPathType:t,addressIndex:r=0})=>{if(e<0)throw rpcErrors.invalidParams("Account index must be a non-negative integer");if(r!==void 0&&r<0)throw rpcErrors.invalidParams("Address index must be a non-negative integer");switch(t){case"bip44":return {[NetworkVMType.AVM]:`m/44'/9000'/${e}'/0/${r}`,[NetworkVMType.CoreEth]:`m/44'/60'/0'/0/${e}`};case"ledger_live":return {[NetworkVMType.AVM]:`m/44'/9000'/${e}'/0/${r}`,[NetworkVMType.CoreEth]:`m/44'/60'/${e}'/0/0`};default:throw rpcErrors.invalidParams(`Unsupported derivation path type: ${t}`)}},"buildDerivationPath");var Mt=a(e=>"derivationPathType"in e&&"accountIndex"in e&&typeof e.accountIndex=="number"&&typeof e.derivationPathType=="string","hasDerivationDetails");var Cr=a(async e=>{let{approvalController:t,network:r,secretId:n}=e,o=Mt(e)?ee(e).AVM:void 0,s=Mt(e)?ee(e).CoreEth:void 0,i=await S(r),c=await t.requestPublicKey({curve:"secp256k1",secretId:n,derivationPath:o}).catch(()=>null),l=await t.requestPublicKey({curve:"secp256k1",secretId:n,derivationPath:s}).catch(()=>null),d=l?{[NetworkVMType.CoreEth]:i.getAddress(Buffer.from(l,"hex"),"C")}:{},p=c?{[NetworkVMType.AVM]:i.getAddress(Buffer.from(c,"hex"),"X"),[NetworkVMType.PVM]:i.getAddress(Buffer.from(c,"hex"),"P")}:{};return {...d,...p}},"deriveAddress");var wr=a(async e=>{let{approvalController:t,network:r,secretId:n,accountIndices:o,derivationPathType:s,addressIndex:i}=e;if(o.length===0)return [];await init();let c=await Promise.all(o.map(async d=>{let p=ee({accountIndex:d,derivationPathType:s,addressIndex:i}),[m,u]=await Promise.all([t.requestPublicKey({curve:"secp256k1",secretId:n,derivationPath:p.AVM}),t.requestPublicKey({curve:"secp256k1",secretId:n,derivationPath:p.CoreEth})]);return {xp:Uint8Array.from(Buffer.from(m,"hex")),evm:Uint8Array.from(Buffer.from(u,"hex"))}}));return (await deriveAddressesForAvalanche(c.map(d=>d.xp),c.map(d=>d.evm),!!r.isTestnet)).map(d=>({[NetworkVMType.AVM]:d.x,[NetworkVMType.PVM]:d.p,[NetworkVMType.CoreEth]:d.coreEth}))},"deriveAddresses");var Rr=a(async({accountIndex:e,xpubXP:t,walletType:r,network:n})=>{if(!n)throw rpcErrors.invalidParams("network is required to get address");if(t===void 0)throw rpcErrors.invalidParams("xpubXP is required to get address");let o=await S(n),s;switch(r){case WalletType.Mnemonic:case WalletType.Ledger:case WalletType.Keystone:{s=Avalanche.getAddressPublicKeyFromXpub(t,e);break}case WalletType.LedgerLive:case WalletType.Seedless:{s=Buffer.from(t,"hex");break}default:throw rpcErrors.invalidParams(`Unsupported wallet type: ${r}`)}return {[NetworkVMType.AVM]:o.getAddress(s,"X"),[NetworkVMType.PVM]:o.getAddress(s,"P")}},"getAddress");var Ft=class Ft extends Error{constructor(){super(...arguments);G(this,"message","Glacier is unhealthy. Try again later.");}};a(Ft,"GlacierUnhealthyError");var Ge=Ft,Ot=class Ot{constructor({glacierApiUrl:t,headers:r}){G(this,"glacierSdk");G(this,"isGlacierHealthy",!0);G(this,"isHealthy",a(()=>this.isGlacierHealthy,"isHealthy"));this.glacierSdk=new Glacier({BASE:t,HEADERS:r},ve);}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 Ge&&this.setGlacierToUnhealthy(),r}}async getChainBalance(t){try{return this.glacierSdk.primaryNetworkBalances.getBalancesByAddresses(t)}catch(r){throw r instanceof Ge&&this.setGlacierToUnhealthy(),r}}};a(Ot,"AvalancheGlacierService");var qe=Ot;var Vr=a(e=>Object.keys(e).includes("unlockedUnstaked"),"isPchainBalance"),Er=a(e=>Object.keys(e).includes("locked"),"isXchainBalance");function $e(e,t){let r=Object.values(e).reduce(function(n,o){let s=o.reduce(function(i,c){if(c.assetId!==t)return i;let l=Number(c.amount);return i+l},0);return n+s},0);return BigInt(r)}a($e,"calculateAvaxTotalBalance");var Mr=a(({balance:e,networkToken:t,priceInCurrency:r,marketCap:n,vol24:o,change24:s,coingeckoId:i,avaxAssetId:c})=>{let l={},d={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 d){let D=d[f];if(!D||!D.length){l[f]=0n;continue}D.forEach(b=>{if(b.assetId!==c)return;let R=(l[f]??0n)+BigInt(b.amount);l[f]=R;});}let p=new TokenUnit(l.unlockedUnstaked?l.unlockedUnstaked:0n,t.decimals,t.symbol),m=r?p.mul(r).toDisplay({fixedDp:2,asNumber:!0}):void 0,u=new TokenUnit($e(e,c),t.decimals,t.symbol),y=r?u.mul(r).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {...t,type:TokenType.NATIVE,priceInCurrency:r,balance:u.toSubUnit(),balanceInCurrency:y,balanceDisplayValue:u.toDisplay(),balanceCurrencyDisplayValue:y?.toFixed(2),available:p.toSubUnit(),availableInCurrency:m,availableDisplayValue:p.toDisplay(),availableCurrencyDisplayValue:m?.toFixed(2),utxos:e,balancePerType:{lockedStaked:l.lockedStaked,lockedStakeable:l.lockedStakeable,lockedPlatform:l.lockedPlatform,atomicMemoryLocked:l.atomicMemoryLocked,atomicMemoryUnlocked:l.atomicMemoryUnlocked,unlockedUnstaked:l.unlockedUnstaked,unlockedStaked:l.unlockedStaked,pendingStaked:l.pendingStaked},marketCap:n,vol24:o,change24:s,coingeckoId:i}},"convertPChainBalance");var _r=a(({balance:e,networkToken:t,priceInCurrency:r,marketCap:n,vol24:o,change24:s,coingeckoId:i,avaxAssetId:c})=>{let l={},d={unlocked:e.unlocked,locked:e.locked,atomicMemoryUnlocked:e.atomicMemoryUnlocked,atomicMemoryLocked:e.atomicMemoryLocked};for(let f in d){let D=d[f];if(!D||!D.length){l[f]=0n;continue}D.forEach(b=>{if(b.assetId!==c)return;let R=(l[f]??0n)+BigInt(b.amount);l[f]=R;});}let p=new TokenUnit(l.unlocked?l.unlocked:0n,t.decimals,t.symbol),m=r?p.mul(r).toDisplay({fixedDp:2,asNumber:!0}):void 0,u=new TokenUnit($e(e,c),t.decimals,t.symbol),y=r!==void 0?u.mul(r):void 0;return {...t,coingeckoId:i,type:TokenType.NATIVE,priceInCurrency:r,balance:u.toSubUnit(),balanceInCurrency:y?.toDisplay({fixedDp:2,asNumber:!0}),balanceDisplayValue:u.toDisplay(),balanceCurrencyDisplayValue:y?.toDisplay({fixedDp:2}),available:p.toSubUnit(),availableInCurrency:m,availableDisplayValue:p.toDisplay(),availableCurrencyDisplayValue:m?.toFixed(2),utxos:e,balancePerType:{unlocked:l.unlocked,locked:l.locked,atomicMemoryUnlocked:l.atomicMemoryUnlocked,atomicMemoryLocked:l.atomicMemoryLocked},marketCap:n,vol24:o,change24:s}},"convertXChainBalance");var Or=a(async({addresses:e,currency:t,network:r,glacierService:n,tokenService:o})=>{let s=await S(r);if(!n.isHealthy())return Promise.reject("Glacier is unhealthy. Try again later.");let c=t.toLowerCase(),l=e[0]??"",d=r.networkToken,p=r.pricingProviders?.coingecko.nativeTokenId,m=r.vmName===NetworkVMType.PVM?BlockchainId.P_CHAIN:BlockchainId.X_CHAIN,u=r.isDevnet?null:r.isTestnet?Network.FUJI:Network.MAINNET;if(!u)return Promise.reject("Glacier does not supported local devnets");let y=await n.getChainBalance({blockchainId:m,network:u,addresses:e.join(",")}).then(b=>b.balances),f=await o.getWatchlistDataForToken({tokenDetails:{symbol:r.networkToken.symbol,isNative:!0,caip2Id:r.caipId??""},currency:c}),D;return Vr(y)?(D=Mr({balance:y,networkToken:d,priceInCurrency:f.priceInCurrency??void 0,marketCap:f.marketCap??void 0,vol24:f.vol24??void 0,change24:f.change24??void 0,coingeckoId:p??"",avaxAssetId:s.getContext().avaxAssetID}),{[l]:{[d.symbol]:D}}):Er(y)?(D=_r({balance:y,networkToken:d,priceInCurrency:f.priceInCurrency??void 0,marketCap:f.marketCap??void 0,vol24:f.vol24??void 0,change24:f.change24??void 0,coingeckoId:p??"",avaxAssetId:s.getContext().avaxAssetID}),{[l]:{[d.symbol]:D}}):Promise.reject("Incorrect type balance was returned from glacier")},"getBalances");async function Xr(e){let{vmName:t}=e,r=await S(e);if(t===NetworkVMType.AVM)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)),c=1+s,l=1+i;return {baseFee:n,low:{maxFeePerGas:n},medium:{maxFeePerGas:n*BigInt(Math.round(100*c))/100n},high:{maxFeePerGas:n*BigInt(Math.round(100*l))/100n},isFixedFee:!1}}a(Xr,"getNetworkFee");function Gr({tx:e,address:t,networkToken:r,chainId:n,explorerUrl:o,isTestnet:s}){let i=new Set(e.consumedUtxos.flatMap(u=>u.addresses)||[]),c=new Set(e.emittedUtxos.flatMap(u=>u.addresses)||[]),l=Ya({tx:e,isTestnet:s,networkToken:r,froms:i}),d=Qa({tx:e,isTestnet:s,networkToken:r}),p=t.toLowerCase().startsWith("p-")?t.slice(2):t,m=i.has(p);return {hash:e.txHash,isContractCall:!1,isIncoming:!m,isOutgoing:m,from:[...i.values()].join(","),to:[...c.values()].join(","),isSender:m,timestamp:e.blockTimestamp*1e3,tokens:[{decimal:r.decimals.toString(),name:r.name,symbol:r.symbol,type:TokenType.NATIVE,amount:l.toString()}],gasUsed:d.toString(),explorerLink:ce(o??"",e.txHash,"tx"),txType:e.txType,chainId:n.toString()}}a(Gr,"convertPChainTransaction");function Ya({tx:e,isTestnet:t,networkToken:r,froms:n}){let o=["ImportTx","ExportTx"].includes(e.txType),s=e.txType==="BaseTx",i=e.emittedUtxos.filter(u=>u.asset.assetId===ke(!!t)&&!u.addresses.some(y=>n.has(y))).reduce((u,y)=>u.add(y.asset.amount),new H(0)),c=e.value.find(u=>u.assetId===ke(!!t))?.amount,l=i.gt(new H(0))?i:c?new H(c):new H(0)??new H(0),d=t?Avalanche.FujiContext.pBlockchainID:Avalanche.MainnetContext.pBlockchainID,p=e.emittedUtxos.filter(u=>u.asset.assetId===ke(!!t)&&(e.txType==="ImportTx"&&u.consumedOnChainId===d||e.txType==="ExportTx"&&u.consumedOnChainId!==d)).reduce((u,y)=>u.add(y.amount),new H(0)),m=s?l:o?p:e.amountStaked.length===0?Hr(e.value,!!t):Hr(e.amountStaked,!!t);return Q({amount:m?.toNumber(),decimals:r.decimals})}a(Ya,"getAmount");function Qa({tx:e,isTestnet:t,networkToken:r}){let n=e.amountBurned?.filter(o=>o.assetId===ke(!!t)).reduce((o,s)=>o.add(s.amount),new H(0));return Q({amount:n?.toNumber(),decimals:r.decimals})}a(Qa,"getBurnedAmount");function Hr(e,t){return e.filter(r=>r.assetId===ke(t)).reduce((r,n)=>r.add(n.amount),new H(0))}a(Hr,"aggregateValue");function ke(e){return e?Avalanche.FujiContext.avaxAssetID:Avalanche.MainnetContext.avaxAssetID}a(ke,"getAvaxAssetId");function qr({tx:e,address:t,networkToken:r,chainId:n,explorerUrl:o,isTestnet:s}){let i=new Set(e.consumedUtxos.flatMap(f=>f.addresses)||[]),c=new Set(e.emittedUtxos.flatMap(f=>f.addresses)||[]),l=t.toLowerCase().startsWith("x-")?t.slice(2):t,d=["ImportTx","ExportTx"].includes(e.txType),{amount:p,isSender:m}=en({tx:e,isTestnet:s,networkToken:r,chainAddress:l,isImportExport:d}),u=tn({isTestnet:s,tx:e,networkToken:r}),y=d?p.toString():m?p.minus(u).toString():p.toString();return {hash:e.txHash,isContractCall:!1,isIncoming:!m,isOutgoing:m,from:[...i.values()].join(","),to:[...c.values()].join(","),isSender:m,timestamp:e.timestamp*1e3,tokens:[{decimal:r.decimals.toString(),name:r.name,symbol:r.symbol,type:TokenType.NATIVE,amount:y}],gasUsed:u.toString(),explorerLink:ce(o??"",e.txHash,"tx"),txType:e.txType,chainId:n.toString()}}a(qr,"convertXChainTransaction");function en({tx:e,isTestnet:t,networkToken:r,chainAddress:n,isImportExport:o}){if(o){let d=t?Avalanche.FujiContext.xBlockchainID:Avalanche.MainnetContext.xBlockchainID,p=e.emittedUtxos.filter(m=>m.asset.assetId===be(!!t)&&(e.txType==="ImportTx"&&m.consumedOnChainId===d||e.txType==="ExportTx"&&m.consumedOnChainId!==d)).reduce((m,u)=>m.add(u.asset.amount),new H(0));return {amount:Q({amount:p.toNumber(),decimals:r.decimals}),isSender:!0}}let s=e.consumedUtxos.filter(d=>d.asset.assetId===be(!!t)&&d.addresses.includes(n)).reduce((d,p)=>d.add(p.asset.amount),new H(0)),i=e.emittedUtxos.filter(d=>d.asset.assetId===be(!!t)&&d.addresses.includes(n)).reduce((d,p)=>d.add(p.asset.amount),new H(0)),c=s.gte(i),l=c?s.minus(i):i.minus(s);return {amount:Q({amount:l.toNumber(),decimals:r.decimals}),isSender:c}}a(en,"getAmount");function tn({isTestnet:e,tx:t,networkToken:r}){let n=t.amountUnlocked.filter(i=>i.assetId===be(!!e)).reduce((i,c)=>i.add(c.amount),new H(0)),o=t.amountCreated.filter(i=>i.assetId===be(!!e)).reduce((i,c)=>i.add(c.amount),new H(0)),s=n.minus(o);return Q({amount:s.toNumber(),decimals:r.decimals})}a(tn,"getBurnedAmount");function be(e){return e?Avalanche.FujiContext.avaxAssetID:Avalanche.MainnetContext.avaxAssetID}a(be,"getAvaxAssetId");var jr=a(async({address:e,nextPageToken:t,offset:r,network:n,glacierService:o})=>{let{isTestnet:s,networkToken:i,explorerUrl:c,chainId:l}=n;if(!o.isHealthy())return {transactions:[],nextPageToken:""};let p=n.isTestnet?Network.FUJI:Network.MAINNET,m=await o.listLatestPrimaryNetworkTransactions({addresses:e,blockchainId:an(e),network:p,pageSize:r,pageToken:t,sortOrder:SortOrder.DESC}),u=[];return hr(m)&&(u=m.transactions.map(y=>Gr({tx:y,isTestnet:s,address:e,networkToken:i,explorerUrl:c,chainId:l}))),gr(m)&&(u=m.transactions.map(y=>qr({tx:y,isTestnet:s,address:e,networkToken:i,explorerUrl:c,chainId:l}))),{transactions:u,nextPageToken:m.nextPageToken}},"getTransactionHistory"),an=a(e=>e.split(",")[0]?.toLowerCase().startsWith("p-")?BlockchainId.P_CHAIN:BlockchainId.X_CHAIN,"getBlockchainIdByAddress");function Jr({blockchainId:e,isTestnet:t}){let r=t?"fuji"+e:e,n=nn.createHash("sha256").update(r).digest("base64");return "avax:"+on(n).substring(0,32)}a(Jr,"hashBlockchainId");var on=a(e=>e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,""),"convertBase64ToBase64Url");var pe,Ce,me,M,ue,we,Ht=class Ht{constructor({approvalController:t,environment:r,appInfo:n,runtime:o}){I(this,pe,void 0);I(this,Ce,void 0);I(this,me,void 0);I(this,M,void 0);I(this,ue,void 0);I(this,we,void 0);let{glacierApiUrl:s,proxyApiUrl:i}=Zt(r);C(this,ue,n),C(this,we,o),C(this,pe,new qe({glacierApiUrl:s,headers:J(n)})),C(this,Ce,i),C(this,me,s),C(this,M,t);}getProvider(t){return S(t)}getAddress({accountIndex:t,xpubXP:r,walletType:n,network:o}){return Rr({accountIndex:t,xpubXP:r,walletType:n,network:o})}getBalances({addresses:t,network:r,storage:n,currency:o}){let s=new Te({storage:n,proxyApiUrl:x(this,Ce),fetch:x(this,we)?.fetch});return Or({addresses:t,currency:o,network:r,glacierService:x(this,pe),tokenService:s})}getManifest(){let t=parseManifest(Yt);return t.success?t.data:void 0}getNetworkFee(t){return Xr(t)}getTransactionHistory({network:t,address:r,nextPageToken:n,offset:o}){return jr({network:t,address:r,nextPageToken:n,offset:o,glacierService:x(this,pe)})}getTokens(t){return Promise.resolve([])}buildDerivationPath(t){return ee(t)}async deriveAddress(t){return Cr({...t,approvalController:x(this,M)})}async deriveAddresses(t){return wr({...t,approvalController:x(this,M)})}async onRpcRequest(t,r){switch(t.method){case RpcMethod.AVALANCHE_SIGN_MESSAGE:return Tr({request:t,network:r,approvalController:x(this,M)});case RpcMethod.AVALANCHE_SIGN_TRANSACTION:return br({request:t,network:r,approvalController:x(this,M),glacierApiUrl:x(this,me),appInfo:x(this,ue)});case RpcMethod.AVALANCHE_SEND_TRANSACTION:return yr({request:t,network:r,approvalController:x(this,M),glacierApiUrl:x(this,me),appInfo:x(this,ue)});default:return {error:rpcErrors.methodNotSupported(`Method ${t.method} not supported`)}}}static getHashedBlockchainId({blockchainId:t,isTestnet:r}){return Jr({blockchainId:t,isTestnet:r})}};pe=new WeakMap,Ce=new WeakMap,me=new WeakMap,M=new WeakMap,ue=new WeakMap,we=new WeakMap,a(Ht,"AvalancheModule");var Kr=Ht;var Ed=a(e=>"balancePerType"in e&&"unlockedUnstaked"in e.balancePerType,"isTokenWithBalancePVM"),Bd=a(e=>"balancePerType"in e&&"unlocked"in e.balancePerType,"isTokenWithBalanceAVM");
13
+ var Gt=Object.defineProperty;var Zr=(e,t,r)=>t in e?Gt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var a=(e,t)=>Gt(e,"name",{value:t,configurable:!0});var q=(e,t,r)=>(Zr(e,typeof t!="symbol"?t+"":t,r),r),Je=(e,t,r)=>{if(!t.has(e))throw TypeError("Cannot "+r)};var x=(e,t,r)=>(Je(e,t,"read from private field"),r?r.call(e):t.get(e)),D=(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);},C=(e,t,r,n)=>(Je(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r);var ze=(e,t,r)=>(Je(e,t,"access private method"),r);function qt(e){let t,r=0;for(t=0;t<e.length;t++)r+=e.charCodeAt(t)*(t+1);return r}a(qt,"charsum");function Ye(e){let t,r=0;for(t=0;t<e.length;t++){let n=qt(e[t]??"");r=r+65027/n;}return (""+r).slice(0,16)}a(Ye,"arrayHash");var $=a(async({operation:e,isSuccess:t,maxRetries:r=10,backoffPolicy:n=U.exponential()})=>{let o=0,s=0,i;for(;s<r;){s>0&&await ea(o);try{let l=await e(s);if(t(l))return l}catch(l){i=l;}o=n(s),s++;}let c=i?`Max retry exceeded. ${i}`:"Max retry exceeded.";throw new Error(c)},"retry"),Qe=class Qe{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 n=>{if(n<t)return (n+1)*r;let o=n-t+1,s=t*r,i=2*r*(Math.pow(2,o)-1);return s+i}}};a(Qe,"RetryBackoffPolicy");var U=Qe;function ea(e){return new Promise(t=>setTimeout(t,e))}a(ea,"delay");var Ze=a(e=>$({operation:t=>e(t>0),maxRetries:2,backoffPolicy:U.constant(1),isSuccess:t=>t?.status?.error_code!==429}),"coingeckoRetry");async function W(e,t,r=fetch){let n=await r(...e);if(!n.ok)throw new Error(`Request failed with status ${n.status}`);let o=await n.json();return t.parse(o)}a(W,"fetchAndVerify");var et=class et{constructor(t,r){this.proxyApiUrl=t;this.fetchFn=r;}simplePrice(t){let r=new URLSearchParams(t);return W([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${r}`,{method:"POST",headers:{"Content-Type":"application/json"}}],RawSimplePriceResponseSchema,this.fetchFn)}simplePriceByContractAddresses(t){let{id:r,...n}=t,o=new URLSearchParams(n);return W([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${r}?${o}`,{method:"POST",headers:{"Content-Type":"application/json"}}],RawSimplePriceResponseSchema,this.fetchFn)}};a(et,"CoingeckoProxyClient");var Ae=et;var ta=z$1.array(z$1.object({internalId:z$1.string(),id:z$1.string(),symbol:z$1.string(),name:z$1.string(),image:z$1.string().optional().nullable(),current_price:z$1.number().optional().nullable(),price_change_percentage_24h:z$1.number().optional().nullable(),market_cap:z$1.number().optional().nullable(),total_volume:z$1.number().optional().nullable(),platforms:z$1.record(z$1.string(),z$1.string())})),tt=class tt{constructor(t){this.proxyApiUrl=t;}watchlistToken(t){let r=new URLSearchParams(t);return W([`${this.proxyApiUrl}/watchlist/tokens?${r}`,{method:"GET",headers:{"Content-Type":"application/json"}}],ta)}};a(tt,"WatchlistProxyClient");var Be=tt;var F,j,K,ne,rt=class rt{constructor({storage:t,proxyApiUrl:r,fetch:n}){D(this,F,void 0);D(this,j,void 0);D(this,K,void 0);D(this,ne,void 0);q(this,"transformSimplePriceResponse",a((t,r=[VsCurrencyType.USD])=>{let n={};return Object.keys(t).forEach(o=>{let s=t[o];n[o]={},r.forEach(i=>{n[o]={[i]:{price:s?.[i],change24:s?.[`${i}_24h_change`],vol24:s?.[`${i}_24h_vol`],marketCap:s?.[`${i}_market_cap`]}};});}),n},"transformSimplePriceResponse"));C(this,F,t),C(this,j,r),C(this,K,n??globalThis.fetch),C(this,ne,getBasicCoingeckoHttp(void 0,x(this,K)));}async getWatchlistDataForToken({tokenDetails:t,currency:r=VsCurrencyType.USD}){let n=(await new Be(x(this,j)).watchlistToken({tokens:t.symbol,currency:r})).filter(s=>t.isNative?s.internalId===`NATIVE-${t.symbol.toLowerCase()}`:s.platforms[t.caip2Id]===t.address),[o]=n;return o?{priceInCurrency:o.current_price??0,change24:o.price_change_percentage_24h??0,marketCap:o.market_cap??0,vol24:o.total_volume??0}:{priceInCurrency:0,change24:0,marketCap:0,vol24:0}}async getSimplePrice({coinIds:t=[],currencies:r=[VsCurrencyType.USD]}){let n,s=`getSimplePrice-${t?`${Ye(t)}-${r.toString()}`:`${r.toString()}`}`;if(n=x(this,F)?.get?.(s),n)return n;try{n=await Ze(i=>this.simplePrice({coinIds:t,currencies:r,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:i}));}catch{n=void 0;}return x(this,F)?.set?.(s,n),n}async getPricesByAddresses(t,r,n=VsCurrencyType.USD){let o,i=`getPricesWithMarketDataByAddresses-${`${Ye(t)}-${r}-${n}`}`;if(o=x(this,F)?.get?.(i),o)return o;try{o=await Ze(c=>this.fetchPricesByAddresses({assetPlatformId:r,tokenAddresses:t,currency:n,useCoingeckoProxy:c}));}catch(c){console.error(c),o=void 0;}return x(this,F)?.set?.(i,o),o}async fetchPricesByAddresses({assetPlatformId:t,tokenAddresses:r,currency:n=VsCurrencyType.USD,useCoingeckoProxy:o=!1}){if(o){let s=await new Ae(x(this,j),x(this,K)).simplePriceByContractAddresses({id:t,contract_addresses:r,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0});return this.transformSimplePriceResponse(s,[n])}return simpleTokenPrice(x(this,ne),{assetPlatformId:t,tokenAddresses:r,currencies:[n],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:t=[],currencies:r=[VsCurrencyType.USD],marketCap:n=!1,vol24:o=!1,change24:s=!1,lastUpdated:i=!1,useCoingeckoProxy:c=!1,shouldThrow:l=!0}){if(c){let d=await new Ae(x(this,j),x(this,K)).simplePrice({ids:t,vs_currencies:r,include_market_cap:n,include_24hr_vol:o,include_24hr_change:s,include_last_updated_at:i});return this.transformSimplePriceResponse(d,r)}return simplePrice(x(this,ne),{coinIds:t,currencies:r,marketCap:n,vol24:o,change24:s,lastUpdated:i,shouldThrow:l})}};F=new WeakMap,j=new WeakMap,K=new WeakMap,ne=new WeakMap,a(rt,"TokenService");var Te=rt;object({date:string(),usd:record(number())});var h=a((e,t,r,n)=>({label:e,type:DetailItemType.CURRENCY,value:t,maxDecimals:r,symbol:n}),"currencyItem"),T=a((e,t,r="horizontal")=>({label:e,alignment:r,type:DetailItemType.TEXT,value:t}),"textItem");var V=a((e,t)=>({label:e,type:DetailItemType.ADDRESS,value:t}),"addressItem"),Wt=a((e,t)=>({label:e,type:DetailItemType.ADDRESS_LIST,value:t}),"addressListItem"),v=a((e,t)=>({label:e,type:DetailItemType.NODE_ID,value:t}),"nodeIDItem"),at=a((e,t)=>({label:e,type:DetailItemType.DATA,value:t}),"dataItem"),E=a((e,t)=>({label:e,type:DetailItemType.DATE,value:t}),"dateItem"),oe=a((e,t)=>({label:e,type:DetailItemType.NETWORK,value:t}),"networkItem");var J=a(({name:e,version:t})=>{switch(e){case AppName.CORE_MOBILE_IOS:case AppName.CORE_MOBILE_ANDROID:case AppName.CORE_WEB:case AppName.CORE_EXTENSION:case AppName.EXPLORER:return {"x-application-name":e,"x-application-version":t};case AppName.OTHER:return}},"getCoreHeaders");var jt=process.env.GLACIER_API_KEY;var X=a(()=>jt,"getGlacierApiKey");var pa={rltoken:X()},z,Me,Le,Jt,_e,zt,nt=class nt extends FetchHttpRequest{constructor(r){super(r);D(this,Le);D(this,_e);D(this,z,0);D(this,Me,U.exponential());}request(r){let n={...pa,...r.query||{}},o={...r,query:Object.keys(n).length>0?n:void 0},s=a(()=>super.request(o),"getRequest");return x(this,z)>0?ze(this,_e,zt).call(this,s):ze(this,Le,Jt).call(this,s)}};z=new WeakMap,Me=new WeakMap,Le=new WeakSet,Jt=a(function(r){let n=r();return new CancelablePromise((o,s,i)=>{i(()=>n.cancel()),n.then(c=>{C(this,z,0),o(c);}).catch(c=>{if(c instanceof ApiError){let l=c.status===429,d=c.status>=500&&c.status<600;C(this,z,x(this,z)+Number(l||d));}s(c);});})},"#request"),_e=new WeakSet,zt=a(function(r){let n=x(this,Me).call(this,x(this,z));return new CancelablePromise((o,s,i)=>{let c=setTimeout(()=>{let l=r();i(()=>{l.cancel(),clearTimeout(c);}),l.then(o).catch(s);},n);})},"#postponeRequest"),a(nt,"GlacierFetchHttpRequest");var ve=nt;var Y=a((e,t)=>({message:`${e}${t instanceof Error?`: ${t.message}`:""}`,data:{cause:t}}),"rpcErrorOpts");var Yt={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 ua={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},ha={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},Zt=a(e=>{switch(e){case Environment.PRODUCTION:return ua;case Environment.DEV:return ha}},"getEnv");var ga=z$1.object({transactionHex:z$1.string(),chainAlias:z$1.enum(["X","P","C"]),externalIndices:z$1.number().array().optional(),internalIndices:z$1.number().array().optional(),utxos:z$1.string().array().optional()}),er=a(e=>ga.safeParse(e),"parseRequestParams");var S=a(async e=>{let{isTestnet:t,isDevnet:r,rpcUrl:n,customRpcHeaders:o}=e,s=o?{headers:o}:void 0;return r?Avalanche.JsonRpcProvider.fromBaseURL(n):t?Avalanche.JsonRpcProvider.getDefaultFujiProvider(s):Avalanche.JsonRpcProvider.getDefaultMainnetProvider(s)},"getProvider");var Ue=a(({utxoHexes:e=[],vm:t})=>{try{let r=utils.getManagerForVM(t).getDefaultCodec();return e.map(n=>{let o=utils.hexToBuffer(n);return Utxo.fromBytes(o,r)[0]})}catch(r){return console.error("Error getting provided utxos",r),[]}},"getProvidedUtxos");var Fe=a(e=>{switch(e.type){case TxType.AddPermissionlessDelegator:return {...e,type:TxType.AddPermissionlessDelegator};case TxType.AddPermissionlessValidator:return {...e,type:TxType.AddPermissionlessValidator};case TxType.AddSubnetValidator:return {...e,type:TxType.AddSubnetValidator};case TxType.CreateChain:return {...e,type:TxType.CreateChain};case TxType.CreateSubnet:return {...e,type:TxType.CreateSubnet};case TxType.RemoveSubnetValidator:return {...e,type:TxType.RemoveSubnetValidator};case TxType.AddAutoRenewedValidator:return {...e,type:TxType.AddAutoRenewedValidator};case TxType.SetAutoRenewedValidatorConfig:return {...e,type:TxType.SetAutoRenewedValidatorConfig};case TxType.ConvertSubnetToL1:return {...e,type:TxType.ConvertSubnetToL1,chain:e.chain};case TxType.SetL1ValidatorWeight:return {...e,type:TxType.SetL1ValidatorWeight,chain:e.chain};case TxType.DisableL1Validator:return {...e,type:TxType.DisableL1Validator,chain:e.chain};case TxType.IncreaseL1ValidatorBalance:return {...e,type:TxType.IncreaseL1ValidatorBalance,chain:e.chain};case TxType.RegisterL1Validator:return {...e,type:TxType.RegisterL1Validator,chain:e.chain};case TxType.Export:return {...e,type:TxType.Export,chain:e.chain,destination:e.destination};case TxType.Import:return {...e,type:TxType.Import,chain:e.chain,source:e.source};case TxType.Base:return {...e,type:TxType.Base,chain:e.chain};default:return}},"parseTxDetails");var rr=a(e=>{switch(e.type){case TxType.AddPermissionlessDelegator:return "Do you want to add this delegator?";case TxType.AddPermissionlessValidator:return "Do you want to add this validator?";case TxType.Export:return "Do you approve this export?";case TxType.Import:return "Do you approve this import?";case TxType.Base:return "Do you approve this transaction?";case TxType.AddSubnetValidator:return "Do you want to add this subnet validator?";case TxType.CreateChain:return "Do you want to create this chain?";case TxType.CreateSubnet:return "Do you want to create this L1?";case TxType.RemoveSubnetValidator:return "Do you want to remove this subnet validator?";case TxType.ConvertSubnetToL1:return "Do you want to convert this subnet?";case TxType.DisableL1Validator:return "Do you want to disable this validator?";case TxType.IncreaseL1ValidatorBalance:return "Do you want to increase this validator balance?";case TxType.RegisterL1Validator:return "Do you want to register this validator?";case TxType.SetL1ValidatorWeight:return "Do you want to set this validator weight?";case TxType.AddAutoRenewedValidator:return "Do you want to add this auto-renewed validator?";case TxType.SetAutoRenewedValidatorConfig:return "Do you want to update this auto-renewed validator config?";default:return "Sign Message"}},"parseTxDisplayTitle");var st=a(async({indices:e,chainAlias:t,isChange:r,network:n,xpubXP:o,externalXPAddresses:s})=>{if(o){let i=await S(n);return e.map(c=>Avalanche.getAddressFromXpub(o,c,i,t,r))}return s&&Array.isArray(s)?e.map(c=>s.find(l=>l.index===c)).filter(c=>c!==void 0).map(c=>c.address):[]},"getAddressesByIndices");var it=a(e=>e.type===TxType.AddPermissionlessDelegator,"isAddPermissionlessDelegatorTx"),ct=a(e=>e.type===TxType.AddPermissionlessValidator,"isAddPermissionlessValidatorTx"),lt=a(e=>e.type===TxType.Export,"isExportTx"),dt=a(e=>e.type===TxType.Import,"isImportTx"),xa=a(e=>e.type===TxType.Base,"isBaseTx"),pt=a(e=>e.type===TxType.AddSubnetValidator,"isAddSubnetValidatorTx"),Aa=a(e=>e.type===TxType.CreateChain,"isCreateChainTx"),Ta=a(e=>e.type===TxType.CreateSubnet,"isCreateSubnetTx"),mt=a(e=>e.type===TxType.RemoveSubnetValidator,"isRemoveSubnetValidatorTx"),ar=a(e=>e.type===TxType.ConvertSubnetToL1,"isConvertSubnetToL1Tx"),nr=a(e=>e.type===TxType.DisableL1Validator,"isDisableL1ValidatorTx"),or=a(e=>e.type===TxType.IncreaseL1ValidatorBalance,"isIncreaseL1ValidatorBalanceTx"),sr=a(e=>e.type===TxType.RegisterL1Validator,"isRegisterL1ValidatorTx"),ir=a(e=>e.type===TxType.SetL1ValidatorWeight,"isSetL1ValidatorWeightTx"),ut=a(e=>e.type===TxType.AddAutoRenewedValidator,"isAddAutoRenewedValidatorTx"),ht=a(e=>e.type===TxType.SetAutoRenewedValidatorConfig,"isSetAutoRenewedValidatorConfigTx"),zo=a(e=>it(e)||ct(e)||pt(e)||mt(e)||ut(e)||ht(e),"isStakingDetails"),Yo=a(e=>lt(e)||dt(e),"isExportImportTxDetails"),cr=a(e=>xa(e),"isChainDetails"),lr=a(e=>Aa(e),"isBlockchainDetails"),dr=a(e=>Ta(e),"isSubnetDetails");var B=(n=>(n.AVM="X-Chain",n.PVM="P-Chain",n.EVM="C-Chain",n))(B||{});var gt=a(({tx:e,symbol:t,network:r,signerAccount:n})=>{let o=[],{txFee:s,nodeID:i,start:c,end:l,stake:d}=e,p={items:[V("Account",n),oe("Network",{name:r.chainName,logoUri:r.logoUri})]};o.push(p);let m=[v("Node",i),h("Stake Amount",d,9,t),E("Start",c),E("End",l)];return o.push({title:"Staking Details",items:m}),s&&o.push({title:"Network Fee",items:[h("Fee Amount",s,9,t)]}),o},"addPermissionlessDelegatorDetailSection");var ft=a(({tx:e,symbol:t,network:r,signerAccount:n})=>{let o=[],{txFee:s,nodeID:i,delegationFee:c,start:l,end:d,stake:p}=e,m={items:[V("Account",n),oe("Network",{name:r.chainName,logoUri:r.logoUri})]};o.push(m);let u=[v("Node",i)];return u.push(h("Stake Amount",p,9,t),T("Delegation Fee",`${c/1e4} %`),E("Start",l),E("End",d)),o.push({title:"Staking Details",items:u}),s&&o.push({title:"Network Fee",items:[h("Fee Amount",s,9,t)]}),o},"addPermissionlessValidatorDetailSection");var yt=a((e,t)=>{let r=[],{txFee:n,nodeID:o,start:s,end:i,subnetID:c}=e,l=[v("Subnet ID",c),v("Node ID",o),E("Start Date",s),E("End Date",i)];return r.push({title:"Staking Details",items:l}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"addSubnetValidatorDetailSection");var xt=a((e,t)=>{let r=[],{txFee:n,chainID:o,managerAddress:s,subnetID:i,validators:c}=e,l=[v("Subnet ID",i),v("Chain ID",o),V("Manager Address",s)];return r.push({title:"L1 Details",items:l}),c.forEach(({balance:d,stake:p,nodeId:m,remainingBalanceOwners:u,deactivationOwners:y},f)=>{let I=[v("Node ID",m),h("Balance",d,9,t),h("Stake",p,9,t)];y.length>0&&I.push(T(`${y.length>1?"Owners":"Owner"} Able to Deactivate`,y.join(`
14
+ `),"vertical")),u.length>0&&I.push(T(`${u.length>1?"Owners":"Owner"} of the Remaining Balance`,u.join(`
15
+ `),"vertical")),r.push({title:f===0?"Validators":void 0,items:I});}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"convertSubnetToL1DetailSection");var At=a((e,t)=>{let r=[],{txFee:n,amount:o,chain:s,destination:i,type:c}=e;return r.push({items:[T("Source Chain",`Avalanche ${B[s]}`),T("Target Chain",`Avalanche ${B[i]}`)]}),r.push({items:[T("Transaction Type",c?(c[0]||"").toUpperCase()+c.slice(1):""),h("Amount",o,9,t)]}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"exportDetailSection");var Tt=a((e,t)=>{let r=[],{txFee:n,amount:o,chain:s,source:i,type:c}=e;return r.push({items:[T("Source Chain",`Avalanche ${B[i]}`),T("Destination Chain",`Avalanche ${B[s]}`)]}),r.push({items:[T("Transaction Type",c?(c[0]||"").toUpperCase()+c.slice(1):""),h("Amount",o,9,t)]}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"importDetailSection");var vt=a((e,t)=>{let r=[],{txFee:n,nodeID:o,subnetID:s}=e,i=[v("Node ID",o),v("Subnet ID",s)];return r.push({title:"Staking Details",items:i}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"removeSubnetValidatorDetailSection");var It=a((e,t)=>{let r=[],{txFee:n,chain:o,outputs:s,memo:i}=e;return r.push({title:"Chain Details",items:[T("Active chain",`Avalanche ${B[o]}`)]}),s.forEach((c,l)=>{let d=c.owners.flatMap(p=>[V("To",p),h("Amount",c.amount,9,t)]);c.owners.length>1&&d.push(T("Threshold",c.threshold.toString())),r.push({title:l===0?"Balance Change":void 0,items:d});}),o!==PVM&&i&&r.push({title:"Memo",items:[i]}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"chainDetailSection");var Dt=a((e,t)=>{let r=[],{txFee:n,threshold:o,controlKeys:s}=e;return r.push({title:"L1 Details",items:[Wt(s.length>1?"Owners":"Owner",s),T("Signature Threshold",`${o}/${s.length}`,"horizontal")]}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"subnetDetailSection");var Ia=a(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}},"formatGenesisData"),St=a((e,t)=>{let r=[],{txFee:n,chainID:o,chainName:s,vmID:i,genesisData:c}=e,l=[T("Blockchain name",s,"vertical"),T("Blockchain ID",o,"vertical"),T("Virtual Machine ID",i,"vertical"),at("Genesis Data",Ia(c))];return r.push({title:"Blockchain Details",items:l}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"blockChainDetailSection");var kt=a((e,t)=>{let r=[],{txFee:n,validationId:o}=e,s=[v("Validation ID",o)];return r.push({title:"L1 Details",items:s}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"disableL1ValidatorDetailSection");var Pt=a((e,t)=>{let r=[],{txFee:n,balance:o,validationId:s}=e,i=[v("Validation ID",s),h("Increase by amount",o,9,t)];return r.push({title:"L1 Details",items:i}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"increaseL1ValidatorBalanceDetailSection");var bt=a((e,t)=>{let r=[],{txFee:n,balance:o}=e,s=[h("Initial balance",o,9,t)];return r.push({title:"L1 Details",items:s}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"registerL1ValidatorDetailSection");var Ct=a((e,t)=>{let r=[],{txFee:n}=e;return n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"setL1ValidatorWeightDetailSection");var Da=60*60*24,pr=1e4,wt=a(({tx:e,symbol:t,network:r,signerAccount:n})=>{let o=[],{txFee:s,nodeID:i,stake:c,delegationFee:l,autoCompoundRewardShares:d,period:p}=e,m={items:[V("Account",n),oe("Network",{name:r.chainName,logoUri:r.logoUri})]};o.push(m);let u=[v("Node",i),h("Stake Amount",c,9,t),T("Delegation fee",`${l/pr} %`),T("Cycle duration",`${Number(p)/Da} days`),T("Compound rewards percentage",`${d/pr} %`)];return o.push({title:"Staking Details",items:u}),s&&o.push({title:"Network Fee",items:[h("Fee Amount",s,9,t)]}),o},"addAutoRenewedValidatorDetailSection");var Sa=60*60*24,ka=1e4,Nt=a((e,t)=>{let r=[],{txFee:n,txId:o,autoCompoundRewardShares:s,period:i}=e,c=[v("Validator Tx ID",o),T("Cycle duration",`${Number(i)/Sa} days`),T("Compound rewards percentage",`${s/ka} %`)];return r.push({title:"Staking Details",items:c}),n&&r.push({title:"Network Fee",items:[h("Fee Amount",n,9,t)]}),r},"setAutoRenewedValidatorConfigDetailSection");var Oe=a((e,t,r)=>{if(cr(e))return It(e,t);if(lt(e))return At(e,t);if(dt(e))return Tt(e,t);if(dr(e))return Dt(e,t);if(it(e)){if(!r)throw new Error("context (network, signerAccount) is required for AddPermissionlessDelegator");return gt({tx:e,symbol:t,network:r.network,signerAccount:r.signerAccount})}else if(ct(e)){if(!r)throw new Error("context (network, signerAccount) is required for AddPermissionlessValidator");return ft({tx:e,symbol:t,network:r.network,signerAccount:r.signerAccount})}else {if(lr(e))return St(e,t);if(pt(e))return yt(e,t);if(mt(e))return vt(e,t);if(ar(e))return xt(e,t);if(nr(e))return kt(e,t);if(or(e))return Pt(e,t);if(sr(e))return bt(e,t);if(ir(e))return Ct(e,t);if(ut(e)){if(!r)throw new Error("context (network, signerAccount) is required for AddAutoRenewedValidator");return wt({tx:e,symbol:t,network:r.network,signerAccount:r.signerAccount})}else if(ht(e))return Nt(e,t)}},"getTransactionDetailSections");var hr=a(e=>e.chainInfo.chainName===PrimaryNetworkChainName.P_CHAIN,"isPChainTransactions"),gr=a(e=>e.chainInfo.chainName===PrimaryNetworkChainName.X_CHAIN,"isXChainTransactions");function ce(e,t,r="tx"){return `${e}/${r}/${t}`}a(ce,"getExplorerAddressByNetwork");function Q({amount:e,decimals:t}){return e===void 0?new G(0):new G(e/10**t)}a(Q,"getTokenValue");var Pa=z$1.object({currentAddress:z$1.string({required_error:"No active account found"}),currentEvmAddress:z$1.string().optional(),xpubXP:z$1.string({invalid_type_error:"xpubXP must be a string"}).optional()}),ba=z$1.object({account:z$1.object({xpAddress:z$1.string({required_error:"XP address is required",invalid_type_error:"XP address must be a string"}),evmAddress:z$1.string().optional(),xpubXP:z$1.string({invalid_type_error:"xpubXP must be a string"}).optional(),externalXPAddresses:z$1.array(z$1.object({index:z$1.number(),address:z$1.string()}))})}),Ca=a(e=>({xpAddress:e.currentAddress,evmAddress:e.currentEvmAddress,xpubXP:e.xpubXP,externalXPAddresses:[]}),"getAccountFromLegacyContext"),wa=a(e=>e.account,"getAccountFromNewContext"),Na=a(e=>e!=null&&typeof e=="object"&&"account"in e&&e.account!=null&&typeof e.account=="object","hasAccountField"),Xe=a(e=>{if(!e)return {success:!1,error:"Missing Avalanche transaction context"};if(Na(e)){let{success:o,data:s,error:i}=ba.safeParse(e);return o?{success:!0,data:wa(s)}:{success:!1,error:i.errors[0]?.message||"Invalid or missing Avalanche transaction context"}}let{success:t,data:r,error:n}=Pa.safeParse(e);return t?{success:!0,data:Ca(r)}:{success:!1,error:n.errors[0]?.message||"Invalid or missing Avalanche transaction context"}},"getAccountFromContext");var yr=a(async({request:e,network:t,approvalController:r,glacierApiUrl:n,appInfo:o})=>{let s=er(e.params);if(!s.success)return {error:rpcErrors.invalidParams(Y("Transaction params are invalid",s.error))};try{let{transactionHex:i,chainAlias:c,externalIndices:l,internalIndices:d,utxos:p}=s.data,m=Avalanche.getVmByChainAlias(c),u=utils.hexToBuffer(i),y=t.isTestnet??!1,f=await S(t),I=Xe(e.context);if(!I.success)return {error:rpcErrors.invalidParams(I.error)};let{xpAddress:b,xpubXP:L,externalXPAddresses:R}=I.data,he=Ue({utxoHexes:p,vm:m}),te=he.length?he:await Avalanche.getUtxosByTxFromGlacier({transactionHex:i,chainAlias:c,network:y?Network.FUJI:Network.MAINNET,url:n,token:X(),headers:J(o)}),re;if(c==="C")re=await Avalanche.createAvalancheEvmUnsignedTx({txBytes:u,vm:m,utxos:te,fromAddress:b});else {let xe=utils.unpackWithManager(m,u);if(L!==void 0&&typeof L!="string")return {error:rpcErrors.invalidParams("xpubXP must be a string")};let Ke=await st({indices:l??[],chainAlias:c,isChange:!1,network:t,xpubXP:L,externalXPAddresses:R}),zr=await st({indices:d??[],chainAlias:c,isChange:!0,network:t,xpubXP:L,externalXPAddresses:R}),Yr=[...new Set([b,...Ke,...zr])].map(Qr=>utils.parse(Qr)[2]);re=await Avalanche.createAvalancheUnsignedTx({tx:xe,utxos:te,provider:f,fromAddressBytes:Yr});}let ge=await Avalanche.parseAvalancheTx(re,f,b),Ne=Fe(ge),fe=rr(ge);if(ge.type==="unknown"||Ne===void 0)return {error:rpcErrors.internal("Unable to parse transaction data. Unsupported tx type")};let Re={type:RpcMethod.AVALANCHE_SEND_TRANSACTION,unsignedTxJson:JSON.stringify(re.toJSON()),data:ge,vm:m,externalIndices:l,internalIndices:d},Ve=Oe(Ne,t.networkToken.symbol,{network:t,signerAccount:b});if(Ve===void 0)return {error:rpcErrors.internal("Unable to parse transaction display data. Unsupported tx type")};let Ee={title:fe,network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},details:Ve,networkFeeSelector:!1},ye=await r.requestApproval({request:e,displayData:Ee,signingData:Re});if("error"in ye)return {error:ye.error};let _;try{_=await Ba(f,ye,m);}catch(xe){return {error:rpcErrors.internal(Y("Unable to broadcast transaction",xe))}}return Ma({explorerUrl:t.explorerUrl??"",provider:f,txHash:_,vm:m,onTransactionPending:r.onTransactionPending,onTransactionConfirmed:r.onTransactionConfirmed,onTransactionReverted:r.onTransactionReverted,request:e}),{result:_}}catch(i){return console.error(i),{error:rpcErrors.internal(Y("Unable to create transaction",i))}}},"avalancheSendTransaction"),Ba=a(async(e,t,r)=>{if("txHash"in t)return t.txHash;let{txID:n}=await e.issueTxHex(t.signedData,r);return n},"getTxHash"),Ma=a(async({explorerUrl:e,provider:t,txHash:r,vm:n,onTransactionPending:o,onTransactionConfirmed:s,onTransactionReverted:i,request:c})=>{let d=ce(e,r);try{o({txHash:r,request:c,explorerLink:d}),n===PVM?(await $({operation:()=>t.getApiP().getTxStatus({txID:r}),isSuccess:m=>["Committed","Dropped"].includes(m.status),maxRetries:7})).status==="Committed"?s({txHash:r,explorerLink:d,request:c}):i({txHash:r,request:c}):n===AVM?(await $({operation:()=>t.getApiX().getTxStatus({txID:r}),isSuccess:m=>["Accepted","Rejected"].includes(m.status),maxRetries:7})).status==="Accepted"?s({txHash:r,explorerLink:d,request:c}):i({txHash:r,request:c}):(await $({operation:()=>t.getApiC().getAtomicTxStatus(r),isSuccess:m=>["Accepted","Dropped"].includes(m.status),maxRetries:7})).status==="Accepted"?s({txHash:r,explorerLink:d,request:c}):i({txHash:r,request:c});}catch(p){console.error(p),p instanceof Error&&p.message.startsWith("Max retry exceeded.")||i({txHash:r,request:c});}},"waitForTransactionReceipt");var La=z$1.union([z$1.tuple([z$1.string()]).describe("message to sign"),z$1.tuple([z$1.string().describe("message to sign"),z$1.number().nonnegative().describe("account index")])]),xr=a(e=>La.safeParse(e),"parseRequestParams");var Tr=a(async({request:e,network:t,approvalController:r})=>{let n=xr(e.params);if(!n.success)return console.error("invalid params",n.error),{error:rpcErrors.invalidParams(Y("Params are invalid",n.error))};let[o,s]=n.data,i=Buffer.from(o,"utf-8").toString("hex"),c={type:RpcMethod.AVALANCHE_SIGN_MESSAGE,data:i,accountIndex:s},l={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:[o]}]},d=await r.requestApproval({request:e,displayData:l,signingData:c});return "error"in d?{error:d.error}:"signedData"in d?{result:d.signedData}:{error:rpcErrors.internal("No signed data returned")}},"avalancheSignMessage");var Ua=z$1.object({from:z$1.string().optional().describe("Avalanche receiving address"),transactionHex:z$1.string(),chainAlias:z$1.enum(["X","P","C"]),utxos:z$1.string().array().optional()}),vr=a(e=>Ua.safeParse(e),"parseRequestParams");var kr=a(async({vm:e,txBytes:t,utxos:r,currentAddress:n,currentEvmAddress:o,provider:s})=>{let i,c,l=utils.unpackWithManager(e,t);if(evmSerial.isExportTx(l)){let d=l.ins[0]?.address.toHex();if(!o)throw rpcErrors.invalidRequest("Missing EVM address");if(d?.toLowerCase()!==o.toLowerCase())throw new Error("This account has nothing to sign");return Avalanche.createAvalancheEvmUnsignedTx({txBytes:t,vm:e,utxos:r,fromAddress:n})}try{let p=utils.getManagerForVM(e).unpack(t,avaxSerial.SignedTx);evmSerial.isImportTx(l)?c=await Avalanche.createAvalancheEvmUnsignedTx({txBytes:t,vm:e,utxos:r,fromAddress:n}):c=await Avalanche.createAvalancheUnsignedTx({tx:l,provider:s,credentials:p.getCredentials(),utxos:r}),i=l.getSigIndices().map((m,u)=>new Credential(Avalanche.populateCredential(m,{unsignedTx:c,credentialIndex:u})));}catch{i=l.getSigIndices().map(p=>new Credential(Avalanche.populateCredential(p)));}return Avalanche.createAvalancheUnsignedTx({tx:l,provider:s,credentials:i,utxos:r})},"getUnsignedOrPartiallySignedTx");var br=a(async({request:e,network:t,approvalController:r,glacierApiUrl:n,appInfo:o})=>{let s=vr(e.params);if(!s.success)return console.error("invalid params",s.error),{error:rpcErrors.invalidParams("Params are invalid")};let{transactionHex:i,chainAlias:c,from:l,utxos:d}=s.data,p=Avalanche.getVmByChainAlias(c),m=t.isTestnet??!1,u=await S(t),y=Xe(e.context);if(!y.success)return {error:rpcErrors.invalidParams(y.error)};let{xpAddress:f,evmAddress:I}=y.data,b=Ue({utxoHexes:d,vm:p}),L=b.length?b:await Avalanche.getUtxosByTxFromGlacier({transactionHex:i,chainAlias:c,network:m?Network.FUJI:Network.MAINNET,url:n,token:X(),headers:J(o)}),R=await kr({txBytes:utils.hexToBuffer(i),vm:p,utxos:L,currentAddress:f,currentEvmAddress:I,provider:u}),he=utils.addressesFromBytes([utils.parse(l??f)[2]])[0];if(!he)return {error:rpcErrors.invalidRequest("Missing signer address")};let te=R.getSigIndicesForAddress(he);if(!te)return {error:rpcErrors.invalidRequest("This account has nothing to sign")};let re=R.getSigIndices();if(!te.some(([xe,Ke])=>re[xe]?.includes(Ke)))return {error:rpcErrors.invalidRequest("This account has nothing to sign")};let Ne=l??f,fe=await Avalanche.parseAvalancheTx(R,u,l??f),Re=Fe(fe);if(fe.type==="unknown"||Re===void 0)return {error:rpcErrors.invalidParams("Unable to parse transaction data. Unsupported tx type")};let Ve={type:RpcMethod.AVALANCHE_SIGN_TRANSACTION,data:fe,vm:p,unsignedTxJson:JSON.stringify(R.toJSON()),ownSignatureIndices:te},Ee=Oe(Re,t.networkToken.symbol,{network:t,signerAccount:Ne});if(Ee===void 0)return {error:rpcErrors.internal("Unable to parse transaction display data. Unsupported tx type")};let ye={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:Ee},_=await r.requestApproval({request:e,displayData:ye,signingData:Ve});return "error"in _?{error:_.error}:"signedData"in _?{result:_.signedData}:{error:rpcErrors.invalidRequest("No signed data returned")}},"avalancheSignTransaction");var ee=a(({accountIndex:e,derivationPathType:t,addressIndex:r=0})=>{if(e<0)throw rpcErrors.invalidParams("Account index must be a non-negative integer");if(r!==void 0&&r<0)throw rpcErrors.invalidParams("Address index must be a non-negative integer");switch(t){case"bip44":return {[NetworkVMType.AVM]:`m/44'/9000'/${e}'/0/${r}`,[NetworkVMType.CoreEth]:`m/44'/60'/0'/0/${e}`};case"ledger_live":return {[NetworkVMType.AVM]:`m/44'/9000'/${e}'/0/${r}`,[NetworkVMType.CoreEth]:`m/44'/60'/${e}'/0/0`};default:throw rpcErrors.invalidParams(`Unsupported derivation path type: ${t}`)}},"buildDerivationPath");var Mt=a(e=>"derivationPathType"in e&&"accountIndex"in e&&typeof e.accountIndex=="number"&&typeof e.derivationPathType=="string","hasDerivationDetails");var Cr=a(async e=>{let{approvalController:t,network:r,secretId:n}=e,o=Mt(e)?ee(e).AVM:void 0,s=Mt(e)?ee(e).CoreEth:void 0,i=await S(r),c=await t.requestPublicKey({curve:"secp256k1",secretId:n,derivationPath:o}).catch(()=>null),l=await t.requestPublicKey({curve:"secp256k1",secretId:n,derivationPath:s}).catch(()=>null),d=l?{[NetworkVMType.CoreEth]:i.getAddress(Buffer.from(l,"hex"),"C")}:{},p=c?{[NetworkVMType.AVM]:i.getAddress(Buffer.from(c,"hex"),"X"),[NetworkVMType.PVM]:i.getAddress(Buffer.from(c,"hex"),"P")}:{};return {...d,...p}},"deriveAddress");var wr=a(async e=>{let{approvalController:t,network:r,secretId:n,accountIndices:o,derivationPathType:s,addressIndex:i}=e;if(o.length===0)return [];await init();let c=await Promise.all(o.map(async d=>{let p=ee({accountIndex:d,derivationPathType:s,addressIndex:i}),[m,u]=await Promise.all([t.requestPublicKey({curve:"secp256k1",secretId:n,derivationPath:p.AVM}),t.requestPublicKey({curve:"secp256k1",secretId:n,derivationPath:p.CoreEth})]);return {xp:Uint8Array.from(Buffer.from(m,"hex")),evm:Uint8Array.from(Buffer.from(u,"hex"))}}));return (await deriveAddressesForAvalanche(c.map(d=>d.xp),c.map(d=>d.evm),!!r.isTestnet)).map(d=>({[NetworkVMType.AVM]:d.x,[NetworkVMType.PVM]:d.p,[NetworkVMType.CoreEth]:d.coreEth}))},"deriveAddresses");var Rr=a(async({accountIndex:e,xpubXP:t,walletType:r,network:n})=>{if(!n)throw rpcErrors.invalidParams("network is required to get address");if(t===void 0)throw rpcErrors.invalidParams("xpubXP is required to get address");let o=await S(n),s;switch(r){case WalletType.Mnemonic:case WalletType.Ledger:case WalletType.Keystone:{s=Avalanche.getAddressPublicKeyFromXpub(t,e);break}case WalletType.LedgerLive:case WalletType.Seedless:{s=Buffer.from(t,"hex");break}default:throw rpcErrors.invalidParams(`Unsupported wallet type: ${r}`)}return {[NetworkVMType.AVM]:o.getAddress(s,"X"),[NetworkVMType.PVM]:o.getAddress(s,"P")}},"getAddress");var Ft=class Ft extends Error{constructor(){super(...arguments);q(this,"message","Glacier is unhealthy. Try again later.");}};a(Ft,"GlacierUnhealthyError");var Ge=Ft,Ot=class Ot{constructor({glacierApiUrl:t,headers:r}){q(this,"glacierSdk");q(this,"isGlacierHealthy",!0);q(this,"isHealthy",a(()=>this.isGlacierHealthy,"isHealthy"));this.glacierSdk=new Glacier({BASE:t,HEADERS:r},ve);}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 Ge&&this.setGlacierToUnhealthy(),r}}async getChainBalance(t){try{return this.glacierSdk.primaryNetworkBalances.getBalancesByAddresses(t)}catch(r){throw r instanceof Ge&&this.setGlacierToUnhealthy(),r}}};a(Ot,"AvalancheGlacierService");var qe=Ot;var Vr=a(e=>Object.keys(e).includes("unlockedUnstaked"),"isPchainBalance"),Er=a(e=>Object.keys(e).includes("locked"),"isXchainBalance");function $e(e,t){let r=Object.values(e).reduce(function(n,o){let s=o.reduce(function(i,c){if(c.assetId!==t)return i;let l=Number(c.amount);return i+l},0);return n+s},0);return BigInt(r)}a($e,"calculateAvaxTotalBalance");var Mr=a(({balance:e,networkToken:t,priceInCurrency:r,marketCap:n,vol24:o,change24:s,coingeckoId:i,avaxAssetId:c})=>{let l={},d={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 d){let I=d[f];if(!I||!I.length){l[f]=0n;continue}I.forEach(b=>{if(b.assetId!==c)return;let R=(l[f]??0n)+BigInt(b.amount);l[f]=R;});}let p=new TokenUnit(l.unlockedUnstaked?l.unlockedUnstaked:0n,t.decimals,t.symbol),m=r?p.mul(r).toDisplay({fixedDp:2,asNumber:!0}):void 0,u=new TokenUnit($e(e,c),t.decimals,t.symbol),y=r?u.mul(r).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {...t,type:TokenType.NATIVE,priceInCurrency:r,balance:u.toSubUnit(),balanceInCurrency:y,balanceDisplayValue:u.toDisplay(),balanceCurrencyDisplayValue:y?.toFixed(2),available:p.toSubUnit(),availableInCurrency:m,availableDisplayValue:p.toDisplay(),availableCurrencyDisplayValue:m?.toFixed(2),utxos:e,balancePerType:{lockedStaked:l.lockedStaked,lockedStakeable:l.lockedStakeable,lockedPlatform:l.lockedPlatform,atomicMemoryLocked:l.atomicMemoryLocked,atomicMemoryUnlocked:l.atomicMemoryUnlocked,unlockedUnstaked:l.unlockedUnstaked,unlockedStaked:l.unlockedStaked,pendingStaked:l.pendingStaked},marketCap:n,vol24:o,change24:s,coingeckoId:i}},"convertPChainBalance");var _r=a(({balance:e,networkToken:t,priceInCurrency:r,marketCap:n,vol24:o,change24:s,coingeckoId:i,avaxAssetId:c})=>{let l={},d={unlocked:e.unlocked,locked:e.locked,atomicMemoryUnlocked:e.atomicMemoryUnlocked,atomicMemoryLocked:e.atomicMemoryLocked};for(let f in d){let I=d[f];if(!I||!I.length){l[f]=0n;continue}I.forEach(b=>{if(b.assetId!==c)return;let R=(l[f]??0n)+BigInt(b.amount);l[f]=R;});}let p=new TokenUnit(l.unlocked?l.unlocked:0n,t.decimals,t.symbol),m=r?p.mul(r).toDisplay({fixedDp:2,asNumber:!0}):void 0,u=new TokenUnit($e(e,c),t.decimals,t.symbol),y=r!==void 0?u.mul(r):void 0;return {...t,coingeckoId:i,type:TokenType.NATIVE,priceInCurrency:r,balance:u.toSubUnit(),balanceInCurrency:y?.toDisplay({fixedDp:2,asNumber:!0}),balanceDisplayValue:u.toDisplay(),balanceCurrencyDisplayValue:y?.toDisplay({fixedDp:2}),available:p.toSubUnit(),availableInCurrency:m,availableDisplayValue:p.toDisplay(),availableCurrencyDisplayValue:m?.toFixed(2),utxos:e,balancePerType:{unlocked:l.unlocked,locked:l.locked,atomicMemoryUnlocked:l.atomicMemoryUnlocked,atomicMemoryLocked:l.atomicMemoryLocked},marketCap:n,vol24:o,change24:s}},"convertXChainBalance");var Or=a(async({addresses:e,currency:t,network:r,glacierService:n,tokenService:o})=>{let s=await S(r);if(!n.isHealthy())return Promise.reject("Glacier is unhealthy. Try again later.");let c=t.toLowerCase(),l=e[0]??"",d=r.networkToken,p=r.pricingProviders?.coingecko.nativeTokenId,m=r.vmName===NetworkVMType.PVM?BlockchainId.P_CHAIN:BlockchainId.X_CHAIN,u=r.isDevnet?null:r.isTestnet?Network.FUJI:Network.MAINNET;if(!u)return Promise.reject("Glacier does not supported local devnets");let y=await n.getChainBalance({blockchainId:m,network:u,addresses:e.join(",")}).then(b=>b.balances),f=await o.getWatchlistDataForToken({tokenDetails:{symbol:r.networkToken.symbol,isNative:!0,caip2Id:r.caipId??""},currency:c}),I;return Vr(y)?(I=Mr({balance:y,networkToken:d,priceInCurrency:f.priceInCurrency??void 0,marketCap:f.marketCap??void 0,vol24:f.vol24??void 0,change24:f.change24??void 0,coingeckoId:p??"",avaxAssetId:s.getContext().avaxAssetID}),{[l]:{[d.symbol]:I}}):Er(y)?(I=_r({balance:y,networkToken:d,priceInCurrency:f.priceInCurrency??void 0,marketCap:f.marketCap??void 0,vol24:f.vol24??void 0,change24:f.change24??void 0,coingeckoId:p??"",avaxAssetId:s.getContext().avaxAssetID}),{[l]:{[d.symbol]:I}}):Promise.reject("Incorrect type balance was returned from glacier")},"getBalances");async function Xr(e){let{vmName:t}=e,r=await S(e);if(t===NetworkVMType.AVM)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)),c=1+s,l=1+i;return {baseFee:n,low:{maxFeePerGas:n},medium:{maxFeePerGas:n*BigInt(Math.round(100*c))/100n},high:{maxFeePerGas:n*BigInt(Math.round(100*l))/100n},isFixedFee:!1}}a(Xr,"getNetworkFee");function Gr({tx:e,address:t,networkToken:r,chainId:n,explorerUrl:o,isTestnet:s}){let i=new Set(e.consumedUtxos.flatMap(u=>u.addresses)||[]),c=new Set(e.emittedUtxos.flatMap(u=>u.addresses)||[]),l=Ya({tx:e,isTestnet:s,networkToken:r,froms:i}),d=Qa({tx:e,isTestnet:s,networkToken:r}),p=t.toLowerCase().startsWith("p-")?t.slice(2):t,m=i.has(p);return {hash:e.txHash,isContractCall:!1,isIncoming:!m,isOutgoing:m,from:[...i.values()].join(","),to:[...c.values()].join(","),isSender:m,timestamp:e.blockTimestamp*1e3,tokens:[{decimal:r.decimals.toString(),name:r.name,symbol:r.symbol,type:TokenType.NATIVE,amount:l.toString()}],gasUsed:d.toString(),explorerLink:ce(o??"",e.txHash,"tx"),txType:e.txType,chainId:n.toString()}}a(Gr,"convertPChainTransaction");function Ya({tx:e,isTestnet:t,networkToken:r,froms:n}){let o=["ImportTx","ExportTx"].includes(e.txType),s=e.txType==="BaseTx",i=e.emittedUtxos.filter(u=>u.asset.assetId===ke(!!t)&&!u.addresses.some(y=>n.has(y))).reduce((u,y)=>u.add(y.asset.amount),new G(0)),c=e.value.find(u=>u.assetId===ke(!!t))?.amount,l=i.gt(new G(0))?i:c?new G(c):new G(0)??new G(0),d=t?Avalanche.FujiContext.pBlockchainID:Avalanche.MainnetContext.pBlockchainID,p=e.emittedUtxos.filter(u=>u.asset.assetId===ke(!!t)&&(e.txType==="ImportTx"&&u.consumedOnChainId===d||e.txType==="ExportTx"&&u.consumedOnChainId!==d)).reduce((u,y)=>u.add(y.amount),new G(0)),m=s?l:o?p:e.amountStaked.length===0?Hr(e.value,!!t):Hr(e.amountStaked,!!t);return Q({amount:m?.toNumber(),decimals:r.decimals})}a(Ya,"getAmount");function Qa({tx:e,isTestnet:t,networkToken:r}){let n=e.amountBurned?.filter(o=>o.assetId===ke(!!t)).reduce((o,s)=>o.add(s.amount),new G(0));return Q({amount:n?.toNumber(),decimals:r.decimals})}a(Qa,"getBurnedAmount");function Hr(e,t){return e.filter(r=>r.assetId===ke(t)).reduce((r,n)=>r.add(n.amount),new G(0))}a(Hr,"aggregateValue");function ke(e){return e?Avalanche.FujiContext.avaxAssetID:Avalanche.MainnetContext.avaxAssetID}a(ke,"getAvaxAssetId");function qr({tx:e,address:t,networkToken:r,chainId:n,explorerUrl:o,isTestnet:s}){let i=new Set(e.consumedUtxos.flatMap(f=>f.addresses)||[]),c=new Set(e.emittedUtxos.flatMap(f=>f.addresses)||[]),l=t.toLowerCase().startsWith("x-")?t.slice(2):t,d=["ImportTx","ExportTx"].includes(e.txType),{amount:p,isSender:m}=en({tx:e,isTestnet:s,networkToken:r,chainAddress:l,isImportExport:d}),u=tn({isTestnet:s,tx:e,networkToken:r}),y=d?p.toString():m?p.minus(u).toString():p.toString();return {hash:e.txHash,isContractCall:!1,isIncoming:!m,isOutgoing:m,from:[...i.values()].join(","),to:[...c.values()].join(","),isSender:m,timestamp:e.timestamp*1e3,tokens:[{decimal:r.decimals.toString(),name:r.name,symbol:r.symbol,type:TokenType.NATIVE,amount:y}],gasUsed:u.toString(),explorerLink:ce(o??"",e.txHash,"tx"),txType:e.txType,chainId:n.toString()}}a(qr,"convertXChainTransaction");function en({tx:e,isTestnet:t,networkToken:r,chainAddress:n,isImportExport:o}){if(o){let d=t?Avalanche.FujiContext.xBlockchainID:Avalanche.MainnetContext.xBlockchainID,p=e.emittedUtxos.filter(m=>m.asset.assetId===be(!!t)&&(e.txType==="ImportTx"&&m.consumedOnChainId===d||e.txType==="ExportTx"&&m.consumedOnChainId!==d)).reduce((m,u)=>m.add(u.asset.amount),new G(0));return {amount:Q({amount:p.toNumber(),decimals:r.decimals}),isSender:!0}}let s=e.consumedUtxos.filter(d=>d.asset.assetId===be(!!t)&&d.addresses.includes(n)).reduce((d,p)=>d.add(p.asset.amount),new G(0)),i=e.emittedUtxos.filter(d=>d.asset.assetId===be(!!t)&&d.addresses.includes(n)).reduce((d,p)=>d.add(p.asset.amount),new G(0)),c=s.gte(i),l=c?s.minus(i):i.minus(s);return {amount:Q({amount:l.toNumber(),decimals:r.decimals}),isSender:c}}a(en,"getAmount");function tn({isTestnet:e,tx:t,networkToken:r}){let n=t.amountUnlocked.filter(i=>i.assetId===be(!!e)).reduce((i,c)=>i.add(c.amount),new G(0)),o=t.amountCreated.filter(i=>i.assetId===be(!!e)).reduce((i,c)=>i.add(c.amount),new G(0)),s=n.minus(o);return Q({amount:s.toNumber(),decimals:r.decimals})}a(tn,"getBurnedAmount");function be(e){return e?Avalanche.FujiContext.avaxAssetID:Avalanche.MainnetContext.avaxAssetID}a(be,"getAvaxAssetId");var jr=a(async({address:e,nextPageToken:t,offset:r,network:n,glacierService:o})=>{let{isTestnet:s,networkToken:i,explorerUrl:c,chainId:l}=n;if(!o.isHealthy())return {transactions:[],nextPageToken:""};let p=n.isTestnet?Network.FUJI:Network.MAINNET,m=await o.listLatestPrimaryNetworkTransactions({addresses:e,blockchainId:an(e),network:p,pageSize:r,pageToken:t,sortOrder:SortOrder.DESC}),u=[];return hr(m)&&(u=m.transactions.map(y=>Gr({tx:y,isTestnet:s,address:e,networkToken:i,explorerUrl:c,chainId:l}))),gr(m)&&(u=m.transactions.map(y=>qr({tx:y,isTestnet:s,address:e,networkToken:i,explorerUrl:c,chainId:l}))),{transactions:u,nextPageToken:m.nextPageToken}},"getTransactionHistory"),an=a(e=>e.split(",")[0]?.toLowerCase().startsWith("p-")?BlockchainId.P_CHAIN:BlockchainId.X_CHAIN,"getBlockchainIdByAddress");function Kr({blockchainId:e,isTestnet:t}){let r=t?"fuji"+e:e,n=nn.createHash("sha256").update(r).digest("base64");return "avax:"+on(n).substring(0,32)}a(Kr,"hashBlockchainId");var on=a(e=>e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,""),"convertBase64ToBase64Url");var pe,Ce,me,M,ue,we,Ht=class Ht{constructor({approvalController:t,environment:r,appInfo:n,runtime:o}){D(this,pe,void 0);D(this,Ce,void 0);D(this,me,void 0);D(this,M,void 0);D(this,ue,void 0);D(this,we,void 0);let{glacierApiUrl:s,proxyApiUrl:i}=Zt(r);C(this,ue,n),C(this,we,o),C(this,pe,new qe({glacierApiUrl:s,headers:J(n)})),C(this,Ce,i),C(this,me,s),C(this,M,t);}getProvider(t){return S(t)}getAddress({accountIndex:t,xpubXP:r,walletType:n,network:o}){return Rr({accountIndex:t,xpubXP:r,walletType:n,network:o})}getBalances({addresses:t,network:r,storage:n,currency:o}){let s=new Te({storage:n,proxyApiUrl:x(this,Ce),fetch:x(this,we)?.fetch});return Or({addresses:t,currency:o,network:r,glacierService:x(this,pe),tokenService:s})}getManifest(){let t=parseManifest(Yt);return t.success?t.data:void 0}getNetworkFee(t){return Xr(t)}getTransactionHistory({network:t,address:r,nextPageToken:n,offset:o}){return jr({network:t,address:r,nextPageToken:n,offset:o,glacierService:x(this,pe)})}getTokens(t){return Promise.resolve([])}buildDerivationPath(t){return ee(t)}async deriveAddress(t){return Cr({...t,approvalController:x(this,M)})}async deriveAddresses(t){return wr({...t,approvalController:x(this,M)})}async onRpcRequest(t,r){switch(t.method){case RpcMethod.AVALANCHE_SIGN_MESSAGE:return Tr({request:t,network:r,approvalController:x(this,M)});case RpcMethod.AVALANCHE_SIGN_TRANSACTION:return br({request:t,network:r,approvalController:x(this,M),glacierApiUrl:x(this,me),appInfo:x(this,ue)});case RpcMethod.AVALANCHE_SEND_TRANSACTION:return yr({request:t,network:r,approvalController:x(this,M),glacierApiUrl:x(this,me),appInfo:x(this,ue)});default:return {error:rpcErrors.methodNotSupported(`Method ${t.method} not supported`)}}}static getHashedBlockchainId({blockchainId:t,isTestnet:r}){return Kr({blockchainId:t,isTestnet:r})}};pe=new WeakMap,Ce=new WeakMap,me=new WeakMap,M=new WeakMap,ue=new WeakMap,we=new WeakMap,a(Ht,"AvalancheModule");var Jr=Ht;var Ud=a(e=>"balancePerType"in e&&"unlockedUnstaked"in e.balancePerType,"isTokenWithBalancePVM"),Fd=a(e=>"balancePerType"in e&&"unlocked"in e.balancePerType,"isTokenWithBalanceAVM");
16
16
 
17
- export { Kr as AvalancheModule, ut as isAddAutoRenewedValidatorTx, it as isAddPermissionlessDelegatorTx, ct as isAddPermissionlessValidatorTx, pt as isAddSubnetValidatorTx, xa as isBaseTx, lr as isBlockchainDetails, cr as isChainDetails, ar as isConvertSubnetToL1Tx, Aa as isCreateChainTx, Ta as isCreateSubnetTx, nr as isDisableL1ValidatorTx, Wo as isExportImportTxDetails, lt as isExportTx, dt as isImportTx, or as isIncreaseL1ValidatorBalanceTx, sr as isRegisterL1ValidatorTx, mt as isRemoveSubnetValidatorTx, ht as isSetAutoRenewedValidatorConfigTx, ir as isSetL1ValidatorWeightTx, $o as isStakingDetails, dr as isSubnetDetails, Bd as isTokenWithBalanceAVM, Ed as isTokenWithBalancePVM };
17
+ export { Jr as AvalancheModule, ut as isAddAutoRenewedValidatorTx, it as isAddPermissionlessDelegatorTx, ct as isAddPermissionlessValidatorTx, pt as isAddSubnetValidatorTx, xa as isBaseTx, lr as isBlockchainDetails, cr as isChainDetails, ar as isConvertSubnetToL1Tx, Aa as isCreateChainTx, Ta as isCreateSubnetTx, nr as isDisableL1ValidatorTx, Yo as isExportImportTxDetails, lt as isExportTx, dt as isImportTx, or as isIncreaseL1ValidatorBalanceTx, sr as isRegisterL1ValidatorTx, mt as isRemoveSubnetValidatorTx, ht as isSetAutoRenewedValidatorConfigTx, ir as isSetL1ValidatorWeightTx, zo as isStakingDetails, dr as isSubnetDetails, Fd as isTokenWithBalanceAVM, Ud as isTokenWithBalancePVM };
18
18
  //# sourceMappingURL=out.js.map
19
19
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@avalabs/avalanche-module",
3
- "version": "3.12.0",
3
+ "version": "3.13.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/ava-labs/core-vm-modules",
@@ -29,7 +29,7 @@
29
29
  "big.js": "6.2.1",
30
30
  "bn.js": "5.2.1",
31
31
  "zod": "3.23.8",
32
- "@avalabs/vm-module-types": "3.12.0"
32
+ "@avalabs/vm-module-types": "3.13.0"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@types/big.js": "6.2.2",