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