@avalabs/avalanche-module 0.11.11 → 0.11.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -17,8 +17,8 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
17
17
  var N__default = /*#__PURE__*/_interopDefault(N);
18
18
  var xa__default = /*#__PURE__*/_interopDefault(xa);
19
19
 
20
- var Gt=Object.defineProperty;var Ft=(e,t,a)=>t in e?Gt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a;var U=(e,t,a)=>(Ft(e,typeof t!="symbol"?t+"":t,a),a),ze=(e,t,a)=>{if(!t.has(e))throw TypeError("Cannot "+a)};var f=(e,t,a)=>(ze(e,t,"read from private field"),a?a.call(e):t.get(e)),S=(e,t,a)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,a);},b=(e,t,a,n)=>(ze(e,t,"write to private field"),n?n.call(e,a):t.set(e,a),a);var Ye={name:"Avalanche",description:"",version:"0.0.1",sources:{module:{checksum:"",location:{npm:{filePath:"dist/bundle.js",packageName:"@avalabs/avalanche-module",registry:"https://registry.npmjs.org"}}},provider:{checksum:"",location:{npm:{filePath:"dist/provider.js",packageName:"@avalabs/avalanche-module",registry:"https://registry.npmjs.org"}}}},network:{chainIds:["avax:8aDU0Kqh-5d23op-B-r-4YbQFRbsgF9a","avax:YRLfeDBJpfEqUWe2FYR1OpXsnDDZeKWd","avax:Rr9hnPVPxuUvrdCul-vjEsU1zmqKqRDo","avax:Sj7NVE3jXTbJvwFAiu7OEUo_8g8ctXMG","avax:imji8papUf2EhV3le337w1vgFauqkJg-","avax:8AJTpRj3SAqv1e80Mtl9em08LhvKEbkl"],namespaces:["avax"]},cointype:"9000",permissions:{rpc:{dapps:!0,methods:["avalanche_sendTransaction","avalanche_signTransaction","avalanche_signMessage"]}},manifestVersion:"0.0"};var k=async({isTestnet:e,isDevnet:t})=>{let a=t?coreChainsSdk.AVALANCHE_P_DEV_NETWORK:e?coreChainsSdk.AVALANCHE_XP_TEST_NETWORK:coreChainsSdk.AVALANCHE_XP_NETWORK,n=await new avalanchejs.info.InfoApi(a.rpcUrl).getUpgradesInfo().catch(()=>{});return t?coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultDevnetProvider(n):e?coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultFujiProvider(n):coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultMainnetProvider(n)};async function Ze({isTestnet:e,isDevnet:t,vmName:a}){let n=await k({isTestnet:e,isDevnet:t});if(a===vmModuleTypes.NetworkVMType.AVM||!n.isEtnaEnabled())return {baseFee:BigInt(1e6),low:{maxFeePerGas:BigInt(1e6)},medium:{maxFeePerGas:BigInt(1e6)},high:{maxFeePerGas:BigInt(1e6)},isFixedFee:!0};let{price:r}=await n.getApiP().getFeeState(),s=100/Number(r)/100,i=Math.min(1,Math.max(s,.15)),o=Math.min(1,Math.max(s*2,.3)),l=1+i,c=1+o;return {baseFee:r,low:{maxFeePerGas:r},medium:{maxFeePerGas:r*BigInt(Math.round(100*l))/100n},high:{maxFeePerGas:r*BigInt(Math.round(100*c))/100n},isFixedFee:!1}}var tt=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.P_CHAIN,at=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.X_CHAIN;function he(e,t,a="tx"){return `${e}/${a}/${t}`}function _({amount:e,decimals:t}){return e===void 0?new N__default.default(0):new N__default.default(e/10**t)}function rt({tx:e,address:t,networkToken:a,chainId:n,explorerUrl:r,isTestnet:s}){let i=new Set(e.consumedUtxos.flatMap(p=>p.addresses)||[]),o=new Set(e.emittedUtxos.flatMap(p=>p.addresses)||[]),l=zt({tx:e,isTestnet:s,networkToken:a,froms:i}),c=Yt({tx:e,isTestnet:s,networkToken:a}),u=t.toLowerCase().startsWith("p-")?t.slice(2):t,m=i.has(u);return {hash:e.txHash,isContractCall:!1,isIncoming:!m,isOutgoing:m,from:[...i.values()].join(","),to:[...o.values()].join(","),isSender:m,timestamp:e.blockTimestamp*1e3,tokens:[{decimal:a.decimals.toString(),name:a.name,symbol:a.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:l.toString()}],gasUsed:c.toString(),explorerLink:he(r??"",e.txHash,"tx"),txType:e.txType,chainId:n.toString()}}function zt({tx:e,isTestnet:t,networkToken:a,froms:n}){let r=["ImportTx","ExportTx"].includes(e.txType),s=e.txType==="BaseTx",i=e.emittedUtxos.filter(p=>p.asset.assetId===te(!!t)&&!p.addresses.some(d=>n.has(d))).reduce((p,d)=>p.add(d.asset.amount),new N__default.default(0)),o=e.value.find(p=>p.assetId===te(!!t))?.amount,l=i.gt(new N__default.default(0))?i:o?new N__default.default(o):new N__default.default(0)??new N__default.default(0),c=t?coreWalletsSdk.Avalanche.FujiContext.pBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID,u=e.emittedUtxos.filter(p=>p.asset.assetId===te(!!t)&&(e.txType==="ImportTx"&&p.consumedOnChainId===c||e.txType==="ExportTx"&&p.consumedOnChainId!==c)).reduce((p,d)=>p.add(d.amount),new N__default.default(0)),m=s?l:r?u:e.amountStaked.length===0?nt(e.value,!!t):nt(e.amountStaked,!!t);return _({amount:m?.toNumber(),decimals:a.decimals})}function Yt({tx:e,isTestnet:t,networkToken:a}){let n=e.amountBurned?.filter(r=>r.assetId===te(!!t)).reduce((r,s)=>r.add(s.amount),new N__default.default(0));return _({amount:n?.toNumber(),decimals:a.decimals})}function nt(e,t){return e.filter(a=>a.assetId===te(t)).reduce((a,n)=>a.add(n.amount),new N__default.default(0))}function te(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}function st({tx:e,address:t,networkToken:a,chainId:n,explorerUrl:r,isTestnet:s}){let i=new Set(e.consumedUtxos.flatMap(g=>g.addresses)||[]),o=new Set(e.emittedUtxos.flatMap(g=>g.addresses)||[]),l=t.toLowerCase().startsWith("x-")?t.slice(2):t,c=["ImportTx","ExportTx"].includes(e.txType),{amount:u,isSender:m}=Qt({tx:e,isTestnet:s,networkToken:a,chainAddress:l,isImportExport:c}),p=ea({isTestnet:s,tx:e,networkToken:a}),d=c?u.toString():m?u.minus(p).toString():u.toString();return {hash:e.txHash,isContractCall:!1,isIncoming:!m,isOutgoing:m,from:[...i.values()].join(","),to:[...o.values()].join(","),isSender:m,timestamp:e.timestamp*1e3,tokens:[{decimal:a.decimals.toString(),name:a.name,symbol:a.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:d}],gasUsed:p.toString(),explorerLink:he(r??"",e.txHash,"tx"),txType:e.txType,chainId:n.toString()}}function Qt({tx:e,isTestnet:t,networkToken:a,chainAddress:n,isImportExport:r}){if(r){let c=t?coreWalletsSdk.Avalanche.FujiContext.xBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.xBlockchainID,u=e.emittedUtxos.filter(m=>m.asset.assetId===ne(!!t)&&(e.txType==="ImportTx"&&m.consumedOnChainId===c||e.txType==="ExportTx"&&m.consumedOnChainId!==c)).reduce((m,p)=>m.add(p.asset.amount),new N__default.default(0));return {amount:_({amount:u.toNumber(),decimals:a.decimals}),isSender:!0}}let s=e.consumedUtxos.filter(c=>c.asset.assetId===ne(!!t)&&c.addresses.includes(n)).reduce((c,u)=>c.add(u.asset.amount),new N__default.default(0)),i=e.emittedUtxos.filter(c=>c.asset.assetId===ne(!!t)&&c.addresses.includes(n)).reduce((c,u)=>c.add(u.asset.amount),new N__default.default(0)),o=s.gte(i),l=o?s.minus(i):i.minus(s);return {amount:_({amount:l.toNumber(),decimals:a.decimals}),isSender:o}}function ea({isTestnet:e,tx:t,networkToken:a}){let n=t.amountUnlocked.filter(i=>i.assetId===ne(!!e)).reduce((i,o)=>i.add(o.amount),new N__default.default(0)),r=t.amountCreated.filter(i=>i.assetId===ne(!!e)).reduce((i,o)=>i.add(o.amount),new N__default.default(0)),s=n.minus(r);return _({amount:s.toNumber(),decimals:a.decimals})}function ne(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}var T=e=>e.chainId===coreChainsSdk.ChainId.AVALANCHE_DEVNET_P||e.chainId===43117||e.chainId===coreChainsSdk.ChainId.AVALANCHE_DEVNET_X;var ct=async({address:e,nextPageToken:t,offset:a,network:n,glacierService:r})=>{let{isTestnet:s,networkToken:i,explorerUrl:o,chainId:l}=n;if(!r.isHealthy())return {transactions:[],nextPageToken:""};let u=T(n)?glacierSdk.Network.DEVNET:n.isTestnet?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,m=await r.listLatestPrimaryNetworkTransactions({addresses:e,blockchainId:aa(e),network:u,pageSize:a,pageToken:t,sortOrder:glacierSdk.SortOrder.DESC}),p=[];return tt(m)&&(p=m.transactions.map(d=>rt({tx:d,isTestnet:s,address:e,networkToken:i,explorerUrl:o,chainId:l}))),at(m)&&(p=m.transactions.map(d=>st({tx:d,isTestnet:s,address:e,networkToken:i,explorerUrl:o,chainId:l}))),{transactions:p,nextPageToken:m.nextPageToken}},aa=e=>e.split(",")[0]?.toLowerCase().startsWith("p-")?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN;var na={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},ra={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},we=e=>{switch(e){case vmModuleTypes.Environment.PRODUCTION:return na;case vmModuleTypes.Environment.DEV:return ra}};var Te=class extends Error{constructor(){super(...arguments);U(this,"message","Glacier is unhealthy. Try again later.");}},xe=class{constructor({glacierApiUrl:t,headers:a}){U(this,"glacierSdk");U(this,"isGlacierHealthy",!0);U(this,"isHealthy",()=>this.isGlacierHealthy);this.glacierSdk=new glacierSdk.Glacier({BASE:t,HEADERS:a});}setGlacierToUnhealthy(){this.isGlacierHealthy=!1,setTimeout(()=>{this.isGlacierHealthy=!0;},5*60*1e3);}async listLatestPrimaryNetworkTransactions(t){try{return this.glacierSdk.primaryNetworkTransactions.listLatestPrimaryNetworkTransactions(t)}catch(a){throw a instanceof Te&&this.setGlacierToUnhealthy(),a}}async getChainBalance(t){try{return this.glacierSdk.primaryNetworkBalances.getBalancesByAddresses(t)}catch(a){throw a instanceof Te&&this.setGlacierToUnhealthy(),a}}};var L=async({operation:e,isSuccess:t,maxRetries:a=10,backoffPolicy:n=re.exponential()})=>{let r=0,s=0,i;for(;s<a;){s>0&&await oa(r);try{let l=await e(s);if(t(l))return l}catch(l){i=l;}r=n(s),s++;}let o=i?`Max retry exceeded. ${i}`:"Max retry exceeded.";throw new Error(o)},re=class{static exponential(){return t=>Math.pow(2,t)*1e3}static constant(t){return a=>t*1e3}static constantMs(t){return a=>t}};function oa(e){return new Promise(t=>setTimeout(t,e))}var Ee=e=>L({operation:t=>e(t>0),maxRetries:2,backoffPolicy:re.constant(1),isSuccess:t=>t?.status?.error_code!==429});function pt(e){let t,a=0;for(t=0;t<e.length;t++)a+=e.charCodeAt(t)*(t+1);return a}function Me(e){let t,a=0;for(t=0;t<e.length;t++){let n=pt(e[t]??"");a=a+65027/n;}return (""+a).slice(0,16)}async function Ae(e,t){let a=await fetch(...e);if(!a.ok)throw new Error(`Request failed with status ${a.status}`);let n=await a.json();return t.parse(n)}var se=class{constructor(t){this.proxyApiUrl=t;}simplePrice(t){let a=new URLSearchParams(t);return Ae([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${a}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema)}simplePriceByContractAddresses(t){let{id:a,...n}=t,r=new URLSearchParams(n);return Ae([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${a}?${r}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.SimplePriceResponseSchema)}};var mt=coreCoingeckoSdk.getBasicCoingeckoHttp(),w,F,ie=class{constructor({storage:t,proxyApiUrl:a}){S(this,w,void 0);S(this,F,void 0);U(this,"transformSimplePriceResponse",(t,a=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let n={};return Object.keys(t).forEach(r=>{let s=t[r];n[r]={},a.forEach(i=>{n[r]={[i]:{price:s?.[i],change24:s?.[`${i}_24h_change`],vol24:s?.[`${i}_24h_vol`],marketCap:s?.[`${i}_market_cap`]}};});}),n});b(this,w,t),b(this,F,a);}async getSimplePrice({coinIds:t=[],currencies:a=[coreCoingeckoSdk.VsCurrencyType.USD]}){let n,s=`getSimplePrice-${t?`${Me(t)}-${a.toString()}`:`${a.toString()}`}`;if(n=f(this,w)?.get?.(s),n)return n;try{n=await Ee(i=>this.simplePrice({coinIds:t,currencies:a,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:i}));}catch{n=void 0;}return f(this,w)?.set?.(s,n),n}async getPricesByAddresses(t,a,n=coreCoingeckoSdk.VsCurrencyType.USD){let r,i=`getPricesWithMarketDataByAddresses-${`${Me(t)}-${a}-${n}`}`;if(r=f(this,w)?.get?.(i),r)return r;try{r=await Ee(o=>this.fetchPricesByAddresses({assetPlatformId:a,tokenAddresses:t,currency:n,useCoingeckoProxy:o}));}catch{r=void 0;}return f(this,w)?.set?.(i,r),r}async fetchPricesByAddresses({assetPlatformId:t,tokenAddresses:a,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:r=!1}){return r?new se(f(this,F)).simplePriceByContractAddresses({id:t,contract_addresses:a,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0}):coreCoingeckoSdk.simpleTokenPrice(mt,{assetPlatformId:t,tokenAddresses:a,currencies:[n],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:t=[],currencies:a=[coreCoingeckoSdk.VsCurrencyType.USD],marketCap:n=!1,vol24:r=!1,change24:s=!1,lastUpdated:i=!1,useCoingeckoProxy:o=!1,shouldThrow:l=!0}){if(o){let c=await new se(f(this,F)).simplePrice({ids:t,vs_currencies:a,include_market_cap:n,include_24hr_vol:r,include_24hr_change:s,include_last_updated_at:i});return this.transformSimplePriceResponse(c,a)}return coreCoingeckoSdk.simplePrice(mt,{coinIds:t,currencies:a,marketCap:n,vol24:r,change24:s,lastUpdated:i,shouldThrow:l})}};w=new WeakMap,F=new WeakMap;zod.object({date:zod.string(),usd:zod.record(zod.number())});var E=(e,t,a,n)=>({label:e,type:vmModuleTypes.DetailItemType.CURRENCY,value:t,maxDecimals:a,symbol:n}),h=(e,t,a="horizontal")=>({label:e,alignment:a,type:vmModuleTypes.DetailItemType.TEXT,value:t});var Ve=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.ADDRESS,value:t}),P=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.NODE_ID,value:t});var M=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.DATE,value:t});var H=({name:e,version:t})=>{switch(e){case vmModuleTypes.AppName.CORE_MOBILE_IOS:case vmModuleTypes.AppName.CORE_MOBILE_ANDROID:case vmModuleTypes.AppName.CORE_WEB:case vmModuleTypes.AppName.CORE_EXTENSION:case vmModuleTypes.AppName.EXPLORER:return {"x-application-name":e,"x-application-version":t};case vmModuleTypes.AppName.OTHER:return}};var dt=e=>Object.keys(e).includes("unlockedUnstaked"),ut=e=>Object.keys(e).includes("locked");function ve(e){let t=Object.values(e).reduce(function(a,n){let r=n.reduce(function(s,i){let o=Number(i.amount);return s+o},0);return a+r},0);return BigInt(t)}var ht=({balance:e,networkToken:t,priceInCurrency:a,marketCap:n,vol24:r,change24:s,coingeckoId:i})=>{let o={},l={unlockedUnstaked:e.unlockedUnstaked,unlockedStaked:e.unlockedStaked,pendingStaked:e.pendingStaked,lockedStaked:e.lockedStaked,lockedStakeable:e.lockedStakeable,lockedPlatform:e.lockedPlatform,atomicMemoryLocked:e.atomicMemoryLocked,atomicMemoryUnlocked:e.atomicMemoryUnlocked};for(let d in l){let g=l[d];if(!g||!g.length){o[d]=0n;continue}g.forEach(y=>{let v=(o[d]??0n)+BigInt(y.amount);o[d]=v;});}let c=new coreUtilsSdk.TokenUnit(o.unlockedUnstaked?o.unlockedUnstaked:0n,t.decimals,t.symbol),u=a?c.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0,m=new coreUtilsSdk.TokenUnit(ve(e),t.decimals,t.symbol),p=a?m.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {...t,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:a,balance:m.toSubUnit(),balanceInCurrency:p,balanceDisplayValue:m.toDisplay(),balanceCurrencyDisplayValue:p?.toFixed(2),available:c.toSubUnit(),availableInCurrency:u,availableDisplayValue:c.toDisplay(),availableCurrencyDisplayValue:u?.toFixed(2),utxos:e,balancePerType:{lockedStaked:o.lockedStaked,lockedStakeable:o.lockedStakeable,lockedPlatform:o.lockedPlatform,atomicMemoryLocked:o.atomicMemoryLocked,atomicMemoryUnlocked:o.atomicMemoryUnlocked,unlockedUnstaked:o.unlockedUnstaked,unlockedStaked:o.unlockedStaked,pendingStaked:o.pendingStaked},marketCap:n,vol24:r,change24:s,coingeckoId:i}};var yt=({balance:e,networkToken:t,priceInCurrency:a,marketCap:n,vol24:r,change24:s,coingeckoId:i})=>{let o={},l={unlocked:e.unlocked,locked:e.locked,atomicMemoryUnlocked:e.atomicMemoryUnlocked,atomicMemoryLocked:e.atomicMemoryLocked};for(let d in l){let g=l[d];if(!g||!g.length){o[d]=0n;continue}g.forEach(y=>{let v=(o[d]??0n)+BigInt(y.amount);o[d]=v;});}let c=new coreUtilsSdk.TokenUnit(o.unlocked?o.unlocked:0n,t.decimals,t.symbol),u=a?c.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0,m=new coreUtilsSdk.TokenUnit(ve(e),t.decimals,t.symbol),p=a!==void 0?m.mul(a):void 0;return {...t,coingeckoId:i,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:a,balance:m.toSubUnit(),balanceInCurrency:p?.toDisplay({fixedDp:2,asNumber:!0}),balanceDisplayValue:m.toDisplay(),balanceCurrencyDisplayValue:p?.toDisplay({fixedDp:2}),available:c.toSubUnit(),availableInCurrency:u,availableDisplayValue:c.toDisplay(),availableCurrencyDisplayValue:u?.toFixed(2),utxos:e,balancePerType:{unlocked:o.unlocked,locked:o.locked,atomicMemoryUnlocked:o.atomicMemoryUnlocked,atomicMemoryLocked:o.atomicMemoryLocked},marketCap:n,vol24:r,change24:s}};var xt=async({addresses:e,currency:t,network:a,glacierService:n,tokenService:r})=>{if(!n.isHealthy())return Promise.reject("Glacier is unhealthy. Try again later.");let i=t.toLowerCase(),o=e[0]??"",l=a.networkToken,c=a.pricingProviders?.coingecko.nativeTokenId,u=a.vmName===vmModuleTypes.NetworkVMType.PVM?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN,m=T(a)?glacierSdk.Network.DEVNET:a.isTestnet?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,p=await n.getChainBalance({blockchainId:u,network:m,addresses:e.join(",")}).then(B=>B.balances),d=c?await r.getSimplePrice({coinIds:[c],currencies:[i]}):{},g=d?.[c??""]?.[i]?.price??void 0,y=d?.[c??""]?.[i]?.marketCap??void 0,A=d?.[c??""]?.[i]?.vol24??void 0,v=d?.[c??""]?.[i]?.change24??void 0,x;return dt(p)?(x=ht({balance:p,networkToken:l,priceInCurrency:g,marketCap:y,vol24:A,change24:v,coingeckoId:c??""}),{[o]:{[l.symbol]:x}}):ut(p)?(x=yt({balance:p,networkToken:l,priceInCurrency:g,marketCap:y,vol24:A,change24:v,coingeckoId:c??""}),{[o]:{[l.symbol]:x}}):Promise.reject("Incorrect type balance was returned from glacier")};function At({blockchainId:e,isTestnet:t}){let a=t?"fuji"+e:e,n=xa__default.default.createHash("sha256").update(a).digest("base64");return "avax:"+Aa(n).substring(0,32)}var Aa=e=>e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"");var Pt=async({accountIndex:e,isTestnet:t,xpubXP:a,walletType:n})=>{if(a===void 0)throw rpcErrors.rpcErrors.invalidParams("xpubXP is required to get address");let r=await k({isTestnet:!!t}),s;switch(n){case vmModuleTypes.WalletType.Mnemonic:case vmModuleTypes.WalletType.Ledger:case vmModuleTypes.WalletType.Keystone:{s=coreWalletsSdk.Avalanche.getAddressPublicKeyFromXpub(a,e);break}case vmModuleTypes.WalletType.LedgerLive:case vmModuleTypes.WalletType.Seedless:{s=Buffer.from(a,"hex");break}default:throw rpcErrors.rpcErrors.invalidParams(`Unsupported wallet type: ${n}`)}return {[vmModuleTypes.NetworkVMType.AVM]:r.getAddress(s,"X"),[vmModuleTypes.NetworkVMType.PVM]:r.getAddress(s,"P")}};var ka=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")])]),It=e=>ka.safeParse(e);var St=async({request:e,network:t,approvalController:a})=>{let n=It(e.params);if(!n.success)return console.error("invalid params",n.error),{error:rpcErrors.rpcErrors.invalidParams({message:"Params are invalid",data:{cause:n.error}})};let[r,s]=n.data,i=Buffer.from(r,"utf-8").toString("hex"),o={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE,data:i,accountIndex:s},l={title:"Sign Message",dAppInfo:{name:e.dappInfo.name,action:`${e.dappInfo.name} requests you to sign the following message`,logoUri:e.dappInfo.icon},network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},details:[{title:"Message",items:[r]}]},c=await a.requestApproval({request:e,displayData:l,signingData:o});return "error"in c?{error:c.error}:"signedData"in c?{result:c.signedData}:{error:rpcErrors.rpcErrors.internal("No signed data returned")}};var Ia=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()}),bt=e=>Ia.safeParse(e);var Rt=({utxoHexes:e=[],vm:t})=>{try{let a=avalanchejs.utils.getManagerForVM(t).getDefaultCodec();return e.map(n=>{let r=avalanchejs.utils.hexToBuffer(n);return avalanchejs.Utxo.fromBytes(r,a)[0]})}catch{return []}};var ke=e=>{switch(e.type){case vmModuleTypes.TxType.AddPermissionlessDelegator:case vmModuleTypes.TxType.AddSubnetValidator:case vmModuleTypes.TxType.CreateChain:case vmModuleTypes.TxType.CreateSubnet:case vmModuleTypes.TxType.RemoveSubnetValidator:case vmModuleTypes.TxType.AddPermissionlessValidator:return e;case vmModuleTypes.TxType.Export:return {...e,type:vmModuleTypes.TxType.Export,chain:e.chain,destination:e.destination};case vmModuleTypes.TxType.Import:return {...e,type:vmModuleTypes.TxType.Import,chain:e.chain,source:e.source};case vmModuleTypes.TxType.Base:return {...e,type:vmModuleTypes.TxType.Base,chain:e.chain};default:return}};var Bt=e=>{switch(e.type){case vmModuleTypes.TxType.AddPermissionlessDelegator:return "Add Delegator";case vmModuleTypes.TxType.AddPermissionlessValidator:return "Add Validator";case vmModuleTypes.TxType.Export:return "Approve Export";case vmModuleTypes.TxType.Import:return "Approve Import";case vmModuleTypes.TxType.Base:return "Approve Transaction";case vmModuleTypes.TxType.AddSubnetValidator:return "Add Subnet Validator";case vmModuleTypes.TxType.CreateChain:return "Approve Create Chain";case vmModuleTypes.TxType.CreateSubnet:return "Approve Create Subnet";case vmModuleTypes.TxType.RemoveSubnetValidator:return "Remove Subnet Validator";default:return "Sign Message"}};var _e=async({indices:e,chainAlias:t,isChange:a,isTestnet:n,xpubXP:r})=>{if(!r||a&&t!=="X")return [];let s=await k({isTestnet:n});return e.map(i=>coreWalletsSdk.Avalanche.getAddressFromXpub(r,i,s,t,a))};var Le=e=>e.type===vmModuleTypes.TxType.AddPermissionlessDelegator,He=e=>e.type===vmModuleTypes.TxType.AddPermissionlessValidator,Xe=e=>e.type===vmModuleTypes.TxType.Export,Ge=e=>e.type===vmModuleTypes.TxType.Import,ba=e=>e.type===vmModuleTypes.TxType.Base,Fe=e=>e.type===vmModuleTypes.TxType.AddSubnetValidator,Da=e=>e.type===vmModuleTypes.TxType.CreateChain,Ra=e=>e.type===vmModuleTypes.TxType.CreateSubnet,Oe=e=>e.type===vmModuleTypes.TxType.RemoveSubnetValidator,rs=e=>Le(e)||He(e)||Fe(e)||Oe(e),ss=e=>Xe(e)||Ge(e),Nt=e=>ba(e),wt=e=>Da(e),Et=e=>Ra(e);function je(e){return e===coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID}var Pe=(e,t)=>{let a=[];if(Nt(e)){let{chain:r,outputs:s,memo:i}=e;a.push({title:"Chain Details",items:[h("Active chain",`Avalanche ${J[r]}`)]}),s.forEach((o,l)=>{let c=o.owners.flatMap(u=>[Ve("To",u),E("Amount",o.amount,9,t)]);o.owners.length>1&&c.push(h("Threshold",o.threshold.toString())),a.push({title:l===0?"Balance Change":void 0,items:c});}),r!==avalanchejs.PVM&&i&&a.push({title:"Memo",items:[i]});}else if(Xe(e)){let{amount:r,chain:s,destination:i,type:o}=e;a.push({title:"Transaction Details",items:[h("Source Chain",`Avalanche ${J[s]}`),h("Target Chain",`Avalanche ${J[i]}`),h("Transaction Type",o?(o[0]||"").toUpperCase()+o.slice(1):""),E("Amount",r,9,t)]});}else if(Ge(e)){let{amount:r,chain:s,source:i,type:o}=e;a.push({title:"Transaction Details",items:[h("Source Chain",`Avalanche ${J[i]}`),h("Destination Chain",`Avalanche ${J[s]}`),h("Transaction Type",o?(o[0]||"").toUpperCase()+o.slice(1):""),E("Amount",r,9,t)]});}else if(Et(e)){let{threshold:r,controlKeys:s}=e;a.push({title:"Subnet Details",items:[h(s.length>1?"Owners":"Owner",s.join(`
21
- `),"vertical"),h("Signature Threshold",`${r}/${s.length}`,"vertical")]});}else if(Le(e)){let{nodeID:r,start:s,end:i,stake:o,subnetID:l}=e,c=[P("Node ID",r),je(l)?h("Subnet ID","Primary Network"):P("Subnet ID",l),E("Stake Amount",o,9,t),M("Start Date",s),M("End Date",i)];a.push({title:"Staking Details",items:c});}else if(He(e)){let{nodeID:r,delegationFee:s,start:i,end:o,stake:l,subnetID:c,signature:u,publicKey:m}=e,p=[P("Node ID",r),je(c)?h("Subnet ID","Primary Network"):P("Subnet ID",c)];m&&u&&p.push(P("Public Key",m),P("Proof",u)),p.push(E("Stake Amount",l,9,t),h("Delegation Fee",`${s/1e4} %`),M("Start Date",i),M("End Date",o)),a.push({title:"Staking Details",items:p});}else if(wt(e)){let{chainID:r,chainName:s,vmID:i,genesisData:o}=e,l=[h("Blockchain name",s,"vertical"),h("Blockchain ID",r,"vertical"),h("Virtual Machine ID",i,"vertical"),h("Genesis Data",o,"vertical")];a.push({title:"Blockchain Details",items:l});}else if(Fe(e)){let{nodeID:r,start:s,end:i,subnetID:o}=e,l=[P("Subnet ID",o),P("Node ID",r),M("Start Date",s),M("End Date",i)];a.push({title:"Staking Details",items:l});}else if(Oe(e)){let{nodeID:r,subnetID:s}=e,i=[P("Node ID",r),P("Subnet ID",s)];a.push({title:"Staking Details",items:i});}let{txFee:n}=e;return n&&a.push({title:"Network Fee",items:[E("Fee Amount",n,9,t)]}),a},J=(n=>(n.AVM="X Chain",n.PVM="P Chain",n.EVM="C Chain",n))(J||{});var Va=process.env.GLACIER_API_KEY,Mt=async({request:e,network:t,approvalController:a,glacierApiUrl:n,appInfo:r})=>{let s=bt(e.params);if(!s.success)return {error:rpcErrors.rpcErrors.invalidParams({message:"Transaction params are invalid",data:{cause:s.error}})};try{let{transactionHex:i,chainAlias:o,externalIndices:l,internalIndices:c,utxos:u}=s.data,m=coreWalletsSdk.Avalanche.getVmByChainAlias(o),p=avalanchejs.utils.hexToBuffer(i),d=t.isTestnet??!1,g=await k({isTestnet:d,isDevnet:T(t)}),y=e.context?.currentAddress;if(!y||typeof y!="string")return {error:rpcErrors.rpcErrors.invalidRequest("No active account found")};let A=Rt({utxoHexes:u,vm:m}),v=A.length?A:await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:i,chainAlias:o,network:T(t)?glacierSdk.Network.DEVNET:d?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,url:n,token:Va,headers:H(r)}),x;if(o==="C")x=await coreWalletsSdk.Avalanche.createAvalancheEvmUnsignedTx({txBytes:p,vm:m,utxos:v,fromAddress:y});else {let ee=avalanchejs.utils.unpackWithManager(m,p),C=e.context?.xpubXP;if(C!==void 0&&typeof C!="string")return {error:rpcErrors.rpcErrors.invalidParams("xpubXP must be a string")};let De=await _e({indices:l??[],chainAlias:o,isChange:!1,isTestnet:d,xpubXP:C}),Re=await _e({indices:c??[],chainAlias:o,isChange:!0,isTestnet:d,xpubXP:C}),Ht=[...new Set([y,...De,...Re])].map(Xt=>avalanchejs.utils.parse(Xt)[2]);x=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:ee,utxos:v,provider:g,fromAddressBytes:Ht});}let B=await coreWalletsSdk.Avalanche.parseAvalancheTx(x,g,y),Ce=ke(B),Z=Bt(B);if(B.type==="unknown"||Ce===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction data. Unsupported tx type")};let ge={type:vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION,unsignedTxJson:JSON.stringify(x.toJSON()),data:B,vm:m,externalIndices:l,internalIndices:c},Se=Pe(Ce,t.networkToken.symbol),be={title:Z,network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},details:Se,networkFeeSelector:!1},Q=await a.requestApproval({request:e,displayData:be,signingData:ge});if("error"in Q)return {error:Q.error};let V=await Ua(g,Q,m);return _a({provider:g,txHash:V,vm:m,onTransactionConfirmed:a.onTransactionConfirmed,onTransactionReverted:a.onTransactionReverted,requestId:e.requestId}),{result:V}}catch(i){return console.error(i),{error:rpcErrors.rpcErrors.internal({message:"Unable to create transaction",data:{cause:i}})}}},Ua=async(e,t,a)=>{if("txHash"in t)return t.txHash;let{txID:n}=await e.issueTxHex(t.signedData,a);return n},_a=async({provider:e,txHash:t,vm:a,onTransactionConfirmed:n,onTransactionReverted:r,requestId:s})=>{try{a===avalanchejs.PVM?(await L({operation:()=>e.getApiP().getTxStatus({txID:t}),isSuccess:l=>["Committed","Dropped"].includes(l.status),maxRetries:7})).status==="Committed"?n(t,s):r(t,s):a===avalanchejs.AVM?(await L({operation:()=>e.getApiX().getTxStatus({txID:t}),isSuccess:l=>["Accepted","Rejected"].includes(l.status),maxRetries:7})).status==="Accepted"?n(t,s):r(t,s):(await L({operation:()=>e.getApiC().getAtomicTxStatus(t),isSuccess:l=>["Accepted","Dropped"].includes(l.status),maxRetries:7})).status==="Accepted"?n(t,s):r(t,s);}catch(o){console.error(o),o instanceof Error&&o.message.startsWith("Max retry exceeded.")||r(t,s);}};var La=zod.z.object({from:zod.z.string().describe("Avalanche receiving address"),transactionHex:zod.z.string(),chainAlias:zod.z.enum(["X","P","C"])}),Vt=e=>La.safeParse(e);var Ga=process.env.GLACIER_API_KEY,_t=async({request:e,network:t,approvalController:a,glacierApiUrl:n,appInfo:r})=>{let s=Vt(e.params);if(!s.success)return console.error("invalid params",s.error),{error:rpcErrors.rpcErrors.invalidParams("Params are invalid")};let{transactionHex:i,chainAlias:o,from:l}=s.data,c=coreWalletsSdk.Avalanche.getVmByChainAlias(o),u=avalanchejs.utils.hexToBuffer(i),m=t.isTestnet??!1,p=await k({isTestnet:m,isDevnet:T(t)}),d=avalanchejs.utils.unpackWithManager(c,u),g=await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:i,chainAlias:o,network:T(t)?glacierSdk.Network.DEVNET:m?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,url:n,token:Ga,headers:H(r)}),y;try{let C=avalanchejs.utils.getManagerForVM(c).unpack(u,avalanchejs.avaxSerial.SignedTx),De=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:d,utxos:g,provider:p,credentials:C.getCredentials()});y=d.getSigIndices().map((Re,Ke)=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(Re,{unsignedTx:De,credentialIndex:Ke})));}catch{y=d.getSigIndices().map(C=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(C)));}let A=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:d,provider:p,credentials:y,utxos:g}),v=avalanchejs.utils.addressesFromBytes([avalanchejs.utils.parse(l)[2]])[0];if(!v)return {error:rpcErrors.rpcErrors.invalidRequest("Missing signer address")};let x=A.getSigIndicesForAddress(v);if(!x)return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let B=A.getSigIndices();if(!x.some(([ee,C])=>B[ee]?.includes(C)))return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let Z=await coreWalletsSdk.Avalanche.parseAvalancheTx(A,p,l),ge=ke(Z);if(Z.type==="unknown"||ge===void 0)return {error:rpcErrors.rpcErrors.invalidParams("Unable to parse transaction data. Unsupported tx type")};let Se={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION,data:Z,vm:c,unsignedTxJson:JSON.stringify(A.toJSON()),ownSignatureIndices:x},be=Pe(ge,t.networkToken.symbol),Q={title:"Sign Transaction",dAppInfo:{name:e.dappInfo.name,action:`${e.dappInfo.name} requests you to sign the following transaction`,logoUri:e.dappInfo.icon},network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},details:be},V=await a.requestApproval({request:e,displayData:Q,signingData:Se});return "error"in V?{error:V.error}:"signedData"in V?{result:V.signedData}:{error:rpcErrors.rpcErrors.invalidRequest("No signed data returned")}};var K,ue,z,G,Y,Lt=class{constructor({approvalController:t,environment:a,appInfo:n}){S(this,K,void 0);S(this,ue,void 0);S(this,z,void 0);S(this,G,void 0);S(this,Y,void 0);let{glacierApiUrl:r,proxyApiUrl:s}=we(a);b(this,Y,n),b(this,K,new xe({glacierApiUrl:r,headers:H(n)})),b(this,ue,s),b(this,z,r),b(this,G,t);}getProvider(t){return k({isTestnet:!!t.isTestnet,isDevnet:T(t)})}getAddress({accountIndex:t,xpubXP:a,isTestnet:n,walletType:r}){return Pt({accountIndex:t,xpubXP:a,isTestnet:n,walletType:r})}getBalances({addresses:t,network:a,storage:n,currency:r}){let s=T(a)?we(vmModuleTypes.Environment.DEV).proxyApiUrl:f(this,ue),i=new ie({storage:n,proxyApiUrl:s});return xt({addresses:t,currency:r,network:a,glacierService:f(this,K),tokenService:i})}getManifest(){let t=vmModuleTypes.parseManifest(Ye);return t.success?t.data:void 0}getNetworkFee(t){let{isTestnet:a,vmName:n}=t;return Ze({isTestnet:!!a,isDevnet:T(t),vmName:n})}getTransactionHistory({network:t,address:a,nextPageToken:n,offset:r}){return ct({network:t,address:a,nextPageToken:n,offset:r,glacierService:f(this,K)})}getTokens(t){return Promise.resolve([])}async onRpcRequest(t,a){switch(t.method){case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE:return St({request:t,network:a,approvalController:f(this,G)});case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION:return _t({request:t,network:a,approvalController:f(this,G),glacierApiUrl:f(this,z),appInfo:f(this,Y)});case vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION:return Mt({request:t,network:a,approvalController:f(this,G),glacierApiUrl:f(this,z),appInfo:f(this,Y)});default:return {error:rpcErrors.rpcErrors.methodNotSupported(`Method ${t.method} not supported`)}}}static getHashedBlockchainId({blockchainId:t,isTestnet:a}){return At({blockchainId:t,isTestnet:a})}};K=new WeakMap,ue=new WeakMap,z=new WeakMap,G=new WeakMap,Y=new WeakMap;var uo=e=>"balancePerType"in e&&"unlockedUnstaked"in e.balancePerType,go=e=>"balancePerType"in e&&"unlocked"in e.balancePerType;
20
+ var Gt=Object.defineProperty;var Ft=(e,t,a)=>t in e?Gt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a;var U=(e,t,a)=>(Ft(e,typeof t!="symbol"?t+"":t,a),a),ze=(e,t,a)=>{if(!t.has(e))throw TypeError("Cannot "+a)};var f=(e,t,a)=>(ze(e,t,"read from private field"),a?a.call(e):t.get(e)),S=(e,t,a)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,a);},b=(e,t,a,n)=>(ze(e,t,"write to private field"),n?n.call(e,a):t.set(e,a),a);var Ye={name:"Avalanche",description:"",version:"0.0.1",sources:{module:{checksum:"",location:{npm:{filePath:"dist/bundle.js",packageName:"@avalabs/avalanche-module",registry:"https://registry.npmjs.org"}}},provider:{checksum:"",location:{npm:{filePath:"dist/provider.js",packageName:"@avalabs/avalanche-module",registry:"https://registry.npmjs.org"}}}},network:{chainIds:["avax:8aDU0Kqh-5d23op-B-r-4YbQFRbsgF9a","avax:YRLfeDBJpfEqUWe2FYR1OpXsnDDZeKWd","avax:Rr9hnPVPxuUvrdCul-vjEsU1zmqKqRDo","avax:Sj7NVE3jXTbJvwFAiu7OEUo_8g8ctXMG","avax:imji8papUf2EhV3le337w1vgFauqkJg-","avax:8AJTpRj3SAqv1e80Mtl9em08LhvKEbkl","avax:N5PeRoKwDDREF0awn2GPsb9sHnGRzdEX"],namespaces:["avax"]},cointype:"9000",permissions:{rpc:{dapps:!0,methods:["avalanche_sendTransaction","avalanche_signTransaction","avalanche_signMessage"]}},manifestVersion:"0.0"};var P=async({isTestnet:e,isDevnet:t})=>{let a=t?coreChainsSdk.AVALANCHE_P_DEV_NETWORK:e?coreChainsSdk.AVALANCHE_XP_TEST_NETWORK:coreChainsSdk.AVALANCHE_XP_NETWORK,n=await new avalanchejs.info.InfoApi(a.rpcUrl).getUpgradesInfo().catch(()=>{});return t?coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultDevnetProvider(n):e?coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultFujiProvider(n):coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultMainnetProvider(n)};async function Ze({isTestnet:e,isDevnet:t,vmName:a}){let n=await P({isTestnet:e,isDevnet:t});if(a===vmModuleTypes.NetworkVMType.AVM||!n.isEtnaEnabled())return {baseFee:BigInt(1e6),low:{maxFeePerGas:BigInt(1e6)},medium:{maxFeePerGas:BigInt(1e6)},high:{maxFeePerGas:BigInt(1e6)},isFixedFee:!0};let{price:r}=await n.getApiP().getFeeState(),o=100/Number(r)/100,i=Math.min(1,Math.max(o,.15)),s=Math.min(1,Math.max(o*2,.3)),l=1+i,c=1+s;return {baseFee:r,low:{maxFeePerGas:r},medium:{maxFeePerGas:r*BigInt(Math.round(100*l))/100n},high:{maxFeePerGas:r*BigInt(Math.round(100*c))/100n},isFixedFee:!1}}var tt=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.P_CHAIN,at=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.X_CHAIN;function he(e,t,a="tx"){return `${e}/${a}/${t}`}function _({amount:e,decimals:t}){return e===void 0?new N__default.default(0):new N__default.default(e/10**t)}function rt({tx:e,address:t,networkToken:a,chainId:n,explorerUrl:r,isTestnet:o}){let i=new Set(e.consumedUtxos.flatMap(p=>p.addresses)||[]),s=new Set(e.emittedUtxos.flatMap(p=>p.addresses)||[]),l=zt({tx:e,isTestnet:o,networkToken:a,froms:i}),c=Yt({tx:e,isTestnet:o,networkToken:a}),u=t.toLowerCase().startsWith("p-")?t.slice(2):t,m=i.has(u);return {hash:e.txHash,isContractCall:!1,isIncoming:!m,isOutgoing:m,from:[...i.values()].join(","),to:[...s.values()].join(","),isSender:m,timestamp:e.blockTimestamp*1e3,tokens:[{decimal:a.decimals.toString(),name:a.name,symbol:a.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:l.toString()}],gasUsed:c.toString(),explorerLink:he(r??"",e.txHash,"tx"),txType:e.txType,chainId:n.toString()}}function zt({tx:e,isTestnet:t,networkToken:a,froms:n}){let r=["ImportTx","ExportTx"].includes(e.txType),o=e.txType==="BaseTx",i=e.emittedUtxos.filter(p=>p.asset.assetId===te(!!t)&&!p.addresses.some(d=>n.has(d))).reduce((p,d)=>p.add(d.asset.amount),new N__default.default(0)),s=e.value.find(p=>p.assetId===te(!!t))?.amount,l=i.gt(new N__default.default(0))?i:s?new N__default.default(s):new N__default.default(0)??new N__default.default(0),c=t?coreWalletsSdk.Avalanche.FujiContext.pBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID,u=e.emittedUtxos.filter(p=>p.asset.assetId===te(!!t)&&(e.txType==="ImportTx"&&p.consumedOnChainId===c||e.txType==="ExportTx"&&p.consumedOnChainId!==c)).reduce((p,d)=>p.add(d.amount),new N__default.default(0)),m=o?l:r?u:e.amountStaked.length===0?nt(e.value,!!t):nt(e.amountStaked,!!t);return _({amount:m?.toNumber(),decimals:a.decimals})}function Yt({tx:e,isTestnet:t,networkToken:a}){let n=e.amountBurned?.filter(r=>r.assetId===te(!!t)).reduce((r,o)=>r.add(o.amount),new N__default.default(0));return _({amount:n?.toNumber(),decimals:a.decimals})}function nt(e,t){return e.filter(a=>a.assetId===te(t)).reduce((a,n)=>a.add(n.amount),new N__default.default(0))}function te(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}function st({tx:e,address:t,networkToken:a,chainId:n,explorerUrl:r,isTestnet:o}){let i=new Set(e.consumedUtxos.flatMap(g=>g.addresses)||[]),s=new Set(e.emittedUtxos.flatMap(g=>g.addresses)||[]),l=t.toLowerCase().startsWith("x-")?t.slice(2):t,c=["ImportTx","ExportTx"].includes(e.txType),{amount:u,isSender:m}=Qt({tx:e,isTestnet:o,networkToken:a,chainAddress:l,isImportExport:c}),p=ea({isTestnet:o,tx:e,networkToken:a}),d=c?u.toString():m?u.minus(p).toString():u.toString();return {hash:e.txHash,isContractCall:!1,isIncoming:!m,isOutgoing:m,from:[...i.values()].join(","),to:[...s.values()].join(","),isSender:m,timestamp:e.timestamp*1e3,tokens:[{decimal:a.decimals.toString(),name:a.name,symbol:a.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:d}],gasUsed:p.toString(),explorerLink:he(r??"",e.txHash,"tx"),txType:e.txType,chainId:n.toString()}}function Qt({tx:e,isTestnet:t,networkToken:a,chainAddress:n,isImportExport:r}){if(r){let c=t?coreWalletsSdk.Avalanche.FujiContext.xBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.xBlockchainID,u=e.emittedUtxos.filter(m=>m.asset.assetId===ne(!!t)&&(e.txType==="ImportTx"&&m.consumedOnChainId===c||e.txType==="ExportTx"&&m.consumedOnChainId!==c)).reduce((m,p)=>m.add(p.asset.amount),new N__default.default(0));return {amount:_({amount:u.toNumber(),decimals:a.decimals}),isSender:!0}}let o=e.consumedUtxos.filter(c=>c.asset.assetId===ne(!!t)&&c.addresses.includes(n)).reduce((c,u)=>c.add(u.asset.amount),new N__default.default(0)),i=e.emittedUtxos.filter(c=>c.asset.assetId===ne(!!t)&&c.addresses.includes(n)).reduce((c,u)=>c.add(u.asset.amount),new N__default.default(0)),s=o.gte(i),l=s?o.minus(i):i.minus(o);return {amount:_({amount:l.toNumber(),decimals:a.decimals}),isSender:s}}function ea({isTestnet:e,tx:t,networkToken:a}){let n=t.amountUnlocked.filter(i=>i.assetId===ne(!!e)).reduce((i,s)=>i.add(s.amount),new N__default.default(0)),r=t.amountCreated.filter(i=>i.assetId===ne(!!e)).reduce((i,s)=>i.add(s.amount),new N__default.default(0)),o=n.minus(r);return _({amount:o.toNumber(),decimals:a.decimals})}function ne(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}var x=e=>e.chainId===coreChainsSdk.ChainId.AVALANCHE_DEVNET_P||e.chainId===43117||e.chainId===coreChainsSdk.ChainId.AVALANCHE_DEVNET_X;var ct=async({address:e,nextPageToken:t,offset:a,network:n,glacierService:r})=>{let{isTestnet:o,networkToken:i,explorerUrl:s,chainId:l}=n;if(!r.isHealthy())return {transactions:[],nextPageToken:""};let u=x(n)?glacierSdk.Network.DEVNET:n.isTestnet?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,m=await r.listLatestPrimaryNetworkTransactions({addresses:e,blockchainId:aa(e),network:u,pageSize:a,pageToken:t,sortOrder:glacierSdk.SortOrder.DESC}),p=[];return tt(m)&&(p=m.transactions.map(d=>rt({tx:d,isTestnet:o,address:e,networkToken:i,explorerUrl:s,chainId:l}))),at(m)&&(p=m.transactions.map(d=>st({tx:d,isTestnet:o,address:e,networkToken:i,explorerUrl:s,chainId:l}))),{transactions:p,nextPageToken:m.nextPageToken}},aa=e=>e.split(",")[0]?.toLowerCase().startsWith("p-")?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN;var na={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},ra={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},we=e=>{switch(e){case vmModuleTypes.Environment.PRODUCTION:return na;case vmModuleTypes.Environment.DEV:return ra}};var Te=class extends Error{constructor(){super(...arguments);U(this,"message","Glacier is unhealthy. Try again later.");}},xe=class{constructor({glacierApiUrl:t,headers:a}){U(this,"glacierSdk");U(this,"isGlacierHealthy",!0);U(this,"isHealthy",()=>this.isGlacierHealthy);this.glacierSdk=new glacierSdk.Glacier({BASE:t,HEADERS:a});}setGlacierToUnhealthy(){this.isGlacierHealthy=!1,setTimeout(()=>{this.isGlacierHealthy=!0;},5*60*1e3);}async listLatestPrimaryNetworkTransactions(t){try{return this.glacierSdk.primaryNetworkTransactions.listLatestPrimaryNetworkTransactions(t)}catch(a){throw a instanceof Te&&this.setGlacierToUnhealthy(),a}}async getChainBalance(t){try{return this.glacierSdk.primaryNetworkBalances.getBalancesByAddresses(t)}catch(a){throw a instanceof Te&&this.setGlacierToUnhealthy(),a}}};var L=async({operation:e,isSuccess:t,maxRetries:a=10,backoffPolicy:n=re.exponential()})=>{let r=0,o=0,i;for(;o<a;){o>0&&await oa(r);try{let l=await e(o);if(t(l))return l}catch(l){i=l;}r=n(o),o++;}let s=i?`Max retry exceeded. ${i}`:"Max retry exceeded.";throw new Error(s)},re=class{static exponential(){return t=>Math.pow(2,t)*1e3}static constant(t){return a=>t*1e3}static constantMs(t){return a=>t}};function oa(e){return new Promise(t=>setTimeout(t,e))}var Ee=e=>L({operation:t=>e(t>0),maxRetries:2,backoffPolicy:re.constant(1),isSuccess:t=>t?.status?.error_code!==429});function pt(e){let t,a=0;for(t=0;t<e.length;t++)a+=e.charCodeAt(t)*(t+1);return a}function Ve(e){let t,a=0;for(t=0;t<e.length;t++){let n=pt(e[t]??"");a=a+65027/n;}return (""+a).slice(0,16)}async function Ae(e,t){let a=await fetch(...e);if(!a.ok)throw new Error(`Request failed with status ${a.status}`);let n=await a.json();return t.parse(n)}var se=class{constructor(t){this.proxyApiUrl=t;}simplePrice(t){let a=new URLSearchParams(t);return Ae([`${this.proxyApiUrl}/proxy/coingecko/simple/price?${a}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.RawSimplePriceResponseSchema)}simplePriceByContractAddresses(t){let{id:a,...n}=t,r=new URLSearchParams(n);return Ae([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${a}?${r}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.SimplePriceResponseSchema)}};var mt=coreCoingeckoSdk.getBasicCoingeckoHttp(),w,F,ie=class{constructor({storage:t,proxyApiUrl:a}){S(this,w,void 0);S(this,F,void 0);U(this,"transformSimplePriceResponse",(t,a=[coreCoingeckoSdk.VsCurrencyType.USD])=>{let n={};return Object.keys(t).forEach(r=>{let o=t[r];n[r]={},a.forEach(i=>{n[r]={[i]:{price:o?.[i],change24:o?.[`${i}_24h_change`],vol24:o?.[`${i}_24h_vol`],marketCap:o?.[`${i}_market_cap`]}};});}),n});b(this,w,t),b(this,F,a);}async getSimplePrice({coinIds:t=[],currencies:a=[coreCoingeckoSdk.VsCurrencyType.USD]}){let n,o=`getSimplePrice-${t?`${Ve(t)}-${a.toString()}`:`${a.toString()}`}`;if(n=f(this,w)?.get?.(o),n)return n;try{n=await Ee(i=>this.simplePrice({coinIds:t,currencies:a,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:i}));}catch{n=void 0;}return f(this,w)?.set?.(o,n),n}async getPricesByAddresses(t,a,n=coreCoingeckoSdk.VsCurrencyType.USD){let r,i=`getPricesWithMarketDataByAddresses-${`${Ve(t)}-${a}-${n}`}`;if(r=f(this,w)?.get?.(i),r)return r;try{r=await Ee(s=>this.fetchPricesByAddresses({assetPlatformId:a,tokenAddresses:t,currency:n,useCoingeckoProxy:s}));}catch{r=void 0;}return f(this,w)?.set?.(i,r),r}async fetchPricesByAddresses({assetPlatformId:t,tokenAddresses:a,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:r=!1}){return r?new se(f(this,F)).simplePriceByContractAddresses({id:t,contract_addresses:a,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0}):coreCoingeckoSdk.simpleTokenPrice(mt,{assetPlatformId:t,tokenAddresses:a,currencies:[n],marketCap:!0,vol24:!0,change24:!0})}async simplePrice({coinIds:t=[],currencies:a=[coreCoingeckoSdk.VsCurrencyType.USD],marketCap:n=!1,vol24:r=!1,change24:o=!1,lastUpdated:i=!1,useCoingeckoProxy:s=!1,shouldThrow:l=!0}){if(s){let c=await new se(f(this,F)).simplePrice({ids:t,vs_currencies:a,include_market_cap:n,include_24hr_vol:r,include_24hr_change:o,include_last_updated_at:i});return this.transformSimplePriceResponse(c,a)}return coreCoingeckoSdk.simplePrice(mt,{coinIds:t,currencies:a,marketCap:n,vol24:r,change24:o,lastUpdated:i,shouldThrow:l})}};w=new WeakMap,F=new WeakMap;zod.object({date:zod.string(),usd:zod.record(zod.number())});var E=(e,t,a,n)=>({label:e,type:vmModuleTypes.DetailItemType.CURRENCY,value:t,maxDecimals:a,symbol:n}),h=(e,t,a="horizontal")=>({label:e,alignment:a,type:vmModuleTypes.DetailItemType.TEXT,value:t});var Me=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.ADDRESS,value:t}),I=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.NODE_ID,value:t});var V=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.DATE,value:t});var H=({name:e,version:t})=>{switch(e){case vmModuleTypes.AppName.CORE_MOBILE_IOS:case vmModuleTypes.AppName.CORE_MOBILE_ANDROID:case vmModuleTypes.AppName.CORE_WEB:case vmModuleTypes.AppName.CORE_EXTENSION:case vmModuleTypes.AppName.EXPLORER:return {"x-application-name":e,"x-application-version":t};case vmModuleTypes.AppName.OTHER:return}};var dt=e=>Object.keys(e).includes("unlockedUnstaked"),ut=e=>Object.keys(e).includes("locked");function ve(e){let t=Object.values(e).reduce(function(a,n){let r=n.reduce(function(o,i){let s=Number(i.amount);return o+s},0);return a+r},0);return BigInt(t)}var ht=({balance:e,networkToken:t,priceInCurrency:a,marketCap:n,vol24:r,change24:o,coingeckoId:i})=>{let s={},l={unlockedUnstaked:e.unlockedUnstaked,unlockedStaked:e.unlockedStaked,pendingStaked:e.pendingStaked,lockedStaked:e.lockedStaked,lockedStakeable:e.lockedStakeable,lockedPlatform:e.lockedPlatform,atomicMemoryLocked:e.atomicMemoryLocked,atomicMemoryUnlocked:e.atomicMemoryUnlocked};for(let d in l){let g=l[d];if(!g||!g.length){s[d]=0n;continue}g.forEach(T=>{let k=(s[d]??0n)+BigInt(T.amount);s[d]=k;});}let c=new coreUtilsSdk.TokenUnit(s.unlockedUnstaked?s.unlockedUnstaked:0n,t.decimals,t.symbol),u=a?c.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0,m=new coreUtilsSdk.TokenUnit(ve(e),t.decimals,t.symbol),p=a?m.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0;return {...t,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:a,balance:m.toSubUnit(),balanceInCurrency:p,balanceDisplayValue:m.toDisplay(),balanceCurrencyDisplayValue:p?.toFixed(2),available:c.toSubUnit(),availableInCurrency:u,availableDisplayValue:c.toDisplay(),availableCurrencyDisplayValue:u?.toFixed(2),utxos:e,balancePerType:{lockedStaked:s.lockedStaked,lockedStakeable:s.lockedStakeable,lockedPlatform:s.lockedPlatform,atomicMemoryLocked:s.atomicMemoryLocked,atomicMemoryUnlocked:s.atomicMemoryUnlocked,unlockedUnstaked:s.unlockedUnstaked,unlockedStaked:s.unlockedStaked,pendingStaked:s.pendingStaked},marketCap:n,vol24:r,change24:o,coingeckoId:i}};var yt=({balance:e,networkToken:t,priceInCurrency:a,marketCap:n,vol24:r,change24:o,coingeckoId:i})=>{let s={},l={unlocked:e.unlocked,locked:e.locked,atomicMemoryUnlocked:e.atomicMemoryUnlocked,atomicMemoryLocked:e.atomicMemoryLocked};for(let d in l){let g=l[d];if(!g||!g.length){s[d]=0n;continue}g.forEach(T=>{let k=(s[d]??0n)+BigInt(T.amount);s[d]=k;});}let c=new coreUtilsSdk.TokenUnit(s.unlocked?s.unlocked:0n,t.decimals,t.symbol),u=a?c.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0,m=new coreUtilsSdk.TokenUnit(ve(e),t.decimals,t.symbol),p=a!==void 0?m.mul(a):void 0;return {...t,coingeckoId:i,type:vmModuleTypes.TokenType.NATIVE,priceInCurrency:a,balance:m.toSubUnit(),balanceInCurrency:p?.toDisplay({fixedDp:2,asNumber:!0}),balanceDisplayValue:m.toDisplay(),balanceCurrencyDisplayValue:p?.toDisplay({fixedDp:2}),available:c.toSubUnit(),availableInCurrency:u,availableDisplayValue:c.toDisplay(),availableCurrencyDisplayValue:u?.toFixed(2),utxos:e,balancePerType:{unlocked:s.unlocked,locked:s.locked,atomicMemoryUnlocked:s.atomicMemoryUnlocked,atomicMemoryLocked:s.atomicMemoryLocked},marketCap:n,vol24:r,change24:o}};var xt=async({addresses:e,currency:t,network:a,glacierService:n,tokenService:r})=>{if(!n.isHealthy())return Promise.reject("Glacier is unhealthy. Try again later.");let i=t.toLowerCase(),s=e[0]??"",l=a.networkToken,c=a.pricingProviders?.coingecko.nativeTokenId,u=a.vmName===vmModuleTypes.NetworkVMType.PVM?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN,m=x(a)?glacierSdk.Network.DEVNET:a.isTestnet?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,p=await n.getChainBalance({blockchainId:u,network:m,addresses:e.join(",")}).then(B=>B.balances),d=c?await r.getSimplePrice({coinIds:[c],currencies:[i]}):{},g=d?.[c??""]?.[i]?.price??void 0,T=d?.[c??""]?.[i]?.marketCap??void 0,v=d?.[c??""]?.[i]?.vol24??void 0,k=d?.[c??""]?.[i]?.change24??void 0,A;return dt(p)?(A=ht({balance:p,networkToken:l,priceInCurrency:g,marketCap:T,vol24:v,change24:k,coingeckoId:c??""}),{[s]:{[l.symbol]:A}}):ut(p)?(A=yt({balance:p,networkToken:l,priceInCurrency:g,marketCap:T,vol24:v,change24:k,coingeckoId:c??""}),{[s]:{[l.symbol]:A}}):Promise.reject("Incorrect type balance was returned from glacier")};function At({blockchainId:e,isTestnet:t}){let a=t?"fuji"+e:e,n=xa__default.default.createHash("sha256").update(a).digest("base64");return "avax:"+Aa(n).substring(0,32)}var Aa=e=>e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"");var Pt=async({accountIndex:e,xpubXP:t,walletType:a,network:n})=>{let r=!!n?.isTestnet,o=n&&x(n);if(t===void 0)throw rpcErrors.rpcErrors.invalidParams("xpubXP is required to get address");let i=await P({isTestnet:r,isDevnet:o}),s;switch(a){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: ${a}`)}return {[vmModuleTypes.NetworkVMType.AVM]:i.getAddress(s,"X"),[vmModuleTypes.NetworkVMType.PVM]:i.getAddress(s,"P")}};var ka=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")])]),It=e=>ka.safeParse(e);var St=async({request:e,network:t,approvalController:a})=>{let n=It(e.params);if(!n.success)return console.error("invalid params",n.error),{error:rpcErrors.rpcErrors.invalidParams({message:"Params are invalid",data:{cause:n.error}})};let[r,o]=n.data,i=Buffer.from(r,"utf-8").toString("hex"),s={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE,data:i,accountIndex:o},l={title:"Sign Message",dAppInfo:{name:e.dappInfo.name,action:`${e.dappInfo.name} requests you to sign the following message`,logoUri:e.dappInfo.icon},network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},details:[{title:"Message",items:[r]}]},c=await a.requestApproval({request:e,displayData:l,signingData:s});return "error"in c?{error:c.error}:"signedData"in c?{result:c.signedData}:{error:rpcErrors.rpcErrors.internal("No signed data returned")}};var Ia=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()}),bt=e=>Ia.safeParse(e);var Rt=({utxoHexes:e=[],vm:t})=>{try{let a=avalanchejs.utils.getManagerForVM(t).getDefaultCodec();return e.map(n=>{let r=avalanchejs.utils.hexToBuffer(n);return avalanchejs.Utxo.fromBytes(r,a)[0]})}catch{return []}};var ke=e=>{switch(e.type){case vmModuleTypes.TxType.AddPermissionlessDelegator:case vmModuleTypes.TxType.AddSubnetValidator:case vmModuleTypes.TxType.CreateChain:case vmModuleTypes.TxType.CreateSubnet:case vmModuleTypes.TxType.RemoveSubnetValidator:case vmModuleTypes.TxType.AddPermissionlessValidator:return e;case vmModuleTypes.TxType.ConvertSubnetToL1:case vmModuleTypes.TxType.SetL1ValidatorWeight:case vmModuleTypes.TxType.DisableL1Validator:case vmModuleTypes.TxType.IncreaseL1ValidatorBalance:case vmModuleTypes.TxType.RegisterL1Validator:return {...e,chain:e.chain};case vmModuleTypes.TxType.Export:return {...e,type:vmModuleTypes.TxType.Export,chain:e.chain,destination:e.destination};case vmModuleTypes.TxType.Import:return {...e,type:vmModuleTypes.TxType.Import,chain:e.chain,source:e.source};case vmModuleTypes.TxType.Base:return {...e,type:vmModuleTypes.TxType.Base,chain:e.chain};default:return}};var Bt=e=>{switch(e.type){case vmModuleTypes.TxType.AddPermissionlessDelegator:return "Add Delegator";case vmModuleTypes.TxType.AddPermissionlessValidator:return "Add Validator";case vmModuleTypes.TxType.Export:return "Approve Export";case vmModuleTypes.TxType.Import:return "Approve Import";case vmModuleTypes.TxType.Base:return "Approve Transaction";case vmModuleTypes.TxType.AddSubnetValidator:return "Add Subnet Validator";case vmModuleTypes.TxType.CreateChain:return "Approve Create Chain";case vmModuleTypes.TxType.CreateSubnet:return "Approve Create Subnet";case vmModuleTypes.TxType.RemoveSubnetValidator:return "Remove Subnet Validator";default:return "Sign Message"}};var _e=async({indices:e,chainAlias:t,isChange:a,isTestnet:n,xpubXP:r})=>{if(!r||a&&t!=="X")return [];let o=await P({isTestnet:n});return e.map(i=>coreWalletsSdk.Avalanche.getAddressFromXpub(r,i,o,t,a))};var Le=e=>e.type===vmModuleTypes.TxType.AddPermissionlessDelegator,He=e=>e.type===vmModuleTypes.TxType.AddPermissionlessValidator,Xe=e=>e.type===vmModuleTypes.TxType.Export,Ge=e=>e.type===vmModuleTypes.TxType.Import,ba=e=>e.type===vmModuleTypes.TxType.Base,Fe=e=>e.type===vmModuleTypes.TxType.AddSubnetValidator,Da=e=>e.type===vmModuleTypes.TxType.CreateChain,Ra=e=>e.type===vmModuleTypes.TxType.CreateSubnet,Oe=e=>e.type===vmModuleTypes.TxType.RemoveSubnetValidator,ss=e=>Le(e)||He(e)||Fe(e)||Oe(e),os=e=>Xe(e)||Ge(e),Nt=e=>ba(e),wt=e=>Da(e),Et=e=>Ra(e);function je(e){return e===coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID}var Pe=(e,t)=>{let a=[];if(Nt(e)){let{chain:r,outputs:o,memo:i}=e;a.push({title:"Chain Details",items:[h("Active chain",`Avalanche ${J[r]}`)]}),o.forEach((s,l)=>{let c=s.owners.flatMap(u=>[Me("To",u),E("Amount",s.amount,9,t)]);s.owners.length>1&&c.push(h("Threshold",s.threshold.toString())),a.push({title:l===0?"Balance Change":void 0,items:c});}),r!==avalanchejs.PVM&&i&&a.push({title:"Memo",items:[i]});}else if(Xe(e)){let{amount:r,chain:o,destination:i,type:s}=e;a.push({title:"Transaction Details",items:[h("Source Chain",`Avalanche ${J[o]}`),h("Target Chain",`Avalanche ${J[i]}`),h("Transaction Type",s?(s[0]||"").toUpperCase()+s.slice(1):""),E("Amount",r,9,t)]});}else if(Ge(e)){let{amount:r,chain:o,source:i,type:s}=e;a.push({title:"Transaction Details",items:[h("Source Chain",`Avalanche ${J[i]}`),h("Destination Chain",`Avalanche ${J[o]}`),h("Transaction Type",s?(s[0]||"").toUpperCase()+s.slice(1):""),E("Amount",r,9,t)]});}else if(Et(e)){let{threshold:r,controlKeys:o}=e;a.push({title:"Subnet Details",items:[h(o.length>1?"Owners":"Owner",o.join(`
21
+ `),"vertical"),h("Signature Threshold",`${r}/${o.length}`,"vertical")]});}else if(Le(e)){let{nodeID:r,start:o,end:i,stake:s,subnetID:l}=e,c=[I("Node ID",r),je(l)?h("Subnet ID","Primary Network"):I("Subnet ID",l),E("Stake Amount",s,9,t),V("Start Date",o),V("End Date",i)];a.push({title:"Staking Details",items:c});}else if(He(e)){let{nodeID:r,delegationFee:o,start:i,end:s,stake:l,subnetID:c,signature:u,publicKey:m}=e,p=[I("Node ID",r),je(c)?h("Subnet ID","Primary Network"):I("Subnet ID",c)];m&&u&&p.push(I("Public Key",m),I("Proof",u)),p.push(E("Stake Amount",l,9,t),h("Delegation Fee",`${o/1e4} %`),V("Start Date",i),V("End Date",s)),a.push({title:"Staking Details",items:p});}else if(wt(e)){let{chainID:r,chainName:o,vmID:i,genesisData:s}=e,l=[h("Blockchain name",o,"vertical"),h("Blockchain ID",r,"vertical"),h("Virtual Machine ID",i,"vertical"),h("Genesis Data",s,"vertical")];a.push({title:"Blockchain Details",items:l});}else if(Fe(e)){let{nodeID:r,start:o,end:i,subnetID:s}=e,l=[I("Subnet ID",s),I("Node ID",r),V("Start Date",o),V("End Date",i)];a.push({title:"Staking Details",items:l});}else if(Oe(e)){let{nodeID:r,subnetID:o}=e,i=[I("Node ID",r),I("Subnet ID",o)];a.push({title:"Staking Details",items:i});}let{txFee:n}=e;return n&&a.push({title:"Network Fee",items:[E("Fee Amount",n,9,t)]}),a},J=(n=>(n.AVM="X Chain",n.PVM="P Chain",n.EVM="C Chain",n))(J||{});var Ma=process.env.GLACIER_API_KEY,Vt=async({request:e,network:t,approvalController:a,glacierApiUrl:n,appInfo:r})=>{let o=bt(e.params);if(!o.success)return {error:rpcErrors.rpcErrors.invalidParams({message:"Transaction params are invalid",data:{cause:o.error}})};try{let{transactionHex:i,chainAlias:s,externalIndices:l,internalIndices:c,utxos:u}=o.data,m=coreWalletsSdk.Avalanche.getVmByChainAlias(s),p=avalanchejs.utils.hexToBuffer(i),d=t.isTestnet??!1,g=await P({isTestnet:d,isDevnet:x(t)}),T=e.context?.currentAddress;if(!T||typeof T!="string")return {error:rpcErrors.rpcErrors.invalidRequest("No active account found")};let v=Rt({utxoHexes:u,vm:m}),k=v.length?v:await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:i,chainAlias:s,network:x(t)?glacierSdk.Network.DEVNET:d?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,url:n,token:Ma,headers:H(r)}),A;if(s==="C")A=await coreWalletsSdk.Avalanche.createAvalancheEvmUnsignedTx({txBytes:p,vm:m,utxos:k,fromAddress:T});else {let ee=avalanchejs.utils.unpackWithManager(m,p),C=e.context?.xpubXP;if(C!==void 0&&typeof C!="string")return {error:rpcErrors.rpcErrors.invalidParams("xpubXP must be a string")};let De=await _e({indices:l??[],chainAlias:s,isChange:!1,isTestnet:d,xpubXP:C}),Re=await _e({indices:c??[],chainAlias:s,isChange:!0,isTestnet:d,xpubXP:C}),Ht=[...new Set([T,...De,...Re])].map(Xt=>avalanchejs.utils.parse(Xt)[2]);A=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:ee,utxos:k,provider:g,fromAddressBytes:Ht});}let B=await coreWalletsSdk.Avalanche.parseAvalancheTx(A,g,T),Ce=ke(B),Z=Bt(B);if(B.type==="unknown"||Ce===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction data. Unsupported tx type")};let ge={type:vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION,unsignedTxJson:JSON.stringify(A.toJSON()),data:B,vm:m,externalIndices:l,internalIndices:c},Se=Pe(Ce,t.networkToken.symbol),be={title:Z,network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},details:Se,networkFeeSelector:!1},Q=await a.requestApproval({request:e,displayData:be,signingData:ge});if("error"in Q)return {error:Q.error};let M=await Ua(g,Q,m);return _a({provider:g,txHash:M,vm:m,onTransactionConfirmed:a.onTransactionConfirmed,onTransactionReverted:a.onTransactionReverted,requestId:e.requestId}),{result:M}}catch(i){return console.error(i),{error:rpcErrors.rpcErrors.internal({message:"Unable to create transaction",data:{cause:i}})}}},Ua=async(e,t,a)=>{if("txHash"in t)return t.txHash;let{txID:n}=await e.issueTxHex(t.signedData,a);return n},_a=async({provider:e,txHash:t,vm:a,onTransactionConfirmed:n,onTransactionReverted:r,requestId:o})=>{try{a===avalanchejs.PVM?(await L({operation:()=>e.getApiP().getTxStatus({txID:t}),isSuccess:l=>["Committed","Dropped"].includes(l.status),maxRetries:7})).status==="Committed"?n(t,o):r(t,o):a===avalanchejs.AVM?(await L({operation:()=>e.getApiX().getTxStatus({txID:t}),isSuccess:l=>["Accepted","Rejected"].includes(l.status),maxRetries:7})).status==="Accepted"?n(t,o):r(t,o):(await L({operation:()=>e.getApiC().getAtomicTxStatus(t),isSuccess:l=>["Accepted","Dropped"].includes(l.status),maxRetries:7})).status==="Accepted"?n(t,o):r(t,o);}catch(s){console.error(s),s instanceof Error&&s.message.startsWith("Max retry exceeded.")||r(t,o);}};var La=zod.z.object({from:zod.z.string().describe("Avalanche receiving address"),transactionHex:zod.z.string(),chainAlias:zod.z.enum(["X","P","C"])}),Mt=e=>La.safeParse(e);var Ga=process.env.GLACIER_API_KEY,_t=async({request:e,network:t,approvalController:a,glacierApiUrl:n,appInfo:r})=>{let o=Mt(e.params);if(!o.success)return console.error("invalid params",o.error),{error:rpcErrors.rpcErrors.invalidParams("Params are invalid")};let{transactionHex:i,chainAlias:s,from:l}=o.data,c=coreWalletsSdk.Avalanche.getVmByChainAlias(s),u=avalanchejs.utils.hexToBuffer(i),m=t.isTestnet??!1,p=await P({isTestnet:m,isDevnet:x(t)}),d=avalanchejs.utils.unpackWithManager(c,u),g=await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:i,chainAlias:s,network:x(t)?glacierSdk.Network.DEVNET:m?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,url:n,token:Ga,headers:H(r)}),T;try{let C=avalanchejs.utils.getManagerForVM(c).unpack(u,avalanchejs.avaxSerial.SignedTx),De=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:d,utxos:g,provider:p,credentials:C.getCredentials()});T=d.getSigIndices().map((Re,Ke)=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(Re,{unsignedTx:De,credentialIndex:Ke})));}catch{T=d.getSigIndices().map(C=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(C)));}let v=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:d,provider:p,credentials:T,utxos:g}),k=avalanchejs.utils.addressesFromBytes([avalanchejs.utils.parse(l)[2]])[0];if(!k)return {error:rpcErrors.rpcErrors.invalidRequest("Missing signer address")};let A=v.getSigIndicesForAddress(k);if(!A)return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let B=v.getSigIndices();if(!A.some(([ee,C])=>B[ee]?.includes(C)))return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let Z=await coreWalletsSdk.Avalanche.parseAvalancheTx(v,p,l),ge=ke(Z);if(Z.type==="unknown"||ge===void 0)return {error:rpcErrors.rpcErrors.invalidParams("Unable to parse transaction data. Unsupported tx type")};let Se={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION,data:Z,vm:c,unsignedTxJson:JSON.stringify(v.toJSON()),ownSignatureIndices:A},be=Pe(ge,t.networkToken.symbol),Q={title:"Sign Transaction",dAppInfo:{name:e.dappInfo.name,action:`${e.dappInfo.name} requests you to sign the following transaction`,logoUri:e.dappInfo.icon},network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},details:be},M=await a.requestApproval({request:e,displayData:Q,signingData:Se});return "error"in M?{error:M.error}:"signedData"in M?{result:M.signedData}:{error:rpcErrors.rpcErrors.invalidRequest("No signed data returned")}};var K,ue,z,G,Y,Lt=class{constructor({approvalController:t,environment:a,appInfo:n}){S(this,K,void 0);S(this,ue,void 0);S(this,z,void 0);S(this,G,void 0);S(this,Y,void 0);let{glacierApiUrl:r,proxyApiUrl:o}=we(a);b(this,Y,n),b(this,K,new xe({glacierApiUrl:r,headers:H(n)})),b(this,ue,o),b(this,z,r),b(this,G,t);}getProvider(t){return P({isTestnet:!!t.isTestnet,isDevnet:x(t)})}getAddress({accountIndex:t,xpubXP:a,walletType:n,network:r}){return Pt({accountIndex:t,xpubXP:a,walletType:n,network:r})}getBalances({addresses:t,network:a,storage:n,currency:r}){let o=x(a)?we(vmModuleTypes.Environment.DEV).proxyApiUrl:f(this,ue),i=new ie({storage:n,proxyApiUrl:o});return xt({addresses:t,currency:r,network:a,glacierService:f(this,K),tokenService:i})}getManifest(){let t=vmModuleTypes.parseManifest(Ye);return t.success?t.data:void 0}getNetworkFee(t){let{isTestnet:a,vmName:n}=t;return Ze({isTestnet:!!a,isDevnet:x(t),vmName:n})}getTransactionHistory({network:t,address:a,nextPageToken:n,offset:r}){return ct({network:t,address:a,nextPageToken:n,offset:r,glacierService:f(this,K)})}getTokens(t){return Promise.resolve([])}async onRpcRequest(t,a){switch(t.method){case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE:return St({request:t,network:a,approvalController:f(this,G)});case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION:return _t({request:t,network:a,approvalController:f(this,G),glacierApiUrl:f(this,z),appInfo:f(this,Y)});case vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION:return Vt({request:t,network:a,approvalController:f(this,G),glacierApiUrl:f(this,z),appInfo:f(this,Y)});default:return {error:rpcErrors.rpcErrors.methodNotSupported(`Method ${t.method} not supported`)}}}static getHashedBlockchainId({blockchainId:t,isTestnet:a}){return At({blockchainId:t,isTestnet:a})}};K=new WeakMap,ue=new WeakMap,z=new WeakMap,G=new WeakMap,Y=new WeakMap;var go=e=>"balancePerType"in e&&"unlockedUnstaked"in e.balancePerType,ho=e=>"balancePerType"in e&&"unlocked"in e.balancePerType;
22
22
 
23
23
  exports.AvalancheModule = Lt;
24
24
  exports.isAddPermissionlessDelegatorTx = Le;
@@ -29,13 +29,13 @@ exports.isBlockchainDetails = wt;
29
29
  exports.isChainDetails = Nt;
30
30
  exports.isCreateChainTx = Da;
31
31
  exports.isCreateSubnetTx = Ra;
32
- exports.isExportImportTxDetails = ss;
32
+ exports.isExportImportTxDetails = os;
33
33
  exports.isExportTx = Xe;
34
34
  exports.isImportTx = Ge;
35
35
  exports.isRemoveSubnetValidatorTx = Oe;
36
- exports.isStakingDetails = rs;
36
+ exports.isStakingDetails = ss;
37
37
  exports.isSubnetDetails = Et;
38
- exports.isTokenWithBalanceAVM = go;
39
- exports.isTokenWithBalancePVM = uo;
38
+ exports.isTokenWithBalanceAVM = ho;
39
+ exports.isTokenWithBalancePVM = go;
40
40
  //# sourceMappingURL=out.js.map
41
41
  //# sourceMappingURL=index.cjs.map