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