@avalabs/avalanche-module 0.11.7 → 0.11.9

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 B__default = /*#__PURE__*/_interopDefault(B);
18
18
  var pa__default = /*#__PURE__*/_interopDefault(pa);
19
19
 
20
- var _t=Object.defineProperty;var Lt=(e,t,a)=>t in e?_t(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a;var U=(e,t,a)=>(Lt(e,typeof t!="symbol"?t+"":t,a),a),Fe=(e,t,a)=>{if(!t.has(e))throw TypeError("Cannot "+a)};var y=(e,t,a)=>(Fe(e,t,"read from private field"),a?a.call(e):t.get(e)),C=(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);},S=(e,t,a,n)=>(Fe(e,t,"write to private field"),n?n.call(e,a):t.set(e,a),a);var je={name:"Avalanche",description:"",version:"0.0.1",sources:{module:{checksum:"",location:{npm:{filePath:"dist/bundle.js",packageName:"@avalabs/avalanche-module",registry:"https://registry.npmjs.org"}}},provider:{checksum:"",location:{npm:{filePath:"dist/provider.js",packageName:"@avalabs/avalanche-module",registry:"https://registry.npmjs.org"}}}},network:{chainIds:["avax:8aDU0Kqh-5d23op-B-r-4YbQFRbsgF9a","avax:YRLfeDBJpfEqUWe2FYR1OpXsnDDZeKWd","avax:Rr9hnPVPxuUvrdCul-vjEsU1zmqKqRDo","avax:Sj7NVE3jXTbJvwFAiu7OEUo_8g8ctXMG","avax:imji8papUf2EhV3le337w1vgFauqkJg-","avax:8AJTpRj3SAqv1e80Mtl9em08LhvKEbkl"],namespaces:["avax"]},cointype:"9000",permissions:{rpc:{dapps:!0,methods:["avalanche_sendTransaction","avalanche_signTransaction","avalanche_signMessage"]}},manifestVersion:"0.0"};async function We(){return {baseFee:BigInt(1e6),low:{maxFeePerGas:BigInt(1e6)},medium:{maxFeePerGas:BigInt(1e6)},high:{maxFeePerGas:BigInt(1e6)},isFixedFee:!0}}var Je=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.P_CHAIN,Ke=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.X_CHAIN;function de(e,t,a="tx"){return `${e}/${a}/${t}`}function X({amount:e,decimals:t}){return e===void 0?new B__default.default(0):new B__default.default(e/10**t)}function Ye({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)||[]),c=Gt({tx:e,isTestnet:s,networkToken:a,froms:i}),l=Ot({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:c.toString()}],gasUsed:l.toString(),explorerLink:de(r??"",e.txHash,"tx"),txType:e.txType,chainId:n.toString()}}function Gt({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===ee(!!t)&&!p.addresses.some(d=>n.has(d))).reduce((p,d)=>p.add(d.asset.amount),new B__default.default(0)),o=e.value.find(p=>p.assetId===ee(!!t))?.amount,c=i.gt(new B__default.default(0))?i:o?new B__default.default(o):new B__default.default(0)??new B__default.default(0),l=t?coreWalletsSdk.Avalanche.FujiContext.pBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID,u=e.emittedUtxos.filter(p=>p.asset.assetId===ee(!!t)&&(e.txType==="ImportTx"&&p.consumedOnChainId===l||e.txType==="ExportTx"&&p.consumedOnChainId!==l)).reduce((p,d)=>p.add(d.amount),new B__default.default(0)),m=s?c:r?u:e.amountStaked.length===0?ze(e.value,!!t):ze(e.amountStaked,!!t);return X({amount:m?.toNumber(),decimals:a.decimals})}function Ot({tx:e,isTestnet:t,networkToken:a}){let n=e.amountBurned?.filter(r=>r.assetId===ee(!!t)).reduce((r,s)=>r.add(s.amount),new B__default.default(0));return X({amount:n?.toNumber(),decimals:a.decimals})}function ze(e,t){return e.filter(a=>a.assetId===ee(t)).reduce((a,n)=>a.add(n.amount),new B__default.default(0))}function ee(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}function Ze({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)||[]),c=jt({tx:e,isTestnet:s,networkToken:a}),l=Wt({isTestnet:s,tx:e,totalAmountCreated:c,networkToken:a}),u=t.toLowerCase().startsWith("x-")?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.timestamp*1e3,tokens:[{decimal:a.decimals.toString(),name:a.name,symbol:a.symbol,type:vmModuleTypes.TokenType.NATIVE,amount:c.toString()}],gasUsed:l.toString(),explorerLink:de(r??"",e.txHash,"tx"),txType:e.txType,chainId:n.toString()}}function jt({tx:e,isTestnet:t,networkToken:a}){let n=["ImportTx","ExportTx"].includes(e.txType),r=t?coreWalletsSdk.Avalanche.FujiContext.xBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.xBlockchainID,s=e.emittedUtxos.filter(c=>c.asset.assetId===De(!!t)&&(e.txType==="ImportTx"&&c.consumedOnChainId===r||e.txType==="ExportTx"&&c.consumedOnChainId!==r)).reduce((c,l)=>c.add(l.asset.amount),new B__default.default(0)),i=e.amountCreated.filter(c=>c.assetId===De(!!t)).reduce((c,l)=>c.add(l.amount),new B__default.default(0));return X({amount:(n?s:i).toNumber(),decimals:a.decimals})}function Wt({isTestnet:e,tx:t,totalAmountCreated:a,networkToken:n}){let s=t.amountUnlocked.filter(i=>i.assetId===De(!!e)).reduce((i,o)=>i.add(o.amount),new B__default.default(0)).minus(a);return X({amount:s.toNumber(),decimals:n.decimals})}function De(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}var tt=async({address:e,nextPageToken:t,offset:a,network:n,glacierService:r})=>{let{isTestnet:s,networkToken:i,explorerUrl:o,chainId:c}=n;if(!r.isHealthy())return {transactions:[],nextPageToken:""};let u=await r.listLatestPrimaryNetworkTransactions({addresses:e,blockchainId:qt(e),network:s?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,pageSize:a,pageToken:t,sortOrder:glacierSdk.SortOrder.DESC}),m=[];return Je(u)&&(m=u.transactions.map(p=>Ye({tx:p,isTestnet:s,address:e,networkToken:i,explorerUrl:o,chainId:c}))),Ke(u)&&(m=u.transactions.map(p=>Ze({tx:p,isTestnet:s,address:e,networkToken:i,explorerUrl:o,chainId:c}))),{transactions:m,nextPageToken:u.nextPageToken}},qt=e=>e.split(",")[0]?.toLowerCase().startsWith("p-")?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN;var Jt={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},Kt={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},nt=e=>{switch(e){case vmModuleTypes.Environment.PRODUCTION:return Jt;case vmModuleTypes.Environment.DEV:return Kt}};var ge=class extends Error{constructor(){super(...arguments);U(this,"message","Glacier is unhealthy. Try again later.");}},ye=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 ge&&this.setGlacierToUnhealthy(),a}}async getChainBalance(t){try{return this.glacierSdk.primaryNetworkBalances.getBalancesByAddresses(t)}catch(a){throw a instanceof ge&&this.setGlacierToUnhealthy(),a}}};var V=async({operation:e,isSuccess:t,maxRetries:a=10,backoffPolicy:n=te.exponential()})=>{let r=0,s=0,i;for(;s<a;){s>0&&await Yt(r);try{let c=await e(s);if(t(c))return c}catch(c){i=c;}r=n(s),s++;}let o=i?`Max retry exceeded. ${i}`:"Max retry exceeded.";throw new Error(o)},te=class{static exponential(){return t=>Math.pow(2,t)*1e3}static constant(t){return a=>t*1e3}static constantMs(t){return a=>t}};function Yt(e){return new Promise(t=>setTimeout(t,e))}var Re=e=>V({operation:t=>e(t>0),maxRetries:2,backoffPolicy:te.constant(1),isSuccess:t=>t?.status?.error_code!==429});function rt(e){let t,a=0;for(t=0;t<e.length;t++)a+=e.charCodeAt(t)*(t+1);return a}function Be(e){let t,a=0;for(t=0;t<e.length;t++){let n=rt(e[t]??"");a=a+65027/n;}return (""+a).slice(0,16)}async function fe(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 ae=class{constructor(t){this.proxyApiUrl=t;}simplePrice(t){let a=new URLSearchParams(t);return fe([`${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 fe([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${a}?${r}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.SimplePriceResponseSchema)}};var st=coreCoingeckoSdk.getBasicCoingeckoHttp(),w,G,re=class{constructor({storage:t,proxyApiUrl:a}){C(this,w,void 0);C(this,G,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});S(this,w,t),S(this,G,a);}async getSimplePrice({coinIds:t=[],currencies:a=[coreCoingeckoSdk.VsCurrencyType.USD]}){let n,s=`getSimplePrice-${t?`${Be(t)}-${a.toString()}`:`${a.toString()}`}`;if(n=y(this,w)?.get?.(s),n)return n;try{n=await Re(i=>this.simplePrice({coinIds:t,currencies:a,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:i}));}catch{n=void 0;}return y(this,w)?.set?.(s,n),n}async getPricesByAddresses(t,a,n=coreCoingeckoSdk.VsCurrencyType.USD){let r,i=`getPricesWithMarketDataByAddresses-${`${Be(t)}-${a}-${n}`}`;if(r=y(this,w)?.get?.(i),r)return r;try{r=await Re(o=>this.fetchPricesByAddresses({assetPlatformId:a,tokenAddresses:t,currency:n,useCoingeckoProxy:o}));}catch{r=void 0;}return y(this,w)?.set?.(i,r),r}async fetchPricesByAddresses({assetPlatformId:t,tokenAddresses:a,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:r=!1}){return r?new ae(y(this,G)).simplePriceByContractAddresses({id:t,contract_addresses:a,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0}):coreCoingeckoSdk.simpleTokenPrice(st,{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:c=!0}){if(o){let l=await new ae(y(this,G)).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(l,a)}return coreCoingeckoSdk.simplePrice(st,{coinIds:t,currencies:a,marketCap:n,vol24:r,change24:s,lastUpdated:i,shouldThrow:c})}};w=new WeakMap,G=new WeakMap;zod.object({date:zod.string(),usd:zod.record(zod.number())});var N=(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 we=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.ADDRESS,value:t}),k=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.NODE_ID,value:t});var E=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.DATE,value:t});var _=({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 ot=e=>Object.keys(e).includes("unlockedUnstaked"),it=e=>Object.keys(e).includes("locked");function Te(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 lt=({balance:e,networkToken:t,priceInCurrency:a,marketCap:n,vol24:r,change24:s,coingeckoId:i})=>{let o={},c={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 c){let g=c[d];if(!g||!g.length){o[d]=0n;continue}g.forEach(f=>{let A=(o[d]??0n)+BigInt(f.amount);o[d]=A;});}let l=new coreUtilsSdk.TokenUnit(o.unlockedUnstaked?o.unlockedUnstaked:0n,t.decimals,t.symbol),u=a?l.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0,m=new coreUtilsSdk.TokenUnit(Te(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:l.toSubUnit(),availableInCurrency:u,availableDisplayValue:l.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 mt=({balance:e,networkToken:t,priceInCurrency:a,marketCap:n,vol24:r,change24:s,coingeckoId:i})=>{let o={},c={unlocked:e.unlocked,locked:e.locked,atomicMemoryUnlocked:e.atomicMemoryUnlocked,atomicMemoryLocked:e.atomicMemoryLocked};for(let d in c){let g=c[d];if(!g||!g.length){o[d]=0n;continue}g.forEach(f=>{let A=(o[d]??0n)+BigInt(f.amount);o[d]=A;});}let l=new coreUtilsSdk.TokenUnit(o.unlocked?o.unlocked:0n,t.decimals,t.symbol),u=a?l.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0,m=new coreUtilsSdk.TokenUnit(Te(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:l.toSubUnit(),availableInCurrency:u,availableDisplayValue:l.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 ht=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]??"",c=a.networkToken,l=a.pricingProviders?.coingecko.nativeTokenId,u=a.vmName===vmModuleTypes.NetworkVMType.PVM?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN,m=a.isTestnet?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,p=await n.getChainBalance({blockchainId:u,network:m,addresses:e.join(",")}).then(R=>R.balances),d=l?await r.getSimplePrice({coinIds:[l],currencies:[i]}):{},g=d?.[l??""]?.[i]?.price??void 0,f=d?.[l??""]?.[i]?.marketCap??void 0,x=d?.[l??""]?.[i]?.vol24??void 0,A=d?.[l??""]?.[i]?.change24??void 0,T;return ot(p)?(T=lt({balance:p,networkToken:c,priceInCurrency:g,marketCap:f,vol24:x,change24:A,coingeckoId:l??""}),{[o]:{[c.symbol]:T}}):it(p)?(T=mt({balance:p,networkToken:c,priceInCurrency:g,marketCap:f,vol24:x,change24:A,coingeckoId:l??""}),{[o]:{[c.symbol]:T}}):Promise.reject("Incorrect type balance was returned from glacier")};function gt({blockchainId:e,isTestnet:t}){let a=t?"fuji"+e:e,n=pa__default.default.createHash("sha256").update(a).digest("base64");return "avax:"+ma(n).substring(0,32)}var ma=e=>e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"");var I=async({isTestnet:e})=>{let t=e?coreChainsSdk.AVALANCHE_XP_TEST_NETWORK:coreChainsSdk.AVALANCHE_XP_NETWORK,a=await new avalanchejs.info.InfoApi(t.rpcUrl).getUpgradesInfo().catch(()=>{});return e?coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultFujiProvider(a):coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultMainnetProvider(a)};var xt=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 I({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 ya=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")])]),At=e=>ya.safeParse(e);var vt=async({request:e,network:t,approvalController:a})=>{let n=At(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},c={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]}]},l=await a.requestApproval({request:e,displayData:c,signingData:o});return "error"in l?{error:l.error}:"signedData"in l?{result:l.signedData}:{error:rpcErrors.rpcErrors.internal("No signed data returned")}};var Ta=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()}),Pt=e=>Ta.safeParse(e);var Ct=({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 xe=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 St=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 Ne=async({indices:e,chainAlias:t,isChange:a,isTestnet:n,xpubXP:r})=>{if(!r||a&&t!=="X")return [];let s=await I({isTestnet:n});return e.map(i=>coreWalletsSdk.Avalanche.getAddressFromXpub(r,i,s,t,a))};var Ee=e=>e.type===vmModuleTypes.TxType.AddPermissionlessDelegator,Me=e=>e.type===vmModuleTypes.TxType.AddPermissionlessValidator,Ue=e=>e.type===vmModuleTypes.TxType.Export,Ve=e=>e.type===vmModuleTypes.TxType.Import,ka=e=>e.type===vmModuleTypes.TxType.Base,_e=e=>e.type===vmModuleTypes.TxType.AddSubnetValidator,va=e=>e.type===vmModuleTypes.TxType.CreateChain,Pa=e=>e.type===vmModuleTypes.TxType.CreateSubnet,Le=e=>e.type===vmModuleTypes.TxType.RemoveSubnetValidator,Wr=e=>Ee(e)||Me(e)||_e(e)||Le(e),$r=e=>Ue(e)||Ve(e),bt=e=>ka(e),Dt=e=>va(e),Rt=e=>Pa(e);function He(e){return e===coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID}var Ae=(e,t)=>{let a=[];if(bt(e)){let{chain:r,outputs:s,memo:i}=e;a.push({title:"Chain Details",items:[h("Active chain",`Avalanche ${$[r]}`)]}),s.forEach((o,c)=>{let l=o.owners.flatMap(u=>[we("To",u),N("Amount",o.amount,9,t)]);o.owners.length>1&&l.push(h("Threshold",o.threshold.toString())),a.push({title:c===0?"Balance Change":void 0,items:l});}),r!==avalanchejs.PVM&&i&&a.push({title:"Memo",items:[i]});}else if(Ue(e)){let{amount:r,chain:s,destination:i,type:o}=e;a.push({title:"Transaction Details",items:[h("Source Chain",`Avalanche ${$[s]}`),h("Target Chain",`Avalanche ${$[i]}`),h("Transaction Type",o?(o[0]||"").toUpperCase()+o.slice(1):""),N("Amount",r,9,t)]});}else if(Ve(e)){let{amount:r,chain:s,source:i,type:o}=e;a.push({title:"Transaction Details",items:[h("Source Chain",`Avalanche ${$[i]}`),h("Destination Chain",`Avalanche ${$[s]}`),h("Transaction Type",o?(o[0]||"").toUpperCase()+o.slice(1):""),N("Amount",r,9,t)]});}else if(Rt(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(Ee(e)){let{nodeID:r,start:s,end:i,stake:o,subnetID:c}=e,l=[k("Node ID",r),He(c)?h("Subnet ID","Primary Network"):k("Subnet ID",c),N("Stake Amount",o,9,t),E("Start Date",s),E("End Date",i)];a.push({title:"Staking Details",items:l});}else if(Me(e)){let{nodeID:r,delegationFee:s,start:i,end:o,stake:c,subnetID:l,signature:u,publicKey:m}=e,p=[k("Node ID",r),He(l)?h("Subnet ID","Primary Network"):k("Subnet ID",l)];m&&u&&p.push(k("Public Key",m),k("Proof",u)),p.push(N("Stake Amount",c,9,t),h("Delegation Fee",`${s/1e4} %`),E("Start Date",i),E("End Date",o)),a.push({title:"Staking Details",items:p});}else if(Dt(e)){let{chainID:r,chainName:s,vmID:i,genesisData:o}=e,c=[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:c});}else if(_e(e)){let{nodeID:r,start:s,end:i,subnetID:o}=e,c=[k("Subnet ID",o),k("Node ID",r),E("Start Date",s),E("End Date",i)];a.push({title:"Staking Details",items:c});}else if(Le(e)){let{nodeID:r,subnetID:s}=e,i=[k("Node ID",r),k("Subnet ID",s)];a.push({title:"Staking Details",items:i});}let{txFee:n}=e;return n&&a.push({title:"Network Fee",items:[N("Fee Amount",n,9,t)]}),a},$=(n=>(n.AVM="X Chain",n.PVM="P Chain",n.EVM="C Chain",n))($||{});var Ra=process.env.GLACIER_API_KEY,Bt=async({request:e,network:t,approvalController:a,glacierApiUrl:n,appInfo:r})=>{let s=Pt(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:c,internalIndices:l,utxos:u}=s.data,m=coreWalletsSdk.Avalanche.getVmByChainAlias(o),p=avalanchejs.utils.hexToBuffer(i),d=t.isTestnet??!1,g=await I({isTestnet:d}),f=e.context?.currentAddress;if(!f||typeof f!="string")return {error:rpcErrors.rpcErrors.invalidRequest("No active account found")};let x=Ct({utxoHexes:u,vm:m}),A=x.length?x:await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:i,chainAlias:o,isTestnet:d,url:n,token:Ra,headers:_(r)}),T;if(o==="C")T=await coreWalletsSdk.Avalanche.createAvalancheEvmUnsignedTx({txBytes:p,vm:m,utxos:A,fromAddress:f});else {let Q=avalanchejs.utils.unpackWithManager(m,p),P=e.context?.xpubXP;if(P!==void 0&&typeof P!="string")return {error:rpcErrors.rpcErrors.invalidParams("xpubXP must be a string")};let Ce=await Ne({indices:c??[],chainAlias:o,isChange:!1,isTestnet:d,xpubXP:P}),Se=await Ne({indices:l??[],chainAlias:o,isChange:!0,isTestnet:d,xpubXP:P}),Ut=[...new Set([f,...Ce,...Se])].map(Vt=>avalanchejs.utils.parse(Vt)[2]);T=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:Q,utxos:A,provider:g,fromAddressBytes:Ut});}let R=await coreWalletsSdk.Avalanche.parseAvalancheTx(T,g,f),ve=xe(R),Y=St(R);if(R.type==="unknown"||ve===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction data. Unsupported tx type")};let me={type:vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION,unsignedTxJson:JSON.stringify(T.toJSON()),data:R,vm:m,externalIndices:c,internalIndices:l},Pe=Ae(ve,t.networkToken.symbol),Ie={title:Y,network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},details:Pe,networkFeeSelector:!1},Z=await a.requestApproval({request:e,displayData:Ie,signingData:me});if("error"in Z)return {error:Z.error};let M=await Ba(g,Z,m);return wa({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}})}}},Ba=async(e,t,a)=>{if("txHash"in t)return t.txHash;let{txID:n}=await e.issueTxHex(t.signedData,a);return n},wa=async({provider:e,txHash:t,vm:a,onTransactionConfirmed:n,onTransactionReverted:r,requestId:s})=>{try{a===avalanchejs.PVM?(await V({operation:()=>e.getApiP().getTxStatus({txID:t}),isSuccess:c=>["Committed","Dropped"].includes(c.status),maxRetries:7})).status==="Committed"?n(t,s):r(t,s):a===avalanchejs.AVM?(await V({operation:()=>e.getApiX().getTxStatus({txID:t}),isSuccess:c=>["Accepted","Rejected"].includes(c.status),maxRetries:7})).status==="Accepted"?n(t,s):r(t,s):(await V({operation:()=>e.getApiC().getAtomicTxStatus(t),isSuccess:c=>["Accepted","Dropped"].includes(c.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 Na=zod.z.object({from:zod.z.string().describe("Avalanche receiving address"),transactionHex:zod.z.string(),chainAlias:zod.z.enum(["X","P","C"])}),wt=e=>Na.safeParse(e);var Ua=process.env.GLACIER_API_KEY,Et=async({request:e,network:t,approvalController:a,glacierApiUrl:n,appInfo:r})=>{let s=wt(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:c}=s.data,l=coreWalletsSdk.Avalanche.getVmByChainAlias(o),u=avalanchejs.utils.hexToBuffer(i),m=t.isTestnet??!1,p=await I({isTestnet:m}),d=avalanchejs.utils.unpackWithManager(l,u),g=await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:i,chainAlias:o,isTestnet:m,url:n,token:Ua,headers:_(r)}),f;try{let P=avalanchejs.utils.getManagerForVM(l).unpack(u,avalanchejs.avaxSerial.SignedTx),Ce=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:d,utxos:g,provider:p,credentials:P.getCredentials()});f=d.getSigIndices().map((Se,Oe)=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(Se,{unsignedTx:Ce,credentialIndex:Oe})));}catch{f=d.getSigIndices().map(P=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(P)));}let x=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:d,provider:p,credentials:f,utxos:g}),A=avalanchejs.utils.addressesFromBytes([avalanchejs.utils.parse(c)[2]])[0];if(!A)return {error:rpcErrors.rpcErrors.invalidRequest("Missing signer address")};let T=x.getSigIndicesForAddress(A);if(!T)return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let R=x.getSigIndices();if(!T.some(([Q,P])=>R[Q]?.includes(P)))return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let Y=await coreWalletsSdk.Avalanche.parseAvalancheTx(x,p,c),me=xe(Y);if(Y.type==="unknown"||me===void 0)return {error:rpcErrors.rpcErrors.invalidParams("Unable to parse transaction data. Unsupported tx type")};let Pe={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION,data:Y,vm:l,unsignedTxJson:JSON.stringify(x.toJSON()),ownSignatureIndices:T},Ie=Ae(me,t.networkToken.symbol),Z={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:Ie},M=await a.requestApproval({request:e,displayData:Z,signingData:Pe});return "error"in M?{error:M.error}:"signedData"in M?{result:M.signedData}:{error:rpcErrors.rpcErrors.invalidRequest("No signed data returned")}};var J,pe,K,H,z,Mt=class{constructor({approvalController:t,environment:a,appInfo:n}){C(this,J,void 0);C(this,pe,void 0);C(this,K,void 0);C(this,H,void 0);C(this,z,void 0);let{glacierApiUrl:r,proxyApiUrl:s}=nt(a);S(this,z,n),S(this,J,new ye({glacierApiUrl:r,headers:_(n)})),S(this,pe,s),S(this,K,r),S(this,H,t);}getProvider(t){return I({isTestnet:!!t.isTestnet})}getAddress({accountIndex:t,xpubXP:a,isTestnet:n,walletType:r}){return xt({accountIndex:t,xpubXP:a,isTestnet:n,walletType:r})}getBalances({addresses:t,network:a,storage:n,currency:r}){let s=new re({storage:n,proxyApiUrl:y(this,pe)});return ht({addresses:t,currency:r,network:a,glacierService:y(this,J),tokenService:s})}getManifest(){let t=vmModuleTypes.parseManifest(je);return t.success?t.data:void 0}getNetworkFee(t){return We()}getTransactionHistory({network:t,address:a,nextPageToken:n,offset:r}){return tt({network:t,address:a,nextPageToken:n,offset:r,glacierService:y(this,J)})}getTokens(t){return Promise.resolve([])}async onRpcRequest(t,a){switch(t.method){case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE:return vt({request:t,network:a,approvalController:y(this,H)});case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION:return Et({request:t,network:a,approvalController:y(this,H),glacierApiUrl:y(this,K),appInfo:y(this,z)});case vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION:return Bt({request:t,network:a,approvalController:y(this,H),glacierApiUrl:y(this,K),appInfo:y(this,z)});default:return {error:rpcErrors.rpcErrors.methodNotSupported(`Method ${t.method} not supported`)}}}static getHashedBlockchainId({blockchainId:t,isTestnet:a}){return gt({blockchainId:t,isTestnet:a})}};J=new WeakMap,pe=new WeakMap,K=new WeakMap,H=new WeakMap,z=new WeakMap;var Js=e=>"balancePerType"in e&&"unlockedUnstaked"in e.balancePerType,Ks=e=>"balancePerType"in e&&"unlocked"in e.balancePerType;
20
+ var _t=Object.defineProperty;var Lt=(e,t,a)=>t in e?_t(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a;var U=(e,t,a)=>(Lt(e,typeof t!="symbol"?t+"":t,a),a),Fe=(e,t,a)=>{if(!t.has(e))throw TypeError("Cannot "+a)};var y=(e,t,a)=>(Fe(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);},C=(e,t,a,n)=>(Fe(e,t,"write to private field"),n?n.call(e,a):t.set(e,a),a);var je={name:"Avalanche",description:"",version:"0.0.1",sources:{module:{checksum:"",location:{npm:{filePath:"dist/bundle.js",packageName:"@avalabs/avalanche-module",registry:"https://registry.npmjs.org"}}},provider:{checksum:"",location:{npm:{filePath:"dist/provider.js",packageName:"@avalabs/avalanche-module",registry:"https://registry.npmjs.org"}}}},network:{chainIds:["avax:8aDU0Kqh-5d23op-B-r-4YbQFRbsgF9a","avax:YRLfeDBJpfEqUWe2FYR1OpXsnDDZeKWd","avax:Rr9hnPVPxuUvrdCul-vjEsU1zmqKqRDo","avax:Sj7NVE3jXTbJvwFAiu7OEUo_8g8ctXMG","avax:imji8papUf2EhV3le337w1vgFauqkJg-","avax:8AJTpRj3SAqv1e80Mtl9em08LhvKEbkl"],namespaces:["avax"]},cointype:"9000",permissions:{rpc:{dapps:!0,methods:["avalanche_sendTransaction","avalanche_signTransaction","avalanche_signMessage"]}},manifestVersion:"0.0"};async function We(){return {baseFee:BigInt(1e6),low:{maxFeePerGas:BigInt(1e6)},medium:{maxFeePerGas:BigInt(1e6)},high:{maxFeePerGas:BigInt(1e6)},isFixedFee:!0}}var Je=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.P_CHAIN,Ke=e=>e.chainInfo.chainName===glacierSdk.PrimaryNetworkChainName.X_CHAIN;function ge(e,t,a="tx"){return `${e}/${a}/${t}`}function V({amount:e,decimals:t}){return e===void 0?new B__default.default(0):new B__default.default(e/10**t)}function Ye({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=Gt({tx:e,isTestnet:s,networkToken:a,froms:i}),c=Ot({tx:e,isTestnet:s,networkToken:a}),d=t.toLowerCase().startsWith("p-")?t.slice(2):t,m=i.has(d);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:ge(r??"",e.txHash,"tx"),txType:e.txType,chainId:n.toString()}}function Gt({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===ee(!!t)&&!p.addresses.some(u=>n.has(u))).reduce((p,u)=>p.add(u.asset.amount),new B__default.default(0)),o=e.value.find(p=>p.assetId===ee(!!t))?.amount,l=i.gt(new B__default.default(0))?i:o?new B__default.default(o):new B__default.default(0)??new B__default.default(0),c=t?coreWalletsSdk.Avalanche.FujiContext.pBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID,d=e.emittedUtxos.filter(p=>p.asset.assetId===ee(!!t)&&(e.txType==="ImportTx"&&p.consumedOnChainId===c||e.txType==="ExportTx"&&p.consumedOnChainId!==c)).reduce((p,u)=>p.add(u.amount),new B__default.default(0)),m=s?l:r?d:e.amountStaked.length===0?ze(e.value,!!t):ze(e.amountStaked,!!t);return V({amount:m?.toNumber(),decimals:a.decimals})}function Ot({tx:e,isTestnet:t,networkToken:a}){let n=e.amountBurned?.filter(r=>r.assetId===ee(!!t)).reduce((r,s)=>r.add(s.amount),new B__default.default(0));return V({amount:n?.toNumber(),decimals:a.decimals})}function ze(e,t){return e.filter(a=>a.assetId===ee(t)).reduce((a,n)=>a.add(n.amount),new B__default.default(0))}function ee(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}function Ze({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:d,isSender:m}=jt({tx:e,isTestnet:s,networkToken:a,chainAddress:l,isImportExport:c}),p=Wt({isTestnet:s,tx:e,networkToken:a}),u=c?d.toString():m?d.minus(p).toString():d.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:u}],gasUsed:p.toString(),explorerLink:ge(r??"",e.txHash,"tx"),txType:e.txType,chainId:n.toString()}}function jt({tx:e,isTestnet:t,networkToken:a,chainAddress:n,isImportExport:r}){if(r){let c=t?coreWalletsSdk.Avalanche.FujiContext.xBlockchainID:coreWalletsSdk.Avalanche.MainnetContext.xBlockchainID,d=e.emittedUtxos.filter(m=>m.asset.assetId===ae(!!t)&&(e.txType==="ImportTx"&&m.consumedOnChainId===c||e.txType==="ExportTx"&&m.consumedOnChainId!==c)).reduce((m,p)=>m.add(p.asset.amount),new B__default.default(0));return {amount:V({amount:d.toNumber(),decimals:a.decimals}),isSender:!0}}let s=e.consumedUtxos.filter(c=>c.asset.assetId===ae(!!t)&&c.addresses.includes(n)).reduce((c,d)=>c.add(d.asset.amount),new B__default.default(0)),i=e.emittedUtxos.filter(c=>c.asset.assetId===ae(!!t)&&c.addresses.includes(n)).reduce((c,d)=>c.add(d.asset.amount),new B__default.default(0)),o=s.gte(i),l=o?s.minus(i):i.minus(s);return {amount:V({amount:l.toNumber(),decimals:a.decimals}),isSender:o}}function Wt({isTestnet:e,tx:t,networkToken:a}){let n=t.amountUnlocked.filter(i=>i.assetId===ae(!!e)).reduce((i,o)=>i.add(o.amount),new B__default.default(0)),r=t.amountCreated.filter(i=>i.assetId===ae(!!e)).reduce((i,o)=>i.add(o.amount),new B__default.default(0)),s=n.minus(r);return V({amount:s.toNumber(),decimals:a.decimals})}function ae(e){return e?coreWalletsSdk.Avalanche.FujiContext.avaxAssetID:coreWalletsSdk.Avalanche.MainnetContext.avaxAssetID}var tt=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 d=await r.listLatestPrimaryNetworkTransactions({addresses:e,blockchainId:qt(e),network:s?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,pageSize:a,pageToken:t,sortOrder:glacierSdk.SortOrder.DESC}),m=[];return Je(d)&&(m=d.transactions.map(p=>Ye({tx:p,isTestnet:s,address:e,networkToken:i,explorerUrl:o,chainId:l}))),Ke(d)&&(m=d.transactions.map(p=>Ze({tx:p,isTestnet:s,address:e,networkToken:i,explorerUrl:o,chainId:l}))),{transactions:m,nextPageToken:d.nextPageToken}},qt=e=>e.split(",")[0]?.toLowerCase().startsWith("p-")?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN;var Jt={glacierApiUrl:"https://glacier-api.avax.network",proxyApiUrl:"https://proxy-api.avax.network"},Kt={glacierApiUrl:"https://glacier-api-dev.avax.network",proxyApiUrl:"https://proxy-api-dev.avax.network"},nt=e=>{switch(e){case vmModuleTypes.Environment.PRODUCTION:return Jt;case vmModuleTypes.Environment.DEV:return Kt}};var fe=class extends Error{constructor(){super(...arguments);U(this,"message","Glacier is unhealthy. Try again later.");}},Te=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 fe&&this.setGlacierToUnhealthy(),a}}async getChainBalance(t){try{return this.glacierSdk.primaryNetworkBalances.getBalancesByAddresses(t)}catch(a){throw a instanceof fe&&this.setGlacierToUnhealthy(),a}}};var _=async({operation:e,isSuccess:t,maxRetries:a=10,backoffPolicy:n=ne.exponential()})=>{let r=0,s=0,i;for(;s<a;){s>0&&await Yt(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)},ne=class{static exponential(){return t=>Math.pow(2,t)*1e3}static constant(t){return a=>t*1e3}static constantMs(t){return a=>t}};function Yt(e){return new Promise(t=>setTimeout(t,e))}var Re=e=>_({operation:t=>e(t>0),maxRetries:2,backoffPolicy:ne.constant(1),isSuccess:t=>t?.status?.error_code!==429});function rt(e){let t,a=0;for(t=0;t<e.length;t++)a+=e.charCodeAt(t)*(t+1);return a}function Be(e){let t,a=0;for(t=0;t<e.length;t++){let n=rt(e[t]??"");a=a+65027/n;}return (""+a).slice(0,16)}async function xe(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 re=class{constructor(t){this.proxyApiUrl=t;}simplePrice(t){let a=new URLSearchParams(t);return xe([`${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 xe([`${this.proxyApiUrl}/proxy/coingecko/simple/token_price/${a}?${r}`,{method:"POST",headers:{"Content-Type":"application/json"}}],vmModuleTypes.SimplePriceResponseSchema)}};var st=coreCoingeckoSdk.getBasicCoingeckoHttp(),w,G,oe=class{constructor({storage:t,proxyApiUrl:a}){S(this,w,void 0);S(this,G,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});C(this,w,t),C(this,G,a);}async getSimplePrice({coinIds:t=[],currencies:a=[coreCoingeckoSdk.VsCurrencyType.USD]}){let n,s=`getSimplePrice-${t?`${Be(t)}-${a.toString()}`:`${a.toString()}`}`;if(n=y(this,w)?.get?.(s),n)return n;try{n=await Re(i=>this.simplePrice({coinIds:t,currencies:a,marketCap:!0,vol24:!0,change24:!0,useCoingeckoProxy:i}));}catch{n=void 0;}return y(this,w)?.set?.(s,n),n}async getPricesByAddresses(t,a,n=coreCoingeckoSdk.VsCurrencyType.USD){let r,i=`getPricesWithMarketDataByAddresses-${`${Be(t)}-${a}-${n}`}`;if(r=y(this,w)?.get?.(i),r)return r;try{r=await Re(o=>this.fetchPricesByAddresses({assetPlatformId:a,tokenAddresses:t,currency:n,useCoingeckoProxy:o}));}catch{r=void 0;}return y(this,w)?.set?.(i,r),r}async fetchPricesByAddresses({assetPlatformId:t,tokenAddresses:a,currency:n=coreCoingeckoSdk.VsCurrencyType.USD,useCoingeckoProxy:r=!1}){return r?new re(y(this,G)).simplePriceByContractAddresses({id:t,contract_addresses:a,vs_currencies:[n],include_market_cap:!0,include_24hr_vol:!0,include_24hr_change:!0}):coreCoingeckoSdk.simpleTokenPrice(st,{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 re(y(this,G)).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(st,{coinIds:t,currencies:a,marketCap:n,vol24:r,change24:s,lastUpdated:i,shouldThrow:l})}};w=new WeakMap,G=new WeakMap;zod.object({date:zod.string(),usd:zod.record(zod.number())});var N=(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 we=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.ADDRESS,value:t}),k=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.NODE_ID,value:t});var E=(e,t)=>({label:e,type:vmModuleTypes.DetailItemType.DATE,value:t});var L=({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 ot=e=>Object.keys(e).includes("unlockedUnstaked"),it=e=>Object.keys(e).includes("locked");function Ae(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 lt=({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 u in l){let g=l[u];if(!g||!g.length){o[u]=0n;continue}g.forEach(f=>{let A=(o[u]??0n)+BigInt(f.amount);o[u]=A;});}let c=new coreUtilsSdk.TokenUnit(o.unlockedUnstaked?o.unlockedUnstaked:0n,t.decimals,t.symbol),d=a?c.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0,m=new coreUtilsSdk.TokenUnit(Ae(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:d,availableDisplayValue:c.toDisplay(),availableCurrencyDisplayValue:d?.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 mt=({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 u in l){let g=l[u];if(!g||!g.length){o[u]=0n;continue}g.forEach(f=>{let A=(o[u]??0n)+BigInt(f.amount);o[u]=A;});}let c=new coreUtilsSdk.TokenUnit(o.unlocked?o.unlocked:0n,t.decimals,t.symbol),d=a?c.mul(a).toDisplay({fixedDp:2,asNumber:!0}):void 0,m=new coreUtilsSdk.TokenUnit(Ae(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:d,availableDisplayValue:c.toDisplay(),availableCurrencyDisplayValue:d?.toFixed(2),utxos:e,balancePerType:{unlocked:o.unlocked,locked:o.locked,atomicMemoryUnlocked:o.atomicMemoryUnlocked,atomicMemoryLocked:o.atomicMemoryLocked},marketCap:n,vol24:r,change24:s}};var gt=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,d=a.vmName===vmModuleTypes.NetworkVMType.PVM?glacierSdk.BlockchainId.P_CHAIN:glacierSdk.BlockchainId.X_CHAIN,m=a.isTestnet?glacierSdk.Network.FUJI:glacierSdk.Network.MAINNET,p=await n.getChainBalance({blockchainId:d,network:m,addresses:e.join(",")}).then(R=>R.balances),u=c?await r.getSimplePrice({coinIds:[c],currencies:[i]}):{},g=u?.[c??""]?.[i]?.price??void 0,f=u?.[c??""]?.[i]?.marketCap??void 0,x=u?.[c??""]?.[i]?.vol24??void 0,A=u?.[c??""]?.[i]?.change24??void 0,T;return ot(p)?(T=lt({balance:p,networkToken:l,priceInCurrency:g,marketCap:f,vol24:x,change24:A,coingeckoId:c??""}),{[o]:{[l.symbol]:T}}):it(p)?(T=mt({balance:p,networkToken:l,priceInCurrency:g,marketCap:f,vol24:x,change24:A,coingeckoId:c??""}),{[o]:{[l.symbol]:T}}):Promise.reject("Incorrect type balance was returned from glacier")};function ht({blockchainId:e,isTestnet:t}){let a=t?"fuji"+e:e,n=pa__default.default.createHash("sha256").update(a).digest("base64");return "avax:"+ma(n).substring(0,32)}var ma=e=>e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"");var P=async({isTestnet:e})=>{let t=e?coreChainsSdk.AVALANCHE_XP_TEST_NETWORK:coreChainsSdk.AVALANCHE_XP_NETWORK,a=await new avalanchejs.info.InfoApi(t.rpcUrl).getUpgradesInfo().catch(()=>{});return e?coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultFujiProvider(a):coreWalletsSdk.Avalanche.JsonRpcProvider.getDefaultMainnetProvider(a)};var xt=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 P({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 ya=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")])]),At=e=>ya.safeParse(e);var vt=async({request:e,network:t,approvalController:a})=>{let n=At(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 Ta=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()}),It=e=>Ta.safeParse(e);var St=({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 Ct=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 Ne=async({indices:e,chainAlias:t,isChange:a,isTestnet:n,xpubXP:r})=>{if(!r||a&&t!=="X")return [];let s=await P({isTestnet:n});return e.map(i=>coreWalletsSdk.Avalanche.getAddressFromXpub(r,i,s,t,a))};var Ee=e=>e.type===vmModuleTypes.TxType.AddPermissionlessDelegator,Me=e=>e.type===vmModuleTypes.TxType.AddPermissionlessValidator,Ue=e=>e.type===vmModuleTypes.TxType.Export,Ve=e=>e.type===vmModuleTypes.TxType.Import,ka=e=>e.type===vmModuleTypes.TxType.Base,_e=e=>e.type===vmModuleTypes.TxType.AddSubnetValidator,va=e=>e.type===vmModuleTypes.TxType.CreateChain,Ia=e=>e.type===vmModuleTypes.TxType.CreateSubnet,Le=e=>e.type===vmModuleTypes.TxType.RemoveSubnetValidator,Wr=e=>Ee(e)||Me(e)||_e(e)||Le(e),$r=e=>Ue(e)||Ve(e),bt=e=>ka(e),Dt=e=>va(e),Rt=e=>Ia(e);function He(e){return e===coreWalletsSdk.Avalanche.MainnetContext.pBlockchainID}var ve=(e,t)=>{let a=[];if(bt(e)){let{chain:r,outputs:s,memo:i}=e;a.push({title:"Chain Details",items:[h("Active chain",`Avalanche ${$[r]}`)]}),s.forEach((o,l)=>{let c=o.owners.flatMap(d=>[we("To",d),N("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(Ue(e)){let{amount:r,chain:s,destination:i,type:o}=e;a.push({title:"Transaction Details",items:[h("Source Chain",`Avalanche ${$[s]}`),h("Target Chain",`Avalanche ${$[i]}`),h("Transaction Type",o?(o[0]||"").toUpperCase()+o.slice(1):""),N("Amount",r,9,t)]});}else if(Ve(e)){let{amount:r,chain:s,source:i,type:o}=e;a.push({title:"Transaction Details",items:[h("Source Chain",`Avalanche ${$[i]}`),h("Destination Chain",`Avalanche ${$[s]}`),h("Transaction Type",o?(o[0]||"").toUpperCase()+o.slice(1):""),N("Amount",r,9,t)]});}else if(Rt(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(Ee(e)){let{nodeID:r,start:s,end:i,stake:o,subnetID:l}=e,c=[k("Node ID",r),He(l)?h("Subnet ID","Primary Network"):k("Subnet ID",l),N("Stake Amount",o,9,t),E("Start Date",s),E("End Date",i)];a.push({title:"Staking Details",items:c});}else if(Me(e)){let{nodeID:r,delegationFee:s,start:i,end:o,stake:l,subnetID:c,signature:d,publicKey:m}=e,p=[k("Node ID",r),He(c)?h("Subnet ID","Primary Network"):k("Subnet ID",c)];m&&d&&p.push(k("Public Key",m),k("Proof",d)),p.push(N("Stake Amount",l,9,t),h("Delegation Fee",`${s/1e4} %`),E("Start Date",i),E("End Date",o)),a.push({title:"Staking Details",items:p});}else if(Dt(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(_e(e)){let{nodeID:r,start:s,end:i,subnetID:o}=e,l=[k("Subnet ID",o),k("Node ID",r),E("Start Date",s),E("End Date",i)];a.push({title:"Staking Details",items:l});}else if(Le(e)){let{nodeID:r,subnetID:s}=e,i=[k("Node ID",r),k("Subnet ID",s)];a.push({title:"Staking Details",items:i});}let{txFee:n}=e;return n&&a.push({title:"Network Fee",items:[N("Fee Amount",n,9,t)]}),a},$=(n=>(n.AVM="X Chain",n.PVM="P Chain",n.EVM="C Chain",n))($||{});var Ra=process.env.GLACIER_API_KEY,Bt=async({request:e,network:t,approvalController:a,glacierApiUrl:n,appInfo:r})=>{let s=It(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:d}=s.data,m=coreWalletsSdk.Avalanche.getVmByChainAlias(o),p=avalanchejs.utils.hexToBuffer(i),u=t.isTestnet??!1,g=await P({isTestnet:u}),f=e.context?.currentAddress;if(!f||typeof f!="string")return {error:rpcErrors.rpcErrors.invalidRequest("No active account found")};let x=St({utxoHexes:d,vm:m}),A=x.length?x:await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:i,chainAlias:o,isTestnet:u,url:n,token:Ra,headers:L(r)}),T;if(o==="C")T=await coreWalletsSdk.Avalanche.createAvalancheEvmUnsignedTx({txBytes:p,vm:m,utxos:A,fromAddress:f});else {let Q=avalanchejs.utils.unpackWithManager(m,p),I=e.context?.xpubXP;if(I!==void 0&&typeof I!="string")return {error:rpcErrors.rpcErrors.invalidParams("xpubXP must be a string")};let be=await Ne({indices:l??[],chainAlias:o,isChange:!1,isTestnet:u,xpubXP:I}),De=await Ne({indices:c??[],chainAlias:o,isChange:!0,isTestnet:u,xpubXP:I}),Ut=[...new Set([f,...be,...De])].map(Vt=>avalanchejs.utils.parse(Vt)[2]);T=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:Q,utxos:A,provider:g,fromAddressBytes:Ut});}let R=await coreWalletsSdk.Avalanche.parseAvalancheTx(T,g,f),Pe=ke(R),Y=Ct(R);if(R.type==="unknown"||Pe===void 0)return {error:rpcErrors.rpcErrors.internal("Unable to parse transaction data. Unsupported tx type")};let ue={type:vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION,unsignedTxJson:JSON.stringify(T.toJSON()),data:R,vm:m,externalIndices:l,internalIndices:c},Se=ve(Pe,t.networkToken.symbol),Ce={title:Y,network:{chainId:t.chainId,name:t.chainName,logoUri:t.logoUri},details:Se,networkFeeSelector:!1},Z=await a.requestApproval({request:e,displayData:Ce,signingData:ue});if("error"in Z)return {error:Z.error};let M=await Ba(g,Z,m);return wa({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}})}}},Ba=async(e,t,a)=>{if("txHash"in t)return t.txHash;let{txID:n}=await e.issueTxHex(t.signedData,a);return n},wa=async({provider:e,txHash:t,vm:a,onTransactionConfirmed:n,onTransactionReverted:r,requestId:s})=>{try{a===avalanchejs.PVM?(await _({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 _({operation:()=>e.getApiX().getTxStatus({txID:t}),isSuccess:l=>["Accepted","Rejected"].includes(l.status),maxRetries:7})).status==="Accepted"?n(t,s):r(t,s):(await _({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 Na=zod.z.object({from:zod.z.string().describe("Avalanche receiving address"),transactionHex:zod.z.string(),chainAlias:zod.z.enum(["X","P","C"])}),wt=e=>Na.safeParse(e);var Ua=process.env.GLACIER_API_KEY,Et=async({request:e,network:t,approvalController:a,glacierApiUrl:n,appInfo:r})=>{let s=wt(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),d=avalanchejs.utils.hexToBuffer(i),m=t.isTestnet??!1,p=await P({isTestnet:m}),u=avalanchejs.utils.unpackWithManager(c,d),g=await coreWalletsSdk.Avalanche.getUtxosByTxFromGlacier({transactionHex:i,chainAlias:o,isTestnet:m,url:n,token:Ua,headers:L(r)}),f;try{let I=avalanchejs.utils.getManagerForVM(c).unpack(d,avalanchejs.avaxSerial.SignedTx),be=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:u,utxos:g,provider:p,credentials:I.getCredentials()});f=u.getSigIndices().map((De,Oe)=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(De,{unsignedTx:be,credentialIndex:Oe})));}catch{f=u.getSigIndices().map(I=>new avalanchejs.Credential(coreWalletsSdk.Avalanche.populateCredential(I)));}let x=await coreWalletsSdk.Avalanche.createAvalancheUnsignedTx({tx:u,provider:p,credentials:f,utxos:g}),A=avalanchejs.utils.addressesFromBytes([avalanchejs.utils.parse(l)[2]])[0];if(!A)return {error:rpcErrors.rpcErrors.invalidRequest("Missing signer address")};let T=x.getSigIndicesForAddress(A);if(!T)return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let R=x.getSigIndices();if(!T.some(([Q,I])=>R[Q]?.includes(I)))return {error:rpcErrors.rpcErrors.invalidRequest("This account has nothing to sign")};let Y=await coreWalletsSdk.Avalanche.parseAvalancheTx(x,p,l),ue=ke(Y);if(Y.type==="unknown"||ue===void 0)return {error:rpcErrors.rpcErrors.invalidParams("Unable to parse transaction data. Unsupported tx type")};let Se={type:vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION,data:Y,vm:c,unsignedTxJson:JSON.stringify(x.toJSON()),ownSignatureIndices:T},Ce=ve(ue,t.networkToken.symbol),Z={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:Ce},M=await a.requestApproval({request:e,displayData:Z,signingData:Se});return "error"in M?{error:M.error}:"signedData"in M?{result:M.signedData}:{error:rpcErrors.rpcErrors.invalidRequest("No signed data returned")}};var J,de,K,X,z,Mt=class{constructor({approvalController:t,environment:a,appInfo:n}){S(this,J,void 0);S(this,de,void 0);S(this,K,void 0);S(this,X,void 0);S(this,z,void 0);let{glacierApiUrl:r,proxyApiUrl:s}=nt(a);C(this,z,n),C(this,J,new Te({glacierApiUrl:r,headers:L(n)})),C(this,de,s),C(this,K,r),C(this,X,t);}getProvider(t){return P({isTestnet:!!t.isTestnet})}getAddress({accountIndex:t,xpubXP:a,isTestnet:n,walletType:r}){return xt({accountIndex:t,xpubXP:a,isTestnet:n,walletType:r})}getBalances({addresses:t,network:a,storage:n,currency:r}){let s=new oe({storage:n,proxyApiUrl:y(this,de)});return gt({addresses:t,currency:r,network:a,glacierService:y(this,J),tokenService:s})}getManifest(){let t=vmModuleTypes.parseManifest(je);return t.success?t.data:void 0}getNetworkFee(t){return We()}getTransactionHistory({network:t,address:a,nextPageToken:n,offset:r}){return tt({network:t,address:a,nextPageToken:n,offset:r,glacierService:y(this,J)})}getTokens(t){return Promise.resolve([])}async onRpcRequest(t,a){switch(t.method){case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_MESSAGE:return vt({request:t,network:a,approvalController:y(this,X)});case vmModuleTypes.RpcMethod.AVALANCHE_SIGN_TRANSACTION:return Et({request:t,network:a,approvalController:y(this,X),glacierApiUrl:y(this,K),appInfo:y(this,z)});case vmModuleTypes.RpcMethod.AVALANCHE_SEND_TRANSACTION:return Bt({request:t,network:a,approvalController:y(this,X),glacierApiUrl:y(this,K),appInfo:y(this,z)});default:return {error:rpcErrors.rpcErrors.methodNotSupported(`Method ${t.method} not supported`)}}}static getHashedBlockchainId({blockchainId:t,isTestnet:a}){return ht({blockchainId:t,isTestnet:a})}};J=new WeakMap,de=new WeakMap,K=new WeakMap,X=new WeakMap,z=new WeakMap;var Js=e=>"balancePerType"in e&&"unlockedUnstaked"in e.balancePerType,Ks=e=>"balancePerType"in e&&"unlocked"in e.balancePerType;
22
22
 
23
23
  exports.AvalancheModule = Mt;
24
24
  exports.isAddPermissionlessDelegatorTx = Ee;
@@ -28,7 +28,7 @@ exports.isBaseTx = ka;
28
28
  exports.isBlockchainDetails = Dt;
29
29
  exports.isChainDetails = bt;
30
30
  exports.isCreateChainTx = va;
31
- exports.isCreateSubnetTx = Pa;
31
+ exports.isCreateSubnetTx = Ia;
32
32
  exports.isExportImportTxDetails = $r;
33
33
  exports.isExportTx = Ue;
34
34
  exports.isImportTx = Ve;