@avalabs/core-wallets-sdk 3.1.0-alpha.40 → 3.1.0-alpha.41

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.d.ts CHANGED
@@ -15,6 +15,7 @@ import AppZondax, { ResponseBase } from '@avalabs/hw-app-avalanche';
15
15
  import { BIP32Interface } from 'bip32';
16
16
  import { Utxo as Utxo$1, PChainUtxo, Network as Network$2 } from '@avalabs/glacier-sdk';
17
17
  import * as _avalabs_avalanchejs_dist_serializable_common_types from '@avalabs/avalanchejs/dist/serializable/common/types';
18
+ import * as _solana_rpc from '@solana/rpc';
18
19
 
19
20
  /**
20
21
  * Custom Bitcoin UTXO interface.
@@ -2031,4 +2032,11 @@ declare function openLedgerApp(transport: Transport, applicationName: string): P
2031
2032
  */
2032
2033
  declare function quitLedgerApp(transport: Transport): Promise<Buffer>;
2033
2034
 
2034
- export { index as Avalanche, BitcoinHistoryTx, BitcoinInputUTXO, BitcoinInputUTXOWithOptionalScript, BitcoinLedgerInputUTXO, BitcoinLedgerWallet, BitcoinOutputUTXO, BitcoinProvider, BitcoinProviderAbstract, BitcoinTx, BitcoinWallet, BitcoinWalletAbstract, BitcoinWalletVoid, DerivationPath, ETH_ACCOUNT_PATH, ETH_COIN_PATH, JsonRpcBatchInternal, LedgerSigner$1 as LedgerSigner, addEncodedSigToPsbt, createPSBTV2, createPsbt, createTransferTx, createWalletPolicy, formatAddressForNetworkBech32, getAddressDerivationPath, getAddressFromXPub, getAddressPrivateKeyFromXPriv, getAddressPublicKeyFromXPub, getAppEth, getBech32Address, getBech32AddressFromXPub, getBtcAddressFromPubKey, getEvmAddressFromPubKey, getLedgerAppInfo, getLedgerExtendedPublicKey, getMaxTransferAmount, getPubKeyFromTransport, getPublicKeyFromPrivateKey, getTransferTxDetails, getVoidSigner, getWalletFromMnemonic, getXpubFromMnemonic$1 as getXpubFromMnemonic, isERC20Transfer, isNativeTxn, omitUndefinedKeys, onBalanceChange, openLedgerApp, psbt2ToPsbt0, quitLedgerApp, selectUtxos };
2035
+ type SolanaProvider = ReturnType<typeof getSolanaProvider>;
2036
+ declare const isSolanaProvider: (something: unknown) => something is _solana_rpc.RpcDevnet<(_solana_rpc.GetAccountInfoApi & _solana_rpc.GetBalanceApi & _solana_rpc.GetBlockApi & _solana_rpc.GetBlockCommitmentApi & _solana_rpc.GetBlockHeightApi & _solana_rpc.GetBlockProductionApi & _solana_rpc.GetBlocksApi & _solana_rpc.GetBlocksWithLimitApi & _solana_rpc.GetBlockTimeApi & _solana_rpc.GetClusterNodesApi & _solana_rpc.GetEpochInfoApi & _solana_rpc.GetEpochScheduleApi & _solana_rpc.GetFeeForMessageApi & _solana_rpc.GetFirstAvailableBlockApi & _solana_rpc.GetGenesisHashApi & _solana_rpc.GetHealthApi & _solana_rpc.GetHighestSnapshotSlotApi & _solana_rpc.GetIdentityApi & _solana_rpc.GetInflationGovernorApi & _solana_rpc.GetInflationRateApi & _solana_rpc.GetInflationRewardApi & _solana_rpc.GetLargestAccountsApi & _solana_rpc.GetLatestBlockhashApi & _solana_rpc.GetLeaderScheduleApi & _solana_rpc.GetMaxRetransmitSlotApi & _solana_rpc.GetMaxShredInsertSlotApi & _solana_rpc.GetMinimumBalanceForRentExemptionApi & _solana_rpc.GetMultipleAccountsApi & _solana_rpc.GetProgramAccountsApi & _solana_rpc.GetRecentPerformanceSamplesApi & _solana_rpc.GetRecentPrioritizationFeesApi & _solana_rpc.GetSignaturesForAddressApi & _solana_rpc.GetSignatureStatusesApi & _solana_rpc.GetSlotApi & _solana_rpc.GetSlotLeaderApi & _solana_rpc.GetSlotLeadersApi & _solana_rpc.GetStakeMinimumDelegationApi & _solana_rpc.GetSupplyApi & _solana_rpc.GetTokenAccountBalanceApi & _solana_rpc.GetTokenAccountsByDelegateApi & _solana_rpc.GetTokenAccountsByOwnerApi & _solana_rpc.GetTokenLargestAccountsApi & _solana_rpc.GetTokenSupplyApi & _solana_rpc.GetTransactionApi & _solana_rpc.GetTransactionCountApi & _solana_rpc.GetVersionApi & _solana_rpc.GetVoteAccountsApi & _solana_rpc.IsBlockhashValidApi & _solana_rpc.MinimumLedgerSlotApi & _solana_rpc.SendTransactionApi & _solana_rpc.SimulateTransactionApi) | (_solana_rpc.RequestAirdropApi & _solana_rpc.GetAccountInfoApi & _solana_rpc.GetBalanceApi & _solana_rpc.GetBlockApi & _solana_rpc.GetBlockCommitmentApi & _solana_rpc.GetBlockHeightApi & _solana_rpc.GetBlockProductionApi & _solana_rpc.GetBlocksApi & _solana_rpc.GetBlocksWithLimitApi & _solana_rpc.GetBlockTimeApi & _solana_rpc.GetClusterNodesApi & _solana_rpc.GetEpochInfoApi & _solana_rpc.GetEpochScheduleApi & _solana_rpc.GetFeeForMessageApi & _solana_rpc.GetFirstAvailableBlockApi & _solana_rpc.GetGenesisHashApi & _solana_rpc.GetHealthApi & _solana_rpc.GetHighestSnapshotSlotApi & _solana_rpc.GetIdentityApi & _solana_rpc.GetInflationGovernorApi & _solana_rpc.GetInflationRateApi & _solana_rpc.GetInflationRewardApi & _solana_rpc.GetLargestAccountsApi & _solana_rpc.GetLatestBlockhashApi & _solana_rpc.GetLeaderScheduleApi & _solana_rpc.GetMaxRetransmitSlotApi & _solana_rpc.GetMaxShredInsertSlotApi & _solana_rpc.GetMinimumBalanceForRentExemptionApi & _solana_rpc.GetMultipleAccountsApi & _solana_rpc.GetProgramAccountsApi & _solana_rpc.GetRecentPerformanceSamplesApi & _solana_rpc.GetRecentPrioritizationFeesApi & _solana_rpc.GetSignaturesForAddressApi & _solana_rpc.GetSignatureStatusesApi & _solana_rpc.GetSlotApi & _solana_rpc.GetSlotLeaderApi & _solana_rpc.GetSlotLeadersApi & _solana_rpc.GetStakeMinimumDelegationApi & _solana_rpc.GetSupplyApi & _solana_rpc.GetTokenAccountBalanceApi & _solana_rpc.GetTokenAccountsByDelegateApi & _solana_rpc.GetTokenAccountsByOwnerApi & _solana_rpc.GetTokenLargestAccountsApi & _solana_rpc.GetTokenSupplyApi & _solana_rpc.GetTransactionApi & _solana_rpc.GetTransactionCountApi & _solana_rpc.GetVersionApi & _solana_rpc.GetVoteAccountsApi & _solana_rpc.IsBlockhashValidApi & _solana_rpc.MinimumLedgerSlotApi & _solana_rpc.SendTransactionApi & _solana_rpc.SimulateTransactionApi)> | _solana_rpc.RpcMainnet<(_solana_rpc.GetAccountInfoApi & _solana_rpc.GetBalanceApi & _solana_rpc.GetBlockApi & _solana_rpc.GetBlockCommitmentApi & _solana_rpc.GetBlockHeightApi & _solana_rpc.GetBlockProductionApi & _solana_rpc.GetBlocksApi & _solana_rpc.GetBlocksWithLimitApi & _solana_rpc.GetBlockTimeApi & _solana_rpc.GetClusterNodesApi & _solana_rpc.GetEpochInfoApi & _solana_rpc.GetEpochScheduleApi & _solana_rpc.GetFeeForMessageApi & _solana_rpc.GetFirstAvailableBlockApi & _solana_rpc.GetGenesisHashApi & _solana_rpc.GetHealthApi & _solana_rpc.GetHighestSnapshotSlotApi & _solana_rpc.GetIdentityApi & _solana_rpc.GetInflationGovernorApi & _solana_rpc.GetInflationRateApi & _solana_rpc.GetInflationRewardApi & _solana_rpc.GetLargestAccountsApi & _solana_rpc.GetLatestBlockhashApi & _solana_rpc.GetLeaderScheduleApi & _solana_rpc.GetMaxRetransmitSlotApi & _solana_rpc.GetMaxShredInsertSlotApi & _solana_rpc.GetMinimumBalanceForRentExemptionApi & _solana_rpc.GetMultipleAccountsApi & _solana_rpc.GetProgramAccountsApi & _solana_rpc.GetRecentPerformanceSamplesApi & _solana_rpc.GetRecentPrioritizationFeesApi & _solana_rpc.GetSignaturesForAddressApi & _solana_rpc.GetSignatureStatusesApi & _solana_rpc.GetSlotApi & _solana_rpc.GetSlotLeaderApi & _solana_rpc.GetSlotLeadersApi & _solana_rpc.GetStakeMinimumDelegationApi & _solana_rpc.GetSupplyApi & _solana_rpc.GetTokenAccountBalanceApi & _solana_rpc.GetTokenAccountsByDelegateApi & _solana_rpc.GetTokenAccountsByOwnerApi & _solana_rpc.GetTokenLargestAccountsApi & _solana_rpc.GetTokenSupplyApi & _solana_rpc.GetTransactionApi & _solana_rpc.GetTransactionCountApi & _solana_rpc.GetVersionApi & _solana_rpc.GetVoteAccountsApi & _solana_rpc.IsBlockhashValidApi & _solana_rpc.MinimumLedgerSlotApi & _solana_rpc.SendTransactionApi & _solana_rpc.SimulateTransactionApi) | (_solana_rpc.RequestAirdropApi & _solana_rpc.GetAccountInfoApi & _solana_rpc.GetBalanceApi & _solana_rpc.GetBlockApi & _solana_rpc.GetBlockCommitmentApi & _solana_rpc.GetBlockHeightApi & _solana_rpc.GetBlockProductionApi & _solana_rpc.GetBlocksApi & _solana_rpc.GetBlocksWithLimitApi & _solana_rpc.GetBlockTimeApi & _solana_rpc.GetClusterNodesApi & _solana_rpc.GetEpochInfoApi & _solana_rpc.GetEpochScheduleApi & _solana_rpc.GetFeeForMessageApi & _solana_rpc.GetFirstAvailableBlockApi & _solana_rpc.GetGenesisHashApi & _solana_rpc.GetHealthApi & _solana_rpc.GetHighestSnapshotSlotApi & _solana_rpc.GetIdentityApi & _solana_rpc.GetInflationGovernorApi & _solana_rpc.GetInflationRateApi & _solana_rpc.GetInflationRewardApi & _solana_rpc.GetLargestAccountsApi & _solana_rpc.GetLatestBlockhashApi & _solana_rpc.GetLeaderScheduleApi & _solana_rpc.GetMaxRetransmitSlotApi & _solana_rpc.GetMaxShredInsertSlotApi & _solana_rpc.GetMinimumBalanceForRentExemptionApi & _solana_rpc.GetMultipleAccountsApi & _solana_rpc.GetProgramAccountsApi & _solana_rpc.GetRecentPerformanceSamplesApi & _solana_rpc.GetRecentPrioritizationFeesApi & _solana_rpc.GetSignaturesForAddressApi & _solana_rpc.GetSignatureStatusesApi & _solana_rpc.GetSlotApi & _solana_rpc.GetSlotLeaderApi & _solana_rpc.GetSlotLeadersApi & _solana_rpc.GetStakeMinimumDelegationApi & _solana_rpc.GetSupplyApi & _solana_rpc.GetTokenAccountBalanceApi & _solana_rpc.GetTokenAccountsByDelegateApi & _solana_rpc.GetTokenAccountsByOwnerApi & _solana_rpc.GetTokenLargestAccountsApi & _solana_rpc.GetTokenSupplyApi & _solana_rpc.GetTransactionApi & _solana_rpc.GetTransactionCountApi & _solana_rpc.GetVersionApi & _solana_rpc.GetVoteAccountsApi & _solana_rpc.IsBlockhashValidApi & _solana_rpc.MinimumLedgerSlotApi & _solana_rpc.SendTransactionApi & _solana_rpc.SimulateTransactionApi)>;
2037
+ declare const getSolanaProvider: ({ isTestnet, rpcUrl, }: {
2038
+ isTestnet: boolean;
2039
+ rpcUrl: string;
2040
+ }) => _solana_rpc.RpcDevnet<(_solana_rpc.GetAccountInfoApi & _solana_rpc.GetBalanceApi & _solana_rpc.GetBlockApi & _solana_rpc.GetBlockCommitmentApi & _solana_rpc.GetBlockHeightApi & _solana_rpc.GetBlockProductionApi & _solana_rpc.GetBlocksApi & _solana_rpc.GetBlocksWithLimitApi & _solana_rpc.GetBlockTimeApi & _solana_rpc.GetClusterNodesApi & _solana_rpc.GetEpochInfoApi & _solana_rpc.GetEpochScheduleApi & _solana_rpc.GetFeeForMessageApi & _solana_rpc.GetFirstAvailableBlockApi & _solana_rpc.GetGenesisHashApi & _solana_rpc.GetHealthApi & _solana_rpc.GetHighestSnapshotSlotApi & _solana_rpc.GetIdentityApi & _solana_rpc.GetInflationGovernorApi & _solana_rpc.GetInflationRateApi & _solana_rpc.GetInflationRewardApi & _solana_rpc.GetLargestAccountsApi & _solana_rpc.GetLatestBlockhashApi & _solana_rpc.GetLeaderScheduleApi & _solana_rpc.GetMaxRetransmitSlotApi & _solana_rpc.GetMaxShredInsertSlotApi & _solana_rpc.GetMinimumBalanceForRentExemptionApi & _solana_rpc.GetMultipleAccountsApi & _solana_rpc.GetProgramAccountsApi & _solana_rpc.GetRecentPerformanceSamplesApi & _solana_rpc.GetRecentPrioritizationFeesApi & _solana_rpc.GetSignaturesForAddressApi & _solana_rpc.GetSignatureStatusesApi & _solana_rpc.GetSlotApi & _solana_rpc.GetSlotLeaderApi & _solana_rpc.GetSlotLeadersApi & _solana_rpc.GetStakeMinimumDelegationApi & _solana_rpc.GetSupplyApi & _solana_rpc.GetTokenAccountBalanceApi & _solana_rpc.GetTokenAccountsByDelegateApi & _solana_rpc.GetTokenAccountsByOwnerApi & _solana_rpc.GetTokenLargestAccountsApi & _solana_rpc.GetTokenSupplyApi & _solana_rpc.GetTransactionApi & _solana_rpc.GetTransactionCountApi & _solana_rpc.GetVersionApi & _solana_rpc.GetVoteAccountsApi & _solana_rpc.IsBlockhashValidApi & _solana_rpc.MinimumLedgerSlotApi & _solana_rpc.SendTransactionApi & _solana_rpc.SimulateTransactionApi) | (_solana_rpc.RequestAirdropApi & _solana_rpc.GetAccountInfoApi & _solana_rpc.GetBalanceApi & _solana_rpc.GetBlockApi & _solana_rpc.GetBlockCommitmentApi & _solana_rpc.GetBlockHeightApi & _solana_rpc.GetBlockProductionApi & _solana_rpc.GetBlocksApi & _solana_rpc.GetBlocksWithLimitApi & _solana_rpc.GetBlockTimeApi & _solana_rpc.GetClusterNodesApi & _solana_rpc.GetEpochInfoApi & _solana_rpc.GetEpochScheduleApi & _solana_rpc.GetFeeForMessageApi & _solana_rpc.GetFirstAvailableBlockApi & _solana_rpc.GetGenesisHashApi & _solana_rpc.GetHealthApi & _solana_rpc.GetHighestSnapshotSlotApi & _solana_rpc.GetIdentityApi & _solana_rpc.GetInflationGovernorApi & _solana_rpc.GetInflationRateApi & _solana_rpc.GetInflationRewardApi & _solana_rpc.GetLargestAccountsApi & _solana_rpc.GetLatestBlockhashApi & _solana_rpc.GetLeaderScheduleApi & _solana_rpc.GetMaxRetransmitSlotApi & _solana_rpc.GetMaxShredInsertSlotApi & _solana_rpc.GetMinimumBalanceForRentExemptionApi & _solana_rpc.GetMultipleAccountsApi & _solana_rpc.GetProgramAccountsApi & _solana_rpc.GetRecentPerformanceSamplesApi & _solana_rpc.GetRecentPrioritizationFeesApi & _solana_rpc.GetSignaturesForAddressApi & _solana_rpc.GetSignatureStatusesApi & _solana_rpc.GetSlotApi & _solana_rpc.GetSlotLeaderApi & _solana_rpc.GetSlotLeadersApi & _solana_rpc.GetStakeMinimumDelegationApi & _solana_rpc.GetSupplyApi & _solana_rpc.GetTokenAccountBalanceApi & _solana_rpc.GetTokenAccountsByDelegateApi & _solana_rpc.GetTokenAccountsByOwnerApi & _solana_rpc.GetTokenLargestAccountsApi & _solana_rpc.GetTokenSupplyApi & _solana_rpc.GetTransactionApi & _solana_rpc.GetTransactionCountApi & _solana_rpc.GetVersionApi & _solana_rpc.GetVoteAccountsApi & _solana_rpc.IsBlockhashValidApi & _solana_rpc.MinimumLedgerSlotApi & _solana_rpc.SendTransactionApi & _solana_rpc.SimulateTransactionApi)> | _solana_rpc.RpcMainnet<(_solana_rpc.GetAccountInfoApi & _solana_rpc.GetBalanceApi & _solana_rpc.GetBlockApi & _solana_rpc.GetBlockCommitmentApi & _solana_rpc.GetBlockHeightApi & _solana_rpc.GetBlockProductionApi & _solana_rpc.GetBlocksApi & _solana_rpc.GetBlocksWithLimitApi & _solana_rpc.GetBlockTimeApi & _solana_rpc.GetClusterNodesApi & _solana_rpc.GetEpochInfoApi & _solana_rpc.GetEpochScheduleApi & _solana_rpc.GetFeeForMessageApi & _solana_rpc.GetFirstAvailableBlockApi & _solana_rpc.GetGenesisHashApi & _solana_rpc.GetHealthApi & _solana_rpc.GetHighestSnapshotSlotApi & _solana_rpc.GetIdentityApi & _solana_rpc.GetInflationGovernorApi & _solana_rpc.GetInflationRateApi & _solana_rpc.GetInflationRewardApi & _solana_rpc.GetLargestAccountsApi & _solana_rpc.GetLatestBlockhashApi & _solana_rpc.GetLeaderScheduleApi & _solana_rpc.GetMaxRetransmitSlotApi & _solana_rpc.GetMaxShredInsertSlotApi & _solana_rpc.GetMinimumBalanceForRentExemptionApi & _solana_rpc.GetMultipleAccountsApi & _solana_rpc.GetProgramAccountsApi & _solana_rpc.GetRecentPerformanceSamplesApi & _solana_rpc.GetRecentPrioritizationFeesApi & _solana_rpc.GetSignaturesForAddressApi & _solana_rpc.GetSignatureStatusesApi & _solana_rpc.GetSlotApi & _solana_rpc.GetSlotLeaderApi & _solana_rpc.GetSlotLeadersApi & _solana_rpc.GetStakeMinimumDelegationApi & _solana_rpc.GetSupplyApi & _solana_rpc.GetTokenAccountBalanceApi & _solana_rpc.GetTokenAccountsByDelegateApi & _solana_rpc.GetTokenAccountsByOwnerApi & _solana_rpc.GetTokenLargestAccountsApi & _solana_rpc.GetTokenSupplyApi & _solana_rpc.GetTransactionApi & _solana_rpc.GetTransactionCountApi & _solana_rpc.GetVersionApi & _solana_rpc.GetVoteAccountsApi & _solana_rpc.IsBlockhashValidApi & _solana_rpc.MinimumLedgerSlotApi & _solana_rpc.SendTransactionApi & _solana_rpc.SimulateTransactionApi) | (_solana_rpc.RequestAirdropApi & _solana_rpc.GetAccountInfoApi & _solana_rpc.GetBalanceApi & _solana_rpc.GetBlockApi & _solana_rpc.GetBlockCommitmentApi & _solana_rpc.GetBlockHeightApi & _solana_rpc.GetBlockProductionApi & _solana_rpc.GetBlocksApi & _solana_rpc.GetBlocksWithLimitApi & _solana_rpc.GetBlockTimeApi & _solana_rpc.GetClusterNodesApi & _solana_rpc.GetEpochInfoApi & _solana_rpc.GetEpochScheduleApi & _solana_rpc.GetFeeForMessageApi & _solana_rpc.GetFirstAvailableBlockApi & _solana_rpc.GetGenesisHashApi & _solana_rpc.GetHealthApi & _solana_rpc.GetHighestSnapshotSlotApi & _solana_rpc.GetIdentityApi & _solana_rpc.GetInflationGovernorApi & _solana_rpc.GetInflationRateApi & _solana_rpc.GetInflationRewardApi & _solana_rpc.GetLargestAccountsApi & _solana_rpc.GetLatestBlockhashApi & _solana_rpc.GetLeaderScheduleApi & _solana_rpc.GetMaxRetransmitSlotApi & _solana_rpc.GetMaxShredInsertSlotApi & _solana_rpc.GetMinimumBalanceForRentExemptionApi & _solana_rpc.GetMultipleAccountsApi & _solana_rpc.GetProgramAccountsApi & _solana_rpc.GetRecentPerformanceSamplesApi & _solana_rpc.GetRecentPrioritizationFeesApi & _solana_rpc.GetSignaturesForAddressApi & _solana_rpc.GetSignatureStatusesApi & _solana_rpc.GetSlotApi & _solana_rpc.GetSlotLeaderApi & _solana_rpc.GetSlotLeadersApi & _solana_rpc.GetStakeMinimumDelegationApi & _solana_rpc.GetSupplyApi & _solana_rpc.GetTokenAccountBalanceApi & _solana_rpc.GetTokenAccountsByDelegateApi & _solana_rpc.GetTokenAccountsByOwnerApi & _solana_rpc.GetTokenLargestAccountsApi & _solana_rpc.GetTokenSupplyApi & _solana_rpc.GetTransactionApi & _solana_rpc.GetTransactionCountApi & _solana_rpc.GetVersionApi & _solana_rpc.GetVoteAccountsApi & _solana_rpc.IsBlockhashValidApi & _solana_rpc.MinimumLedgerSlotApi & _solana_rpc.SendTransactionApi & _solana_rpc.SimulateTransactionApi)>;
2041
+
2042
+ export { index as Avalanche, BitcoinHistoryTx, BitcoinInputUTXO, BitcoinInputUTXOWithOptionalScript, BitcoinLedgerInputUTXO, BitcoinLedgerWallet, BitcoinOutputUTXO, BitcoinProvider, BitcoinProviderAbstract, BitcoinTx, BitcoinWallet, BitcoinWalletAbstract, BitcoinWalletVoid, DerivationPath, ETH_ACCOUNT_PATH, ETH_COIN_PATH, JsonRpcBatchInternal, LedgerSigner$1 as LedgerSigner, SolanaProvider, addEncodedSigToPsbt, createPSBTV2, createPsbt, createTransferTx, createWalletPolicy, formatAddressForNetworkBech32, getAddressDerivationPath, getAddressFromXPub, getAddressPrivateKeyFromXPriv, getAddressPublicKeyFromXPub, getAppEth, getBech32Address, getBech32AddressFromXPub, getBtcAddressFromPubKey, getEvmAddressFromPubKey, getLedgerAppInfo, getLedgerExtendedPublicKey, getMaxTransferAmount, getPubKeyFromTransport, getPublicKeyFromPrivateKey, getSolanaProvider, getTransferTxDetails, getVoidSigner, getWalletFromMnemonic, getXpubFromMnemonic$1 as getXpubFromMnemonic, isERC20Transfer, isNativeTxn, isSolanaProvider, omitUndefinedKeys, onBalanceChange, openLedgerApp, psbt2ToPsbt0, quitLedgerApp, selectUtxos };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var e=require("bitcoinjs-lib"),t=require("@avalabs/core-utils-sdk"),r=require("coinselect"),s=require("@ledgerhq/hw-app-eth"),n=require("ethers"),a=require("@avalabs/avalanchejs"),i=require("hdkey"),o=require("buffer"),d=require("@openzeppelin/contracts/build/contracts/ERC20.json"),u=require("bip32"),c=require("bip39"),l=require("@ledgerhq/hw-transport"),h=require("@metamask/eth-sig-util"),p=require("ledger-bitcoin"),g=require("@ledgerhq/hw-app-btc/lib/bip32"),m=require("@noble/hashes/sha256"),f=require("@avalabs/glacier-sdk"),x=require("@avalabs/core-chains-sdk"),v=require("create-hash"),w=require("xss"),A=require("bip32-path"),y=require("@avalabs/hw-app-avalanche");function b(e){return e.reduce(((e,t)=>e+t.value),0)}class I{async getUtxoBalance(e,t=!0){const r=await this.getUTXOs(e,t);return{balance:b(r.confirmed),balanceUnconfirmed:b(r.unconfirmed),utxos:r.confirmed,utxosUnconfirmed:r.unconfirmed}}}function T(t,r,s){const n=new e.Psbt({network:s});return t.forEach((e=>{n.addInput({hash:e.txHash,index:e.index,witnessUtxo:{script:Buffer.from(e.script,"hex"),value:e.value}})})),r.forEach((e=>{n.addOutput({value:e.value,address:e.address})})),n}function S(e,t,s,n,a){const i=[{address:e,value:s}],{inputs:o,outputs:d,fee:u}=r(a,i,n);if(!o||!d)return{fee:u};const c=[d[0]],l=d[1];return l&&c.push({address:t,value:l.value}),{inputs:o,outputs:c,fee:u}}function P(e){const t=[];return e.filter((e=>{const r=e.txHash+e.index.toString();return!t.includes(r)&&(t.push(r),!0)}))}function B(e,t,r,s,n,a){const i=S(e,t,r,s,P(n));return i.inputs?{...i,psbt:T(i.inputs,i.outputs,a)}:(console.log("Unable to construct transaction, fee needed: ",i.fee),i)}function C(t,r){return e.payments.p2wpkh({pubkey:t,network:r}).address}function k(e){return new s(e,"w0w")}const E="m/44'/60'",V=`${E}/0'`;var D=(e=>(e.BIP44="bip44",e.LedgerLive="ledger_live",e))(D||{});function M(e,t,r){if(e<0)throw new Error("Account index can not be less than 0.");const s="EVM"===r?"60":"9000";return t==D.BIP44?`m/44'/${s}'/0'/0/${e}`:`m/44'/${s}'/${e}'/0/0`}const U=(e,t)=>t.has(e.from.toLowerCase())||t.has((e.to??"").toLowerCase()),K=(e,t)=>{const r=new n.Interface(d.abi).parseTransaction({data:e.data,value:e.value});if(t.has(e.from.toLowerCase()))return!0;if("transfer"===r?.name)return t.has(r.args[0]?.toLowerCase());if("transferFrom"===r?.name){const e=t.has(r.args[0]?.toLowerCase()),s=t.has(r.args[1]?.toLowerCase());return e||s}return!1};var O=[{inputs:[{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall.Call[]",name:"calls",type:"tuple[]"}],name:"aggregate",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"},{internalType:"bytes[]",name:"returnData",type:"bytes[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"}],name:"getBlockHash",outputs:[{internalType:"bytes32",name:"blockHash",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockCoinbase",outputs:[{internalType:"address",name:"coinbase",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockDifficulty",outputs:[{internalType:"uint256",name:"difficulty",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockGasLimit",outputs:[{internalType:"uint256",name:"gaslimit",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockTimestamp",outputs:[{internalType:"uint256",name:"timestamp",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"addr",type:"address"}],name:"getEthBalance",outputs:[{internalType:"uint256",name:"balance",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getLastBlockHash",outputs:[{internalType:"bytes32",name:"blockHash",type:"bytes32"}],stateMutability:"view",type:"function"}];class N extends n.JsonRpcProvider{url;constructor(e,t,r){super(t,r,{staticNetwork:r}),this.#e="string"==typeof t?new n.FetchRequest(t):void 0===t?new n.FetchRequest("http://localhost:8545"):t.clone(),this.url=this.#e.url,this._maxCalls="number"==typeof e?e:e.maxCalls,"number"!=typeof e&&e?.multiContractAddress&&(this._parentProvider=new n.JsonRpcProvider(this.#e,r,{staticNetwork:r}),this._multicallContract=new n.Contract(e.multiContractAddress,O,this._parentProvider),this._maxCalls=62)}#e;#t=1;_pendingBatchAggregator=null;_pendingBatch=[];_maxCalls;_parentProvider;_multicallContract;send(e,t){if("eth_call"!==e)return super.send(e,t);const r={method:e,params:t,id:this.#t++,jsonrpc:"2.0"};null==this._pendingBatch&&(this._pendingBatch=[]);const s={request:r,resolve:null,reject:null},n=new Promise(((e,t)=>{s.resolve=e,s.reject=t}));return this._pendingBatch.push(s),this._pendingBatchAggregator||(this._pendingBatchAggregator=setTimeout(this.flush,10)),n}flush=()=>{const e=this._pendingBatch?.slice(0,this._maxCalls)??[];!this._pendingBatch||this._pendingBatch?.length<=this._maxCalls?(this._pendingBatch=null,this._pendingBatchAggregator=null):(this._pendingBatch.splice(0,this._maxCalls),setTimeout(this.flush,10));(this._multicallContract?this.batchSendMultiCall:this.batchSend)(e).then((t=>{e?.forEach(((e,r)=>{const s=t[r];if(s.error){const t=new Error(s.error.message);t.code=s.error.code,t.data=s.error.data,e.reject(t)}else e.resolve(s.result)}))})).catch((t=>{e?.forEach((e=>{e.reject(t)}))}))};batchSend=async e=>{const t=e?.map((e=>e.request));if(!this.url||!t)throw new Error("No url");const r=this.#e.clone();r.body=t;return(await r.send()).bodyJson};batchSendMultiCall=async e=>{const t=e.map((e=>({callData:e.request.params[0].data,target:e.request.params[0].to})));return(await this._multicallContract.aggregate(t))[1].map((e=>({result:e})))}}function _(e,t){return u.fromBase58(e).derivePath(`0/${t}`).publicKey}let X=class e extends n.AbstractSigner{type="default";path;provider=null;accountIndex;derivationSpec;transport;_eth;constructor(e=0,t,r,s){super(),this.path=M(e,r,"EVM"),this.accountIndex=e,this.transport=t,this.derivationSpec=r,this._eth=k(t),n.defineProperties(this,{path:this.path,type:"default",provider:s??null})}setTransport(e){this._eth=k(e),this.transport=e}async getAddress(){const e=await this._eth.getAddress(this.path);return n.getAddress(e.address)}async signMessage(e){"string"==typeof e&&(e=n.toUtf8Bytes(e));const t=n.hexlify(e).substring(2),r=await this._eth.signPersonalMessage(this.path,t);return r.r="0x"+r.r,r.s="0x"+r.s,n.Signature.from(r).serialized}async signTransaction(e){const t=await this.populateTransaction(e);delete t.from;const r=n.Transaction.from(t),s=r.unsignedSerialized,a=await this._eth.signTransaction(this.path,s.slice(2),null);return r.signature={v:BigInt("0x"+a.v),r:"0x"+a.r,s:"0x"+a.s},r.serialized}connect(t){return new e(this.accountIndex,this.transport,this.derivationSpec,t)}async signTypedData(e,t,r){const{EIP712Domain:s,...a}=t,i=n.TypedDataEncoder.getPrimaryType(a);try{const s=await this._eth.signEIP712Message(this.path,{domain:{name:e.name||void 0,chainId:e.chainId?Number(e.chainId):void 0,version:e.version||void 0,verifyingContract:e.verifyingContract||void 0,salt:e.salt?.toString()||void 0},types:{EIP712Domain:[{name:"name",type:"string"},{name:"version",type:"string"},{name:"chainId",type:"uint256"},{name:"verifyingContract",type:"address"}],...t},primaryType:i,message:r});return s.r="0x"+s.r,s.s="0x"+s.s,n.Signature.from(s).serialized}catch(s){if(s instanceof l.TransportStatusError&&s.statusCode===l.StatusCodes.INS_NOT_SUPPORTED){const s=h.TypedDataUtils.hashStruct(i,r,t,h.SignTypedDataVersion.V4),a=h.TypedDataUtils.hashStruct("EIP712Domain",e,t,h.SignTypedDataVersion.V4),o=await this._eth.signEIP712HashedMessage(this.path,a.toString("hex"),s.toString("hex"));return o.r="0x"+o.r,o.s="0x"+o.s,n.Signature.from(o).serialized}throw s}}};function L(t,r,s,n,a,i){const o=new p.PsbtV2;return o.setGlobalPsbtVersion(2),o.setGlobalTxVersion(2),o.setGlobalInputCount(t.length),o.setGlobalOutputCount(r.length),t.forEach(((e,t)=>{if(!e.txHex)throw new Error("Input tx hex is not given");o.setInputPreviousTxId(t,Buffer.from(e.txHash,"hex").reverse()),o.setInputOutputIndex(t,e.index),o.setInputNonWitnessUtxo(t,Buffer.from(e.txHex,"hex")),o.setInputWitnessUtxo(t,e.value,Buffer.from(e.script,"hex")),o.setInputBip32Derivation(t,a,n,g.pathStringToArray(i))})),r.forEach(((t,r)=>{const n=e.address.toOutputScript(t.address,s);o.setOutputAmount(r,t.value),o.setOutputScript(r,n)})),o}function F(t,r,s,n){const a=new e.Psbt({network:r}),i=t.getGlobalInputCount(),o=t.getGlobalOutputCount();for(let e=0;e<i;e++){const r=t.getInputWitnessUtxo(e),i=t.getInputBip32Derivation(e,s);a.addInput({nonWitnessUtxo:t.getInputNonWitnessUtxo(e),witnessUtxo:r?{value:r.amount,script:r.scriptPubKey}:void 0,hash:t.getInputPreviousTxid(e),index:t.getInputOutputIndex(e),bip32Derivation:i?[{path:n,pubkey:s,masterFingerprint:i.masterFingerprint}]:void 0})}for(let s=0;s<o;s++)a.addOutput({value:t.getOutputAmount(s),address:e.address.fromOutputScript(t.getOutputScript(s),r)});return a}class H{constructor(t,r){this.pubkey=t,this.provider=r;try{this.ecPair=e.ECPair.fromPublicKey(t)}catch(e){throw new Error("Not a valid public key.")}}ecPair;getAddressP2PKH(){return e.payments.p2pkh({pubkey:this.ecPair.publicKey,network:this.provider.getNetwork()}).address}getAddressBech32(){return C(this.ecPair.publicKey,this.provider.getNetwork())}async getUTXOs(){return this.provider.getUTXOs(this.getAddressBech32(),!0)}async getBalances(){return this.provider.getBalances(this.getAddressBech32())}async getUtxoBalance(){return this.provider.getUtxoBalance(this.getAddressBech32())}connect(e){this.provider=e}getProvider(){return this.provider}getPublicKey(){return this.ecPair.publicKey}createTransferTx(e,t,r,s){return B(e,this.getAddressBech32(),t,r,s,this.provider.getNetwork())}}class R extends H{keypair;constructor(t,r){const s=e.ECPair.fromPrivateKey(t);super(s.publicKey,r),this.keypair=s}static async fromMnemonic(e,t,r,s=D.BIP44){if(t<0)throw new Error("Account index must be >= 0");if(!c.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");const n=await c.mnemonicToSeed(e),a=u.fromSeed(n),i=M(t,s,"EVM"),o=a.derivePath(i);if(!o.privateKey)throw new Error("Unable to derive private key from the given mnemonic.");return new R(o.privateKey,r)}signTx(e,t){const r=T(e,t,this.provider.getNetwork());return Promise.resolve(this.signPsbt(r))}static fromEthersWallet(e,t){const r=e.privateKey;if(!r)throw new Error("Unable to get private key from ethers wallet.");const s=Buffer.from(r.substring(2),"hex");return new R(s,t)}signPsbt(e){return e.signAllInputs(this.keypair),e.validateSignaturesOfAllInputs(),e.finalizeAllInputs(),e.extractTransaction()}}var $=(e=>(e.Base="base",e.AddValidator="add_validator",e.AddDelegator="add_delegator",e.Export="export",e.Import="import",e.CreateSubnet="create_subnet",e.CreateChain="create_chain",e.ConvertSubnetToL1="convert_subnet_to_l1",e.RegisterL1Validator="register_l1_validator",e.SetL1ValidatorWeight="set_l1_validator_weight",e.IncreaseL1ValidatorBalance="increase_l1_validator_balance",e.DisableL1Validator="disable_l1_validator",e.AddSubnetValidator="add_subnet_validator",e.RemoveSubnetValidator="remove_subnet_validator",e.AddPermissionlessValidator="add_permissionless_validator",e.AddPermissionlessDelegator="add_permissionless_delegator",e.TransformSubnet="transform_subnet",e.TransferSubnetOwnership="transfer_subnet_ownership",e.Unknown="unknown",e))($||{});const q=e=>{switch(e){case"C":return a.EVM;case"X":return a.AVM;case"P":return a.PVM;default:throw new Error(`Unable to get VM type for chain "${e}"`)}};const{getTransferableInputsByTx:W,AddressMaps:j}=a.utils,J=async({tx:e,fromAddressBytes:t,provider:r,credentials:s,utxos:n})=>{const i=W(e);let o=j.fromTransferableInputs(i,n,BigInt(Math.floor((new Date).getTime()/1e3)),t);if((e=>a.pvmSerial.isCreateChainTx(e)||a.pvmSerial.isAddSubnetValidatorTx(e)||a.pvmSerial.isRemoveSubnetValidatorTx(e)||a.pvmSerial.isTransformSubnetTx(e)||a.pvmSerial.isTransferSubnetOwnershipTx(e)||a.pvmSerial.isConvertSubnetToL1Tx(e))(e))try{const t=await(async({tx:e,provider:t,addressMaps:r})=>{const s=e.getSubnetAuth().values(),n=await t.getApiP().getSubnet({subnetID:e.getSubnetID().value()}),i=a.OutputOwners.fromNative(n.controlKeys.map((e=>a.utils.parse(e)[2])),BigInt(n.locktime),Number(n.threshold)).addrs.reduce(((e,t,r)=>(s.includes(r)&&e.push([t,r]),e)),[]);return r.push(new a.utils.AddressMap(i)),r})({tx:e,provider:r,addressMaps:o});return new a.UnsignedTx(e,n,t,s)}catch(e){throw new Error(`Error while preparing subnet authorization data: ${e.message}`)}else a.pvmSerial.isDisableL1ValidatorTx(e)&&(o=await async function(e,t,r){try{const{deactivationOwner:s}=await r.getApiP().getL1Validator(t.validationId.toString()),n=t.getDisableAuth().values(),i=s.addresses.reduce(((e,t,r)=>(n.includes(r)&&e.push([t,r]),e)),[]);return e.push(new a.utils.AddressMap(i)),e}catch(e){throw new Error(`Error while preparing disableAuth data: ${e.message}`)}}(o,e,r));return new a.UnsignedTx(e,n,o,s)},{bufferToHex:z,packTx:Y}=a.utils,{publicKeyBytesToAddress:G,recoverPublicKey:Q}=a.secp256k1,Z=new a.Signature(new Uint8Array(Array(65).fill(0))),ee=(e,t)=>{const r=Math.max(...e);if(!isFinite(r))throw new Error("Error while adding placeholder signatures for the provided indices.");const s=new Array(r+1).fill(Z);if(!t)return s;const{unsignedTx:n,credentialIndex:a}=t,i=n.getCredentials()[a];if(!i)return s;const o=Y(n.getTx()),d=m.sha256(o),u=Z.toString();for(const e of i.toJSON()){if(e.toString()===u)continue;const t=Q(d,e.toBytes()),r={toHex:()=>z(G(t))},i=n.addressMaps.getSigIndicesForAddress(r,!1)??[];for(const t of i)t[0]===a&&(s[t[1]]=e)}return s};function te(e){return a.utils.bufferToHex(a.utils.addChecksum(e.toBytes()))}const{getManagerForVM:re,hexToBuffer:se,unpackWithManager:ne}=a.utils,ae=async({transactionHex:e,chainAlias:t,provider:r,utxos:s})=>{const n=q(t);if(n===a.EVM)throw new Error("EVM transactions are not supported");const i=se(e),o=ne(n,i),d=await(async({tx:e,txBytes:t,provider:r,vm:s,utxos:n})=>{try{const i=re(s).unpack(t,a.avaxSerial.SignedTx),o=await J({tx:e,utxos:n,provider:r,credentials:i.getCredentials()});return e.getSigIndices().map(((e,t)=>new a.Credential(ee(e,{unsignedTx:o,credentialIndex:t}))))}catch(t){return e.getSigIndices().map((e=>new a.Credential(ee(e))))}})({tx:o,txBytes:i,provider:r,vm:n,utxos:s});return J({tx:o,provider:r,credentials:d,utxos:s})},{parseBech32:ie,format:oe}=a.utils,{publicKeyBytesToAddress:de}=a.secp256k1;class ue{constructor(e,t){this.baseUrl=e,this.context=t;const r=`${e}/ext/bc/C/rpc`;this.evmRpc=new n.JsonRpcProvider(r)}evmRpc;async getEvmFeeData(){return this.evmRpc.getFeeData()}getContext(){return this.context}getChainID(e){switch(e){case"X":return this.context.xBlockchainID;case"P":return this.context.pBlockchainID;case"C":return this.context.cBlockchainID}}getNetworkID(){return this.context.networkID}getHrp(){return a.networkIDs.getHRP(this.getNetworkID())}getApiX(){return new a.avm.AVMApi(this.baseUrl)}getApiP(){return new a.pvm.PVMApi(this.baseUrl)}getApiC(){return new a.evm.EVMApi(this.baseUrl)}getInfo(){return new a.info.InfoApi(this.baseUrl)}getApi(e){switch(e){case"X":return this.getApiX();case"P":return this.getApiP();case"C":return this.getApiC()}}getAvaxID(){return this.getContext().avaxAssetID}getAddress(e,r){const s=t.strip0x(n.SigningKey.computePublicKey(e,!0)),a=Buffer.from(s,"hex"),i=de(a);return oe(r,this.getHrp(),i)}getAddressFromBuffer(e,t){return oe(t,this.getHrp(),e)}formatAddress(e,t){const[,r]=ie(e);return oe(t,this.getHrp(),r)}getApiByVM(e){switch(e){case"AVM":return this.getApiX();case"PVM":return this.getApiP();case"EVM":return this.getApiC()}}getApiByChainID(e){switch(e){case this.context.xBlockchainID:return this.getApiX();case this.context.pBlockchainID:return this.getApiP();case this.context.cBlockchainID:return this.getApiC()}}async issueTx(e){const t=e.unsignedTx.getVM(),r=te(e);return this.issueTxHex(r,t)}async issueTxHex(e,t){return this.getApiByVM(t).issueTx({tx:e})}async waitForTransaction(e,t,r=6e4){const s=this.getApiByVM(t),n=Date.now();return new Promise(((t,i)=>{const o=async()=>{let d;switch(r&&n+r<Date.now()&&i(new Error("Timeout")),d=s instanceof a.evm.EVMApi?await s.getAtomicTxStatus(e):await s.getTxStatus({txID:e,includeReason:!0}),d.status){case"Accepted":case"Committed":return void t({success:!0});case"Dropped":case"Rejected":return void t({success:!1});default:setTimeout((()=>{o()}),1e3)}};o()}))}}const ce={weights:a.Common.createDimensions({bandwidth:1,dbRead:1e3,dbWrite:1e3,compute:4}),maxCapacity:BigInt(1e6),maxPerSecond:BigInt(1e5),targetPerSecond:BigInt(5e4),minPrice:BigInt(1),excessConversionConstant:BigInt(2164043)},le={xBlockchainID:"2oYMBNV4eNHyqk2fjjV5nVQLDbtmNJzq5s3qs3Lo6ftnC6FByM",pBlockchainID:"11111111111111111111111111111111LpoYY",cBlockchainID:"2q9e4r6Mu3U68nU1fYjgbR6JvwrRx36CohpAX5UQxse55x1Q5",avaxAssetID:"FvwEAhmxKfeiG8SnEvq42hc6whRyY3EFYAvebMqDNDGCgxN5Z",baseTxFee:BigInt(1e6),createAssetTxFee:BigInt(1e7),networkID:1,hrp:"avax",platformFeeConfig:ce},he={xBlockchainID:"2JVSBoinj9C2J33VntvzYtVJNZdN2NKiwwKjcumHUWEb5DbBrm",pBlockchainID:"11111111111111111111111111111111LpoYY",cBlockchainID:"yH8D7ThNJkxmtkuv2jgBa4P1Rn3Qpr4pPr7QYNfcdoS6k6HWp",avaxAssetID:"U8iRqJoiJm8xZHAacmvYyZVwqQx6uDNtQeP3CQ6fcgQk3JqnK",baseTxFee:BigInt(1e6),createAssetTxFee:BigInt(1e7),networkID:5,hrp:"fuji",platformFeeConfig:ce},pe={xBlockchainID:"2piQ2AVHCjnduiWXsSY15DtbVuwHE2cwMHYnEXHsLL73BBkdbV",pBlockchainID:"11111111111111111111111111111111LpoYY",cBlockchainID:"vV3cui1DsEPC3nLCGH9rorwo8s6BYxM2Hz4QFE5gEYjwTqAu",avaxAssetID:"22jjRVdyTJiAEtcZciAVR8bTFyVDUVoo1T3o5PiDspQSZ2maXR",baseTxFee:1000000n,createAssetTxFee:1000000n,networkID:76,hrp:"custom",platformFeeConfig:ce};class ge extends ue{constructor(e,t){super(e,t)}static async fromBaseURL(e){const t=await a.Context.getContextFromURI(e);try{await new a.info.InfoApi(e).getUpgradesInfo();return new ge(e,t)}catch{return new ge(e,t)}}static getDefaultMainnetProvider(){return new ge(x.AVALANCHE_XP_NETWORK.rpcUrl,le)}static getDefaultFujiProvider(){return new ge(x.AVALANCHE_XP_TEST_NETWORK.rpcUrl,he)}static getDefaultDevnetProvider(){return new ge(x.AVALANCHE_P_DEV_NETWORK.rpcUrl,pe)}}const{bytesCompare:me,parseBech32:fe}=a.utils,xe=(e,t)=>"P"===t,ve=(e,t,r)=>{const s=xe(0,t)?e.amount:e.asset?.amount;return new a.TransferOutput(new a.BigIntPr(BigInt(s)),a.OutputOwners.fromNative(e.addresses.map((e=>fe(e)[1])).sort(me),BigInt(r??0),e.threshold))},we=(e,t)=>{const r=((e,t)=>{const r=t===f.Network.FUJI,s=t===f.Network.DEVNET,{cBlockchainID:n,xBlockchainID:a,pBlockchainID:i}=s?pe:r?he:le;if(n===e)return"C";if(a===e)return"X";if(i===e)return"P";throw new Error(`Unknown chainId "${e}"`)})(e.createdOnChainId,t),s=xe(0,r)?e.txHash:e.creationTxHash,n=xe(0,r)?e.assetId:e.asset?.assetId;return new a.Utxo(a.avaxSerial.UTXOID.fromNative(s,Number(e.outputIndex)),a.Id.fromString(n),((e,t)=>xe(0,t)?e.stakeableLocktime?new a.pvmSerial.StakeableLockOut(new a.BigIntPr(BigInt(e.stakeableLocktime??0)),ve(e,t,e.platformLocktime??0)):ve(e,t,e.platformLocktime):ve(e,t,e.locktime))(e,r))},{unpackWithManager:Ae,parse:ye,bufferToHex:be,AddressMaps:Ie,AddressMap:Te}=a.utils;function Se(e){const t=Buffer.from(e,"utf8"),r=Buffer.alloc(4);r.writeUInt32BE(t.length,0);const s=Buffer.from(`Avalanche Signed Message:\n${r}${e}`,"utf8");return v("sha256").update(s).digest()}const Pe=1024,Be=1024;async function Ce(e,t,r){const s=e.slice(0,Pe),n=e.slice(Pe),a=await ke(t,{...r,addresses:s});if(n.length){const s=await Ce(n,t,{...r,addresses:e});return a.merge(s)}return a}async function ke(e,t){if(t.addresses.length>Pe)throw new Error(`Can not get UTXOs for more than ${Pe} addresses.`);const{endIndex:r,utxos:s}=await e.getUTXOs(t),n=new a.utils.UtxoSet(s);if(s.length>=Be){const s=await ke(e,{...t,startIndex:r});return n.merge(s)}return n}function Ee(){return BigInt(Math.floor(Date.now()/1e3))}const{getUtxoInfo:Ve}=a.utils;async function De(e,t){const r=e.slice(0,256),s=e.slice(256),n=await t.getStake({addresses:r});if(s.length){const e=await De(s,t);return{staked:n.staked+e.staked,stakedOutputs:[...n.stakedOutputs,...e.stakedOutputs]}}return n}const{getTransferableInputsByTx:Me,hexToBuffer:Ue,unpackWithManager:Ke}=a.utils;function Oe(e,t=!0){try{if(t){const[t]=a.utils.parse(e);if(!["X","P","C"].includes(t))return!1}else a.utils.parseBech32(e);return!0}catch(e){return!1}}const Ne=e=>{if([le.xBlockchainID,he.xBlockchainID,pe.xBlockchainID].includes(e))return"AVM";if([le.pBlockchainID,he.pBlockchainID,pe.pBlockchainID].includes(e))return"PVM";if([le.cBlockchainID,he.cBlockchainID,pe.cBlockchainID].includes(e))return"EVM";throw new Error("Unknown chain id. Failed to get alias.")},_e=(e,t)=>e.reduce(((e,r)=>r.assetId.toString()!==t?e:e+r.output.amount()),BigInt(0)),Xe=(e,t)=>e.reduce(((e,r)=>r.assetId.toString()!==t?e:e+r.input.amount()),BigInt(0));var Le={parseCreateSubnetTx:e=>a.pvmSerial.isCreateSubnetTx(e)?({feeData:t,provider:r})=>({type:$.CreateSubnet,chain:e.getVM(),threshold:e.getSubnetOwners().threshold.value(),controlKeys:e.getSubnetOwners().addrs.map((e=>`P-${e.toString(r.getHrp())}`)),...t}):null,parseCreateChainTx:e=>a.pvmSerial.isCreateChainTx(e)?({feeData:t})=>({type:$.CreateChain,chain:e.getVM(),subnetID:e.getSubnetID().value(),chainName:e.chainName.value(),chainID:e.getBlockchainId(),vmID:e.vmID.value(),fxIDs:e.fxIds.map((e=>e.value())),genesisData:e.genesisData.toString(),...t}):null,parseAddSubnetValidatorTx:e=>a.pvmSerial.isAddSubnetValidatorTx(e)?({feeData:t})=>({type:$.AddSubnetValidator,chain:e.getVM(),stake:e.subnetValidator.validator.weight.value(),nodeID:e.subnetValidator.validator.nodeId.value(),start:e.subnetValidator.validator.startTime.value().toString(),end:e.subnetValidator.validator.endTime.value().toString(),subnetID:e.getSubnetID().value(),...t}):null,parseRemoveSubnetValidatorTx:e=>a.pvmSerial.isRemoveSubnetValidatorTx(e)?({feeData:t})=>({type:$.RemoveSubnetValidator,chain:e.getVM(),nodeID:e.nodeId.toString(),subnetID:e.getSubnetID().value(),...t}):null,parseImportTx:e=>a.pvmSerial.isImportTx(e)||a.avmSerial.isImportTx(e)||a.evmSerial.isImportTx(e)?a.evmSerial.isImportTx(e)?({feeData:t,assetId:r})=>({type:$.Import,chain:e.getVM(),source:Ne(e.sourceChain.value()),amount:Xe(e.importedInputs,r),...t}):({feeData:t,assetId:r})=>({type:$.Import,chain:e.getVM(),source:Ne(e.sourceChain.value()),amount:Xe(e.ins,r),...t}):null,parseExportTx:e=>a.pvmSerial.isExportTx(e)||a.avmSerial.isExportTx(e)||a.evmSerial.isExportTx(e)?a.evmSerial.isExportTx(e)?({feeData:t,assetId:r})=>({type:$.Export,chain:e.getVM(),destination:Ne(e.destinationChain.toString()),amount:_e(e.exportedOutputs,r),...t}):({feeData:t,assetId:r})=>({type:$.Export,chain:e.getVM(),destination:Ne(e.destination.value()),amount:_e(e.outs,r),...t}):null,parseBaseTx:e=>a.avmSerial.isAvmBaseTx(e)||a.pvmSerial.isPvmBaseTx(e)?async({feeData:t,currentAddress:r,provider:s})=>{const n=e.baseTx,i=await(async(e,t)=>{const r=e.baseTx,s=new Set;if(r.outputs.forEach((e=>{s.add(e.assetId.value())})),a.avmSerial.isAvmBaseTx(e)){const e=await Promise.all([...s.values()].map((e=>t.getApiX().getAssetDescription(e))));return r.outputs.reduce(((r,n)=>{if(n.output instanceof a.TransferOutput){const a=n.assetId.value(),i=[...s.values()].indexOf(a),o=e[i],d=n.output.outputOwners.addrs.map((e=>`X-${e.toString(t.getContext().hrp)}`));return[...r,{assetId:a,amount:n.output.amount(),locktime:n.output.getLocktime(),threshold:BigInt(n.output.getThreshold()),assetDescription:o,owners:d,isAvax:t.getContext().avaxAssetID===a}]}return r}),[])}return r.outputs.reduce(((e,r)=>{if(r.output instanceof a.TransferOutput){const s=r.assetId.value(),n=r.output.outputOwners.addrs.map((e=>`P-${e.toString(t.getContext().hrp)}`));return[...e,{assetId:s,amount:r.output.amount(),locktime:r.output.getLocktime(),threshold:BigInt(r.output.getThreshold()),owners:n,isAvax:t.getContext().avaxAssetID===s}]}return e}),[])})(e,s),o=Ee(),d=i.filter((e=>!(1===e.owners.length&&e.owners[0]===r&&e.locktime<=o)));return{type:$.Base,chain:e.getVM(),outputs:d,memo:w(Buffer.from(n.memo.toBytes()).toString("utf-8",4)),...t}}:null,parseAddPermissionlessValidatorTx:e=>{if(!a.pvmSerial.isAddPermissionlessValidatorTx(e))return null;let t,r;return a.pvmSerial.isSigner(e.signer)&&(r=a.utils.bufferToHex(e.signer.proof.publicKey),t=a.utils.bufferToHex(e.signer.proof.signature)),({feeData:s})=>({type:$.AddPermissionlessValidator,chain:e.getVM(),stake:e.subnetValidator.validator.weight.value(),nodeID:e.subnetValidator.validator.nodeId.value(),start:e.subnetValidator.validator.startTime.value().toString(),end:e.subnetValidator.validator.endTime.value().toString(),subnetID:e.subnetValidator.subnetId.value(),delegationFee:e.shares.value(),stakeOuts:e.stake,rewardOwner:e.getValidatorRewardsOwner(),delegationRewardOwner:e.getDelegatorRewardsOwner(),signer:e.signer,publicKey:r,signature:t,...s})},parseAddPermissionlessDelegatorTx:e=>a.pvmSerial.isAddPermissionlessDelegatorTx(e)?({feeData:t})=>({type:$.AddPermissionlessDelegator,chain:e.getVM(),stake:e.subnetValidator.validator.weight.value(),nodeID:e.subnetValidator.validator.nodeId.value(),start:e.subnetValidator.validator.startTime.value().toString(),end:e.subnetValidator.validator.endTime.value().toString(),subnetID:e.subnetValidator.subnetId.value(),stakeOuts:e.stake,delegatorRewardsOwner:e.getDelegatorRewardsOwner(),...t}):null,parseTransferSubnetOwnershipTx:e=>a.pvmSerial.isTransferSubnetOwnershipTx(e)?({feeData:t,provider:r})=>({type:$.TransferSubnetOwnership,chain:e.getVM(),subnetID:e.subnetID.value(),threshold:e.getSubnetOwners().threshold.value(),controlKeys:e.getSubnetOwners().addrs.map((e=>`P-${e.toString(r.getHrp())}`)),...t}):null,parseConvertSubnetTx:e=>a.pvmSerial.isConvertSubnetToL1Tx(e)?({feeData:t,provider:r})=>{const s=r.getHrp(),n=e=>`P-${e.toString(s)}`;return{type:$.ConvertSubnetToL1,chain:e.getVM(),managerAddress:n(a.Address.fromHex(e.address.toString("hex"))),validators:e.validators.map((e=>({nodeId:a.NodeId.fromHex(e.nodeId.toString("hex")).toString(),stake:e.weight.value(),balance:e.balance.value(),remainingBalanceOwners:e.remainingBalanceOwner.addresses.map(n),deactivationOwners:e.deactivationOwner.addresses.map(n)}))),chainID:e.chainID.value(),subnetID:e.subnetID.value(),...t}}:null,parseRegisterL1ValidatorTx:e=>a.pvmSerial.isRegisterL1ValidatorTx(e)?({feeData:t})=>({type:$.RegisterL1Validator,chain:e.getVM(),balance:e.balance.value(),...t}):null,parseIncreaseL1ValidatorBalanceTx:e=>a.pvmSerial.isIncreaseL1ValidatorBalanceTx(e)?({feeData:t})=>({type:$.IncreaseL1ValidatorBalance,chain:e.getVM(),balance:e.balance.value(),validationId:e.validationId.toString(),...t}):null,parseSetL1ValidatorWeightTx:e=>a.pvmSerial.isSetL1ValidatorWeightTx(e)?({feeData:t})=>({type:$.SetL1ValidatorWeight,chain:e.getVM(),...t}):null,parseDisableL1ValidatorTx:e=>a.pvmSerial.isDisableL1ValidatorTx(e)?({feeData:t})=>({type:$.DisableL1Validator,chain:e.getVM(),validationId:e.validationId.toString(),...t}):null};const{getBurnedAmountByTx:Fe,getOutputAmounts:He,getInputAmounts:Re,validateBurnedAmount:$e}=a.utils;function qe(e,t,r){return[...e].sort(((e,s)=>{for(let n=0;n<t.length;n++){const a=t[n];if(e[a]>s[a])return"asc"===r?1:-1;if(e[a]<s[a])return"asc"===r?-1:1}return 0}))}function We(e){const t=Ee(),r=e.map((e=>({utxo:e,...a.utils.getUtxoInfo(e)}))),s=r.filter((e=>e.stakeableLocktime<=t)),n=r.filter((e=>e.stakeableLocktime>t)),i=qe(s,["amount"],"desc"),o=qe(n,["stakeableLocktime","amount"],"desc"),[d,...u]=i;return[...d?[d]:[],...o,...u].map((e=>e.utxo))}function je(e,t){return qe(e.map((e=>({utxo:e,...a.utils.getUtxoInfo(e)}))),["amount"],t?"desc":"asc").map((e=>e.utxo))}const Je=e=>je(e,!0),ze=e=>je(e,!1);const{getUtxoInfo:Ye}=a.utils;var Ge=(e=>(e.ExportP="ExportP",e.ImportP="ImportP",e.AddPermissionlessValidator="AddPermissionlessValidator",e.AddPermissionlessDelegator="AddPermissionlessDelegator",e.BaseP="BaseP",e.ConsolidateP="ConsolidateP",e))(Ge||{});const Qe="NodeID-8TArWpFgH3sazEH8qP4gUjtGtFMvjw1aR",Ze="11111111111111111111111111111111LpoYY",et=(e,t)=>e.reduce(((e,t)=>e+Ye(t).amount),BigInt(0))-t,tt={BaseP:{sortFunction:Je,unsignedTxBuilder:(e,t,r)=>{const s=e.getProvider().getContext();return e.baseTX({utxoSet:new a.utils.UtxoSet(t),chain:"P",toAddress:e.getCurrentAddress("P"),amountsPerAsset:{[s.avaxAssetID]:et(t,s.baseTxFee)},feeState:r})}},ConsolidateP:{sortFunction:ze,unsignedTxBuilder:(e,t,r)=>{const s=e.getProvider().getContext();return e.consolidateP({utxoSet:new a.utils.UtxoSet(t),amount:et(t,s.baseTxFee),feeState:r})}},AddPermissionlessValidator:{sortFunction:We,unsignedTxBuilder:(e,t,r)=>e.addPermissionlessValidator({utxoSet:new a.utils.UtxoSet(t),nodeId:Qe,start:Ee(),end:Ee()+BigInt(1e3),weight:et(t,e.getProvider().getContext().baseTxFee),subnetId:Ze,shares:5,feeState:r,fromAddresses:void 0,rewardAddresses:void 0,delegatorRewardAddresses:void 0,publicKey:Buffer.from(a.utils.hexToBuffer("0x8f95423f7142d00a48e1014a3de8d28907d420dc33b3052a6dee03a3f2941a393c2351e354704ca66a3fc29870282e15")),signature:Buffer.from(a.utils.hexToBuffer("0x86a3ab4c45cfe31cae34c1d06f212434ac71b1be6cfe046c80c162e057614a94a5bc9f1ded1a7029deb0ba4ca7c9b71411e293438691be79c2dbf19d1ca7c3eadb9c756246fc5de5b7b89511c7d7302ae051d9e03d7991138299b5ed6a570a98"))})},AddPermissionlessDelegator:{sortFunction:We,unsignedTxBuilder:(e,t,r)=>e.addPermissionlessDelegator({utxoSet:new a.utils.UtxoSet(t),nodeId:Qe,start:Ee(),end:Ee()+BigInt(1e3),weight:et(t,e.getProvider().getContext().baseTxFee),subnetId:Ze,feeState:r})},ExportP:{sortFunction:Je,unsignedTxBuilder:(e,t,r)=>e.exportP({amount:et(t,e.getProvider().getContext().baseTxFee),utxoSet:new a.utils.UtxoSet(t),destination:"X",feeState:r})},ImportP:{sortFunction:Je,unsignedTxBuilder:(e,t,r)=>e.importP({utxoSet:new a.utils.UtxoSet(t),sourceChain:"X",feeState:r})}};function rt(e){return A.validateString(e,!0)&&6===e.split("/").length}function st(e){if("object"!=typeof e||!e)throw new Error("feeState parameter is required post E-upgrade")}const{parse:nt,hexToBuffer:at}=a.utils;class it{constructor(e){this.provider=e}setProvider(e){this.provider=e}getProvider(){return this.provider}async getUTXOs(e){const t=this.provider.getApi(e);return Ce(this.getAddresses(e),t)}async getStake(){const e=this.provider.getApiP();return De(this.getAddresses("P"),e)}async getAtomicUTXOs(e,t){if(e===t)throw new Error("Chain can not be the same as source chain.");const r=this.provider.getApi(e),s=this.provider.getChainID(t);return Ce(this.getAddresses(e),r,{sourceChain:s,addresses:[]})}async getNonce(){const e=this.getAddressEVM();return await this.provider.evmRpc.getTransactionCount(e)}exportX(e,t,r,s){s=s||this.getCurrentAddress(r);const n=nt(s)[2],i=this.provider.getAvaxID(),o=a.TransferableOutput.fromNative(i,e,[n]),d=je(t.getUTXOs(),!0),u=this.provider.getChainID(r),c=this.getAddresses("X").map((e=>nt(e)[2])),l=nt(this.getChangeAddress("X"))[2];return a.avm.newExportTx(this.provider.getContext(),u,c,d,[o],{threshold:1,changeAddresses:[l]})}importP({utxoSet:e,sourceChain:t,toAddress:r,threshold:s,feeState:n,locktime:i}){const o=this.provider.getChainID(t),d=this.getAddresses("P").map((e=>nt(e)[2]));nt(this.getChangeAddress("P"))[2],r=r||this.getCurrentAddress("P");const u=nt(r)[2],c=e.getUTXOs();return st(n),a.pvm.newImportTx({fromAddressesBytes:d,utxos:c,toAddressesBytes:[u],sourceChainId:o,threshold:s,feeState:n,locktime:i},this.provider.getContext())}importX(e,t,r){const s=this.provider.getChainID(t),n=this.getAddresses("X").map((e=>nt(e)[2])),i=nt(this.getChangeAddress("X"))[2];r=r||this.getCurrentAddress("X");const o=nt(r)[2];return a.avm.newImportTx(this.provider.getContext(),s,e.getUTXOs(),[o],n,{changeAddresses:[i]})}importC(e,r,s,n,i){const o=this.provider.getChainID(r),d=this.getAddresses("C").map((e=>nt(e)[2]));i=i||this.getAddressEVM();const u=Buffer.from(t.strip0x(i),"hex");return a.evm.newImportTxFromBaseFee(this.provider.getContext(),u,d,e.getUTXOs(),o,s,n)}exportC(e,t,r,s,n){const i=at(this.getAddressEVM()),o=this.provider.getChainID(t);n=n||this.getCurrentAddress(t);const d=nt(n)[2],u=s/BigInt(1e9);return a.evm.newExportTxFromBaseFee(this.provider.getContext(),u,e,o,i,[d],r)}exportP({amount:e,utxoSet:t,destination:r,feeState:s,toAddress:n}){n=n||this.getCurrentAddress(r);const i=nt(n)[2],o=this.provider.getAvaxID(),d=a.TransferableOutput.fromNative(o,e,[i]),u=je(t.getUTXOs(),!0),c=this.provider.getChainID(r),l=this.getAddresses("P").map((e=>nt(e)[2])),h=nt(this.getChangeAddress("P"))[2];return st(s),a.pvm.newExportTx({changeAddressesBytes:[h],fromAddressesBytes:l,utxos:u,outputs:[d],destinationChainId:c,feeState:s},this.provider.getContext())}consolidateP({utxoSet:e,amount:t,feeState:r,toAddress:s,options:n}){const i=ze(e.getUTXOs());s=s??this.getCurrentAddress("P");const o=nt(s)[2],d=this.provider.getContext(),u=[a.TransferableOutput.fromNative(d.avaxAssetID,t,[o])],c=this.getAddresses("P").map((e=>nt(e)[2])),l=nt(this.getChangeAddress("P"))[2],h=n?.changeAddresses??[l];return st(r),a.pvm.newBaseTx({changeAddressesBytes:h,fromAddressesBytes:c,utxos:i,outputs:u,minIssuanceTime:n?.minIssuanceTime,memo:n?.memo,feeState:r},d)}baseTX({utxoSet:e,chain:t,toAddress:r,amountsPerAsset:s,feeState:n,options:i,fromAddresses:o}){const[d,u,c]=nt(r);if(d!==t||u!==this.provider.getHrp())throw new Error(`Invalid recipient address "${r}"`);const l=Object.entries(s).map((([e,t])=>a.TransferableOutput.fromNative(e,t,[c]))),h=je(e.getUTXOs(),!0),p=(o??this.getAddresses(t)).map((e=>nt(e)[2])),g=nt(this.getChangeAddress("P"))[2],m=i?.changeAddresses??[g];return"X"===t?a.avm.newBaseTx(this.provider.getContext(),p,h,l,i):(st(n),a.pvm.newBaseTx({changeAddressesBytes:m,fromAddressesBytes:p,utxos:h,outputs:l,minIssuanceTime:i?.minIssuanceTime,memo:i?.memo,feeState:n},this.provider.getContext()))}convertSubnetToL1({utxoSet:e,chainId:t,subnetId:r,subnetAuth:s,feeState:n,address:i,validators:o,options:d,fromAddresses:u}){const c=(u??this.getAddresses("P")).map((e=>nt(e)[2])),l=nt(this.getChangeAddress("P"))[2],h=d?.changeAddresses??[l],p=o.map((({nodeId:e,pubKey:t,signature:r,balance:s,weight:n,deactivationOwner:i,remainingBalanceOwner:o})=>{const d=new a.pvmSerial.ProofOfPossession(Uint8Array.from(a.utils.hexToBuffer(t)),Uint8Array.from(a.utils.hexToBuffer(r))),u=a.PChainOwner.fromNative(o.addresses.map((e=>nt(e)[2])),o.threshold??1),c=a.PChainOwner.fromNative(i.addresses.map((e=>nt(e)[2])),i.threshold??1);return a.L1Validator.fromNative(e,n,s,d,u,c)}));return a.pvm.newConvertSubnetToL1Tx({changeAddressesBytes:h,validators:p,fromAddressesBytes:c,address:nt(i)[2],chainId:t,subnetId:r,subnetAuth:s,feeState:n,utxos:je(e.getUTXOs(),!0)},this.provider.getContext())}registerL1Validator({utxoSet:e,balance:t,signature:r,message:s,feeState:n,fromAddresses:i,options:o}){const d=(i??this.getAddresses("P")).map((e=>nt(e)[2])),u=nt(this.getChangeAddress("P"))[2],c=o?.changeAddresses??[u];return a.pvm.newRegisterL1ValidatorTx({utxos:je(e.getUTXOs(),!0),balance:t,blsSignature:Uint8Array.from(a.utils.hexToBuffer(r)),changeAddressesBytes:c,feeState:n,fromAddressesBytes:d,memo:o?.memo,message:Uint8Array.from(a.utils.hexToBuffer(s)),minIssuanceTime:o?.minIssuanceTime},this.provider.getContext())}setL1ValidatorWeight({utxoSet:e,feeState:t,message:r,options:s,fromAddresses:n}){const i=(n??this.getAddresses("P")).map((e=>nt(e)[2])),o=nt(this.getChangeAddress("P"))[2],d=s?.changeAddresses??[o];return a.pvm.newSetL1ValidatorWeightTx({utxos:je(e.getUTXOs(),!0),changeAddressesBytes:d,feeState:t,fromAddressesBytes:i,memo:s?.memo,message:Uint8Array.from(a.utils.hexToBuffer(r)),minIssuanceTime:s?.minIssuanceTime},this.provider.getContext())}disableL1Validator({utxoSet:e,feeState:t,options:r,fromAddresses:s,disableAuth:n,validationId:i}){const o=(s??this.getAddresses("P")).map((e=>nt(e)[2])),d=nt(this.getChangeAddress("P"))[2],u=r?.changeAddresses??[d];return a.pvm.newDisableL1ValidatorTx({disableAuth:n,validationId:i,utxos:je(e.getUTXOs(),!0),changeAddressesBytes:u,feeState:t,fromAddressesBytes:o,memo:r?.memo,minIssuanceTime:r?.minIssuanceTime},this.provider.getContext())}increaseL1ValidatorBalance({utxoSet:e,feeState:t,options:r,fromAddresses:s,balance:n,validationId:i}){const o=(s??this.getAddresses("P")).map((e=>nt(e)[2])),d=nt(this.getChangeAddress("P"))[2],u=r?.changeAddresses??[d];return a.pvm.newIncreaseL1ValidatorBalanceTx({balance:n,validationId:i,utxos:je(e.getUTXOs(),!0),changeAddressesBytes:u,feeState:t,fromAddressesBytes:o,memo:r?.memo,minIssuanceTime:r?.minIssuanceTime},this.provider.getContext())}createBlockchain({utxoSet:e,subnetId:t,chainName:r,vmID:s,fxIds:n,genesisData:i,subnetAuth:o,feeState:d,options:u,fromAddresses:c}){const l=je(e.getUTXOs(),!0),h=(c??this.getAddresses("P")).map((e=>nt(e)[2])),p=nt(this.getChangeAddress("P"))[2],g=u?.changeAddresses??[p];return st(d),a.pvm.newCreateChainTx({chainName:r,feeState:d,fromAddressesBytes:h,fxIds:n,genesisData:i,subnetAuth:o,subnetId:t,utxos:l,vmId:s,changeAddressesBytes:g},this.provider.getContext())}createSubnet({utxoSet:e,rewardAddresses:t,feeState:r,fromAddresses:s,options:n,threshold:i,locktime:o}){const d=je(e.getUTXOs(),!0),u=(s??this.getAddresses("P")).map((e=>nt(e)[2])),c=nt(this.getChangeAddress("P"))[2],l=n?.changeAddresses??[c],h=t.map((e=>nt(e)[2]));return st(r),a.pvm.newCreateSubnetTx({fromAddressesBytes:u,changeAddressesBytes:l,utxos:d,minIssuanceTime:n?.minIssuanceTime,memo:n?.memo,feeState:r,threshold:i,locktime:o,subnetOwners:h},this.provider.getContext())}addSubnetValidator({utxoSet:e,nodeId:t,start:r,end:s,weight:n,subnetId:i,subnetAuth:o,feeState:d,fromAddresses:u,options:c}){const l=je(e.getUTXOs(),!0),h=(u??this.getAddresses("P")).map((e=>nt(e)[2])),p=nt(this.getChangeAddress("P"))[2],g=c?.changeAddresses??[p];return st(d),a.pvm.newAddSubnetValidatorTx({changeAddressesBytes:g,fromAddressesBytes:h,utxos:l,minIssuanceTime:c?.minIssuanceTime,memo:c?.memo,nodeId:t,start:r,end:s,weight:n,subnetId:i,subnetAuth:o,feeState:d},this.provider.getContext())}addPermissionlessValidator({utxoSet:e,nodeId:t,start:r,end:s,weight:n,subnetId:i,shares:o,feeState:d,fromAddresses:u,rewardAddresses:c,delegatorRewardAddresses:l,publicKey:h,signature:p,options:g,threshold:m,locktime:f,stakingAssetId:x}){const v=We(e.getUTXOs()),w=(u??this.getAddresses("P")).map((e=>nt(e)[2])),A=(c??[this.getCurrentAddress("P")]).map((e=>nt(e)[2])),y=(l??[this.getCurrentAddress("P")]).map((e=>nt(e)[2]));if(!(i!==a.networkIDs.PrimaryNetworkID.toString()||h&&p))throw new Error("Must provide public key and signature for primary subnet.");const b=nt(this.getChangeAddress("P"))[2],I=g?.changeAddresses??[b];return st(d),a.pvm.newAddPermissionlessValidatorTx({fromAddressesBytes:w,delegatorRewardsOwner:y,utxos:v,minIssuanceTime:g?.minIssuanceTime,memo:g?.memo,changeAddressesBytes:I,nodeId:t,start:r,end:s,weight:n,subnetId:i,shares:o,feeState:d,publicKey:h,rewardAddresses:A,signature:p,locktime:f,threshold:m,stakingAssetId:x},this.provider.getContext())}addPermissionlessDelegator({utxoSet:e,nodeId:t,start:r,end:s,weight:n,subnetId:i,fromAddresses:o,rewardAddresses:d,options:u,locktime:c,feeState:l,threshold:h,stakingAssetId:p}){const g=We(e.getUTXOs()),m=(o??this.getAddresses("P")).map((e=>nt(e)[2])),f=(d??[this.getCurrentAddress("P")]).map((e=>nt(e)[2])),x=nt(this.getChangeAddress("P"))[2],v=u?.changeAddresses??[x];return st(l),a.pvm.newAddPermissionlessDelegatorTx({fromAddressesBytes:m,utxos:g,minIssuanceTime:u?.minIssuanceTime,memo:u?.memo,changeAddressesBytes:v,nodeId:t,start:r,end:s,weight:n,subnetId:i,rewardAddresses:f,locktime:c,stakingAssetId:p,threshold:h,feeState:l},this.provider.getContext())}removeSubnetValidator({utxoSet:e,nodeId:t,subnetId:r,subnetAuth:s,fromAddresses:n,feeState:i,options:o}){const d=je(e.getUTXOs(),!0),u=(n??this.getAddresses("P")).map((e=>nt(e)[2])),c=nt(this.getChangeAddress("P"))[2],l=o?.changeAddresses??[c];return st(i),a.pvm.newRemoveSubnetValidatorTx({changeAddressesBytes:l,fromAddressesBytes:u,utxos:d,minIssuanceTime:o?.minIssuanceTime,memo:o?.memo,nodeId:t,subnetId:r,subnetAuth:s,feeState:i},this.provider.getContext())}transferSubnetOwnershipTx({utxoSet:e,subnetId:t,subnetAuth:r,subnetOwners:s,feeState:n,fromAddresses:i,options:o,threshold:d,locktime:u}){const c=je(e.getUTXOs(),!0),l=(i??this.getAddresses("P")).map((e=>nt(e)[2])),h=nt(this.getChangeAddress("P"))[2],p=o?.changeAddresses??[h],g=s.map((e=>nt(e)[2]));return st(n),a.pvm.newTransferSubnetOwnershipTx({changeAddressesBytes:p,fromAddressesBytes:l,utxos:c,minIssuanceTime:o?.minIssuanceTime,memo:o?.memo,subnetId:t,subnetAuth:r,subnetOwners:g,feeState:n,threshold:d,locktime:u},this.provider.getContext())}}class ot extends it{constructor(e,t,r){if(super(r),this.pubkeyXP=e,this.pubkeyC=t,33!==t.length||33!==e.length)throw new Error("Public key must be 33 byte compressed public key")}static fromPublicKey(e,r,s){const a=t.strip0x(n.SigningKey.computePublicKey(e,!0)),i=t.strip0x(n.SigningKey.computePublicKey(r,!0)),o=Buffer.from(a,"hex"),d=Buffer.from(i,"hex");return new ot(o,d,s)}static fromMnemonic(e,t,r,s){if(!c.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");if(!rt(r)||!rt(t))throw new Error("Not valid derivation path. Make sure it is a valid BIP44 path starting with m/");const n=c.mnemonicToSeedSync(e),a=u.fromSeed(n),i=a.derivePath(r),o=a.derivePath(t);return ot.fromPublicKey(o.publicKey,i.publicKey,s)}getAddress(e){const t="C"===e?this.pubkeyC:this.pubkeyXP;return this.provider.getAddress(t,e)}getAddressEVM(){return n.computeAddress(`0x${this.pubkeyC.toString("hex")}`)}getAddresses(e){return[this.getAddress(e)]}getChangeAddress(e){return this.getAddress(e)}getCurrentAddress(e){return this.getAddress(e)}}const dt={type:"zondax",getApp:e=>new y(e),async getVersion(e){const t=this.getApp(e);return(await t.getAppInfo()).appVersion},async getAddress(e,t,r={show:!1,hrp:"avax"}){const s=this.getApp(e);return{publicKey:(await s.getAddressAndPubKey(t.toString(),r.show,r.hrp)).publicKey}},async getXPUB(e,t){const r=this.getApp(e),s=await r.getExtendedPubKey(t,!1);return{pubKey:s.publicKey,chainCode:s.chain_code}},async signHash(e,t,r,s){const n=this.getApp(e),a=s.map((e=>e.toString(!0))),i=await n.signHash(r.toString(),a,t),o=i.signatures||new Map;return{hash:i.hash||Buffer.from(""),signatures:o}},async signTx(e,t,r,s,n){const a=this.getApp(e),i=s.map((e=>e.toString(!0))),o=n?.map((e=>e.toString(!0)))||[],d=await a.sign(r.toString(),i,t,o),u=d.signatures||new Map;return{...d,signatures:u}}};async function ut(e){return!(await dt.getVersion(e)>="0.6.0")}const{parse:ct}=a.utils;class lt extends it{constructor(e,t,r){super(r),this.avmXpub=e,this.accountNode=u.fromBase58(e),this.evmWallet=new ot(t,t,r)}accountNode;evmWallet;externalIndex=0;internalIndex=0;pubkeyCache={};static fromMnemonic(e,t){if(!c.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");const r=c.mnemonicToSeedSync(e),s=u.fromSeed(r),n=s.derivePath("m/44'/9000'/0'").neutered(),a=s.derivePath(M(0,D.BIP44,"EVM")).neutered();return new lt(n.toBase58(),a.publicKey,t)}setExternalIndex(e){if(e<0)throw new Error("Index must be >= 0");this.externalIndex=e}setInternalIndex(e){if(e<0)throw new Error("Index must be >= 0");this.internalIndex=e}getPubKeyAtIndex(e,t=!1){if(e<0)throw new Error("Index must be >= 0");const r=`${t?1:0}/${e}`,s=this.pubkeyCache[r];if(s)return s;const{publicKey:n}=this.accountNode.derivePath(r);return this.pubkeyCache[r]=n,n}getAddressAtIndex(e,t=!1,r){const s=this.getPubKeyAtIndex(e,t);return this.provider.getAddress(s,r)}getExternalAddresses(e){const t=[];for(let r=0;r<=this.externalIndex;r++)t.push(this.getAddressAtIndex(r,!1,e));return t}getInternalAddresses(e){const t=[];for(let r=0;r<=this.internalIndex;r++)t.push(this.getAddressAtIndex(r,!0,e));return t}getAddresses(e){return"C"===e?[this.getCurrentAddress("C")]:"P"===e?[...this.getExternalAddresses(e)]:[...this.getInternalAddresses(e),...this.getExternalAddresses(e)]}getChangeAddress(e){return"C"===e?this.evmWallet.getAddress("C"):"P"===e?this.getAddressAtIndex(this.externalIndex,!1,"P"):this.getAddressAtIndex(this.internalIndex,!0,e)}getCurrentAddress(e){return"C"===e?this.evmWallet.getAddress("C"):this.getAddressAtIndex(this.externalIndex,!1,e)}incrementIndex(e){e?this.externalIndex++:this.internalIndex++}getAddressEVM(){return this.evmWallet.getAddressEVM()}getActiveIndices(){return{external:this.externalIndex,internal:this.internalIndex}}getInternalRawAddresses(){return this.getInternalAddresses("X").map((e=>Buffer.from(ct(e)[2])))}getExternalRawAddresses(){return this.getExternalAddresses("X").map((e=>Buffer.from(ct(e)[2])))}getRawAddressC(){return Buffer.from(ct(this.getCurrentAddress("C"))[2])}}const{isTransferOut:ht,isStakeableLockOut:pt}=a.utils;function gt(e){const t=e.output;return ht(t)||pt(t)?t.getOwners():[]}function mt(e){const t=e.getTx();return a.avmSerial.isExportTx(t)||a.pvmSerial.isExportTx(t)?new Set(t.outs.map(gt).flat()):a.evmSerial.isExportTx(t)?new Set(t.exportedOutputs.map(gt).flat()):new Set((t.baseTx?.outputs??[]).map(gt).flat())}const{parse:ft}=a.utils;class xt extends lt{constructor(e,t,r){super(e,t,r)}getAdditionalAddressesByIndices(e,t,r){return"C"===r?[]:e.map((e=>{const s=this.getAddressAtIndex(e,t,r),[,,n]=ft(s);return Buffer.from(n).toString("hex")}))}static async fromTransport(e,r){if(await ut(e))throw new Error("Unsupported ledger app version. Must be >= 0.6.0");const s=k(e),a=await dt.getXPUB(e,xt.getAccountPath("X")),i=u.fromPublicKey(a.pubKey,a.chainCode),o=M(0,D.BIP44,"EVM"),d=await s.getAddress(o,!1),c=n.SigningKey.computePublicKey(Buffer.from(d.publicKey,"hex"),!0),l=Buffer.from(t.strip0x(c),"hex");return new xt(i.toBase58(),l,r)}static getAccountPath(e){switch(e){case"P":case"X":return"m/44'/9000'/0'";case"C":return"m/44'/60'/0'"}}async signMessage(e){throw new Error("not implemented")}filterOwnedAddresses(e,t,r){const s=this.getInternalRawAddresses().map((e=>e.toString("hex"))),n=this.getExternalRawAddresses().map((e=>e.toString("hex"))),a=new Set([...s,...r??[]]),i=new Set([...n,...t??[]]),o=new Set;return e.forEach((e=>{const t=e.toString("hex");if(a.has(t)){const e=[...a].indexOf(t);o.add(`1/${e}`)}else if(i.has(t)){const e=[...i].indexOf(t);o.add(`0/${e}`)}})),o}async signTx(e){if(!e.transport)throw new Error("Ledger transport not provided");const{tx:t,externalIndices:r,internalIndices:s}=e,n=t.getVM(),a=Buffer.from(t.toBytes()),i="EVM"===n?"C":"X",o=t.getAddresses().map((e=>Buffer.from(e))),d=this.getAdditionalAddressesByIndices(r??[],!1,i),u=this.getAdditionalAddressesByIndices(s??[],!0,i),c=[...this.filterOwnedAddresses(o,d,u).values()].map((e=>A.fromString(e))),l=[...mt(t)].map((e=>Buffer.from(e))),h=[...this.filterOwnedAddresses(l).values()].map((e=>A.fromString(e)));return(await this.signTxBuffer({buffer:a,chain:i,transport:e.transport,signers:c,change:h})).forEach((e=>{t.addSignature(e)})),t}async signTxBuffer(e){if(!e.transport)throw new Error("Ledger transport not provided");if(!e.signers)throw new Error("Signers not provided");const t=e.change||[],r=A.fromString(xt.getAccountPath(e.chain));return[...(await dt.signTx(e.transport,e.buffer,r,e.signers,t)).signatures.values()]}}const{strip0x:vt}=a.utils;class wt extends lt{constructor(e,t,r){const s=u.fromBase58(e).neutered(),a=new n.SigningKey(t),i=Buffer.from(vt(a.compressedPublicKey),"hex");super(s.toBase58(),i,r),this.evmPrivKey=t,this.accountNode=u.fromBase58(e)}accountNode;static fromMnemonic(e,t){if(!c.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");const r=c.mnemonicToSeedSync(e),s=u.fromSeed(r),n=s.derivePath("m/44'/9000'/0'"),a=s.derivePath(M(0,D.BIP44,"EVM"));if(!a.privateKey)throw new Error("Unable to derive EVM private key.");return new wt(n.toBase58(),a.privateKey,t)}async signTx(e){const t=this.getSigningKeys(e);return await a.addTxSignatures({unsignedTx:e.tx,privateKeys:t}),e.tx}getExternalPrivateKeys(e){const t=[];for(let e=0;e<=this.externalIndex;e++){const r=this.accountNode.derivePath(`0/${e}`);if(!r.privateKey)throw new Error("Unable to get private key.");t.push(r.privateKey)}const r=(e??[]).reduce(((e,t)=>{if(t>this.externalIndex){const r=this.accountNode.derivePath(`0/${t}`);if(!r.privateKey)throw new Error("Unable to get private key.");e.push(r.privateKey)}return e}),[]);return[...t,...r]}getInternalPrivateKeys(e){const t=[];for(let e=0;e<=this.internalIndex;e++){const r=this.accountNode.derivePath(`1/${e}`);if(!r.privateKey)throw new Error("Unable to get private key.");t.push(r.privateKey)}const r=(e??[]).reduce(((e,t)=>{if(t>this.internalIndex){const r=this.accountNode.derivePath(`1/${t}`);if(!r.privateKey)throw new Error("Unable to get private key.");e.push(r.privateKey)}return e}),[]);return[...t,...r]}getSigningKeys(e){const{tx:t,externalIndices:r,internalIndices:s}=e,n=t.getVM();return"AVM"===n?[...this.getInternalPrivateKeys(s),...this.getExternalPrivateKeys(r)]:"PVM"===n?this.getExternalPrivateKeys(r):[this.evmPrivKey]}async signTxBuffer(e){throw new Error("not implemented")}async signMessage(e){throw new Error("not implemented")}}const{getPublicKey:At,sign:yt,signHash:bt}=a.secp256k1,{addChecksum:It}=a.utils;class Tt extends ot{privKeyXP;privKeyC;constructor(e,t,r){super(Buffer.from(At(e)),Buffer.from(At(t)),r),this.privKeyXP=e,this.privKeyC=t}static fromMnemonic(e,t,r,s){if(!c.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");if(!rt(r)||!rt(t))throw new Error("Not valid derivation path. Make sure it is a valid BIP44 path starting with m/");const n=c.mnemonicToSeedSync(e),a=u.fromSeed(n),i=a.derivePath(t),o=a.derivePath(r);if(!i.privateKey||!o.privateKey)throw new Error("Failed to generate private keys.");return new Tt(i.privateKey,o.privateKey,s)}async signMessage(e){const t=Se(e.message),r=this.getSigningKey(e.chain);return Buffer.from(It(await bt(t,r)))}getSigningKey(e){return"C"===e?this.privKeyC:this.privKeyXP}async signTx(e){return await a.addTxSignatures({unsignedTx:e.tx,privateKeys:[this.privKeyC,this.privKeyXP]}),e.tx}async signTxBuffer(e){const t=this.getSigningKey(e.chain);return[Buffer.from(await yt(e.buffer,t))]}}const{strip0x:St}=a.utils;class Pt extends ot{constructor(e,t,r,s,i){const o=a.utils.strip0x(n.SigningKey.computePublicKey(e,!0)),d=a.utils.strip0x(n.SigningKey.computePublicKey(r,!0));if(super(Buffer.from(o,"hex"),Buffer.from(d,"hex"),i),this.pathXP=t,this.pathC=s,!rt(t)||!rt(s))throw new Error("Invalid path configuration.")}static async fromTransport(e,t,r,a){if(await ut(e))throw new Error("Ledger app not supported. Must be version >= 0.6.0");if(!rt(t)||!rt(r))throw new Error("Invalid path configuration.");const i=new s(e),o=await i.getAddress(r,!1),d=await i.getAddress(t,!1),u=Buffer.from(St(o.publicKey),"hex"),c=Buffer.from(St(d.publicKey),"hex"),l=Buffer.from(St(n.SigningKey.computePublicKey(u,!0)),"hex"),h=Buffer.from(St(n.SigningKey.computePublicKey(c,!0)),"hex");return new Pt(h,t,l,r,a)}async signMessage(e){throw new Error("not implemented")}getFullSignerPath(e){return"C"===e?this.pathC:this.pathXP}getPartialSignerPath(e){return this.getFullSignerPath(e).split("/").slice(4).join("/")}getAccountPath(e){return this.getFullSignerPath(e).split("/").slice(0,4).join("/")}async signTx(e){if(!e.transport)throw new Error("Ledger transport not provided");const t=e.tx,r=t.getVM(),s=Buffer.from(t.toBytes()),n="EVM"===r?"C":"X";return(await this.signTxBuffer({buffer:s,chain:n,transport:e.transport})).forEach((e=>{t.addSignature(e)})),t}async signTxBuffer(e){if(!e.transport)throw new Error("Ledger transport not provided");const t=A.fromString(this.getAccountPath(e.chain)),r=A.fromString(this.getPartialSignerPath(e.chain));return[...(await dt.signTx(e.transport,e.buffer,t,[r],[r])).signatures.values()]}}const{parse:Bt}=a.utils;var Ct=Object.freeze({__proto__:null,AbstractProvider:ue,AddressWallet:class extends it{constructor(e,t,r,s,a){if(super(a),this.addressC=e,this.addressCoreEth=t,this.xpAddresses=r,this.xpChangeAddress=s,r.length<1)throw new Error("Must have at least 1 xp address.");if(!n.isAddress(e))throw new Error("Not a valid C-Chain (EVM) address");if(r.some((e=>!Oe(e,!1))))throw new Error("Given addresses must be valid avalanche bech32 addresses without the chain alias prefix");if(!Oe(t,!1))throw new Error("Given CoreEth address must be valid avalanche bech32 addresses without the chain alias prefix");this.setChangeAddress(s)}setChangeAddress(e){if(!Oe(e,!1))throw new Error("Given address must be valid avalanche bech32 addresses without the chain alias prefix");this.xpChangeAddress=e}getAddressEVM(){return this.addressC}getAddresses(e){return("C"===e?[this.addressCoreEth]:this.xpAddresses).map((t=>this.provider.formatAddress(t,e)))}getChangeAddress(e){const t="C"===e?this.addressCoreEth:this.xpChangeAddress;return this.provider.formatAddress(t,e)}getCurrentAddress(e){const t="C"===e?this.addressCoreEth:this.xpAddresses[0];return this.provider.formatAddress(t,e)}},DevnetContext:pe,FujiContext:he,JsonRpcProvider:ge,LedgerSigner:Pt,LedgerWallet:xt,MainnetContext:le,MnemonicWallet:wt,MnemonicWalletVoid:lt,P_CHAIN_TX_SIZE_LIMIT:65536,SimpleLedgerSigner:class{constructor(e,t,r){this.activeAccountIndex=e,this.provider=t,r&&(this.accountNode=u.fromBase58(r))}accountNode;reSerializeTx(e,t){return e instanceof a.EVMUnsignedTx||"C"===t?a.EVMUnsignedTx.fromJSON(JSON.stringify(e.toJSON())):a.UnsignedTx.fromJSON(JSON.stringify(e.toJSON()))}getChainAlias(e){return"EVM"===e.getVM()?"C":"X"}getAccountPath(e){switch(e){case"X":case"P":return"m/44'/9000'/0'";case"C":return"m/44'/60'/0'"}}getAddressOfPath(e,t){if(!this.accountNode)return null;const{publicKey:r}=this.accountNode.derivePath(e),s=this.provider.getAddress(r,t);return Buffer.from(Bt(s)[2]).toString("hex")}getAddressPathMap(e){const{tx:t,externalIndices:r,internalIndices:s}=e,n=this.getChainAlias(t),a=`0/${this.activeAccountIndex}`,i=new Map;if("C"===n||!this.accountNode)return i;const o=(r??[]).map((e=>`0/${e}`)),d=(s??[]).map((e=>`1/${e}`)),u=[a,...o,...d];for(const e of u){const t=this.getAddressOfPath(e,n);t&&i.set(t,e)}return i}getAddressBipPaths(e,t){return 0===t.size?[A.fromString(`0/${this.activeAccountIndex}`)]:e.reduce(((e,r)=>{const s=t.get(Buffer.from(r).toString("hex"));return s&&e.push(A.fromString(s)),e}),[])}async signTx(e){if(!e.transport)throw new Error("Ledger transport not provided");const t=this.getChainAlias(e.tx),r=this.reSerializeTx(e.tx,t),s=Buffer.from(r.toBytes()),n=this.getAddressPathMap(e),a=this.getAddressBipPaths(r.getAddresses(),n),i=this.getAddressBipPaths([...mt(r)],n);return(await this.signTxBuffer({buffer:s,chain:t,transport:e.transport,signers:a,change:i})).forEach((e=>{r.addSignature(e)})),r}async signTxBuffer(e){if(!e.transport)throw new Error("Ledger transport not provided");if(!e.signers)throw new Error("Signers not provided");const t=e.change||[],r=A.fromString(this.getAccountPath(e.chain));return[...(await dt.signTx(e.transport,e.buffer,r,e.signers,t)).signatures.values()]}async signMessage(e){if(!e.transport||!e.message)throw new Error("Unable to sign message. Incomplete or invalid request.");const t=e.signer||A.fromString(`0/${this.activeAccountIndex}`);if(2!=t.toPathArray().length)throw new Error("Given signer path must have a depth of 2. Ex. 0/0, 0/1");const r=Se(e.message),s=(await dt.signHash(e.transport,r,A.fromString(this.getAccountPath(e.chain)),[t])).signatures.get(t.toString(!0));if(!s)throw new Error("Failed to sign message.");return s}},SimpleSigner:class{accountNodeXP;signerNodeEVM;activeAccountIndex;constructor(e,t){if(!c.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");if(t<0||t%1!=0)throw new Error("Invalid account index.");const r=c.mnemonicToSeedSync(e),s=u.fromSeed(r);this.accountNodeXP=s.derivePath("m/44'/9000'/0'");const n=s.derivePath(M(t,D.BIP44,"EVM"));this.signerNodeEVM=n,this.activeAccountIndex=t}getAdditionalKeys(e,t){return[...new Set(e??[])].reduce(((e,r)=>{const s=this.accountNodeXP.derivePath(`${t?1:0}/${r}`);if(!s.privateKey)throw new Error("Unable to get private key.");return e.push(s.privateKey),e}),[])}getSigningKeys(e,t,r){if("EVM"===e){if(!this.signerNodeEVM.privateKey)throw new Error("Unable to derive EVM private key.");return[this.signerNodeEVM.privateKey]}const s=this.accountNodeXP.derivePath(`0/${this.activeAccountIndex}`);if(!s.privateKey)throw new Error("Unable to derive X/P private key.");const n=this.getAdditionalKeys(t,!1);if("AVM"===e){const e=this.getAdditionalKeys(r,!0);return[s.privateKey,...n,...e]}if("PVM"===e)return[s.privateKey,...n]}async signTx(e){const{tx:t,externalIndices:r,internalIndices:s}=e,n=t.getVM(),i=this.getSigningKeys(n,r,s);if(!i?.length)throw new Error("Unable to sign transaction: signing keys are missing.");return await a.addTxSignatures({unsignedTx:t,privateKeys:i}),e.tx}async signTxBuffer(e){throw new Error("Not implemented")}getActiveAccountNode(e){switch(e){case"X":case"P":return this.accountNodeXP.derivePath(`0/${this.activeAccountIndex}`);case"C":return this.signerNodeEVM}}async signMessage(e){const t=this.getActiveAccountNode(e.chain);if(!t.privateKey)throw Error("Unable to sign message, key not found.");const r=Se(e.message),s=await a.secp256k1.signHash(r,t.privateKey);return Buffer.from(s)}},SizeSupportedTx:Ge,StaticSigner:Tt,TxType:$,WalletAbstract:it,WalletVoid:ot,addSignaturesToAvalancheTx:async({transactionHex:e,signatures:t,chainAlias:r,provider:s,utxos:n})=>{if(!t.length)throw new Error("signatures were not provided");const i=await ae({transactionHex:e,chainAlias:r,provider:s,utxos:n});await Promise.all(t.map((e=>i.addSignature(e))));const o=i.getCredentials(),d=i.getSigIndices().reduce(((e,t,r)=>{const s=t.map((e=>{const t=o[r]?.toJSON()[e];if(!t)throw new Error(`Failed to sign [${r}, ${e}]`);return t}));return e.push(new a.Credential(s)),e}),[]),u=new a.UnsignedTx(i.getTx(),i.getInputUtxos(),i.addressMaps,d);return{signedTxHex:te(new a.avaxSerial.SignedTx(i.getTx(),d)),hasAllSignatures:u.hasAllSignatures()}},convertGlacierUtxo:we,createAvalancheEvmUnsignedTx:async({txBytes:e,fromAddress:t,vm:r,utxos:s})=>{const n=Ae(r,e),i=ye(t)[2],o=be(i);if(a.evmSerial.isExportTx(n))return new a.EVMUnsignedTx(n,[],new Ie([Te.fromJSON([[o,0]])]));if(a.evmSerial.isImportTx(n)){const e=Ie.fromTransferableInputs(n.importedInputs,s,BigInt(Math.floor((new Date).getTime()/1e3)),[i]);return new a.UnsignedTx(n,s,e)}throw new Error("Unsupported transaction type")},createAvalancheUnsignedTx:J,digestMessage:Se,emptySignature:Z,getAddressFromXpub:function(e,t,r,s,n=!1){if(t<0)throw new Error("Account index must be >= 0");const a=n?"1":"0",i=u.fromBase58(e).derivePath(`${a}/${t}`).publicKey;return r.getAddress(i,s)},getAddressPublicKeyFromXpub:function(e,t){if(t<0)throw new Error("Account index must be >= 0");return u.fromBase58(e).derivePath(`0/${t}`).publicKey},getAssetBalance:function(e,t){const r=e.getAssetDict()[t],s={locked:BigInt(0),available:BigInt(0),multisig:BigInt(0),lockedStakeable:BigInt(0),total:BigInt(0)};if(!r)return s;const n=r.getUTXOs(),a=Ee();return n.forEach((e=>{const t=Ve(e);s[t.threshold>1?"multisig":t.locktime>a?"locked":t.stakeableLocktime>a?"lockedStakeable":"available"]+=t.amount})),s.total=s.locked+s.lockedStakeable+s.multisig+s.available,s},getLedgerProvider:async function(e){return dt},getMaximumUtxoSet:function({wallet:e,utxos:t,sizeSupportedTx:r,limit:s=65536,feeState:n}){const{sortFunction:a,unsignedTxBuilder:i}=tt[r],o=Ee(),d=a(t.filter((e=>{const{locktime:t,stakeableLocktime:s}=Ye(e);return t<o&&(s<o||("AddPermissionlessDelegator"===r||"AddPermissionlessValidator"===r))}))),u=function(e,t,r){let s=0,n=e.length-1;if(t(e)<=r)return n;let a=-1;for(;s<=n;){const i=Math.floor((s+n)/2);t(e.slice(0,i+1))<=r?(a=i,s=i+1):n=i-1}return a}(d,(t=>{try{return function(e){const t=e.getInputUtxos().reduce(((e,t)=>e+(8+65*Ye(t).threshold)),0);return 6+e.toBytes().length+t}(i(e,t,n))}catch(e){return console.log("Unable to estimate size of utxos",{e:e,utxos:t.map(Ye)}),s+1}}),s);return-1===u?[]:d.slice(0,u+1)},getPaginatedUTXOs:ke,getPchainUnixNow:async function(e){const t=e?x.AVALANCHE_XP_TEST_NETWORK.rpcUrl:x.AVALANCHE_XP_NETWORK.rpcUrl,r=await new a.pvm.PVMApi(t).getTimestamp(),s=new Date(r.timestamp),n=Math.floor(s.getTime()/1e3);return BigInt(n)},getStakeForAddresses:De,getStakedAssetBalance:function(e){const{stakedOutputs:t}=e,r={unlockedStaked:BigInt(0),lockedStaked:BigInt(0),total:BigInt(0)};return t.forEach((e=>{r[a.utils.isStakeableLockOut(e)?"lockedStaked":"unlockedStaked"]+=e.amount()})),r.total=r.lockedStaked+r.unlockedStaked,r},getUTXOsForAddresses:Ce,getUnixNow:Ee,getUtxosByTxFromGlacier:async({transactionHex:e,chainAlias:t,network:r,url:s,token:n,headers:i})=>{const o=q(t),d=Ue(e),u=Ke(o,d);if(a.evmSerial.isExportTx(u))return[];const c=(e=>{if(a.evmSerial.isImportTx(e)||a.avmSerial.isImportTx(e)||a.pvmSerial.isImportTx(e))return e.sourceChain.toString();const t=e.getVM();switch(t){case a.EVM:return f.BlockchainId.C_CHAIN;case a.AVM:return f.BlockchainId.X_CHAIN;case a.PVM:return f.BlockchainId.P_CHAIN;default:throw new Error(`Unable to get chain for VM type "${t}"`)}})(u),l=Me(u),h=new f.Glacier({BASE:s,TOKEN:n,HEADERS:i}),p=[...new Set(l.map((e=>e.utxoID.txID.toString())))],g=await Promise.all(p.map((e=>h.primaryNetworkTransactions.getTxByHash({blockchainId:c,network:r,txHash:e}))));return l.reduce(((e,t)=>{const s=g.find((e=>e.txHash===t.utxoID.txID.toString()));if(!s)throw new Error(`Unable to find parent tx "${t.utxoID.txID.toString()}"`);const n=s.emittedUtxos.find((e=>e.utxoId===t.utxoID.ID()));if(!n)throw new Error(`Unable to find UTXO "${t.utxoID.ID()}" at index "${t.utxoID.outputIdx.value()}"`);const a=we(n,r);return e.push(a),e}),[])},getVmByChainAlias:q,getXpubFromMnemonic:function(e){if(!c.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");const t=c.mnemonicToSeedSync(e);return u.fromSeed(t).derivePath("44'/9000'/0'").neutered().toBase58()},isAddDelegatorTx:function(e){return"add_delegator"===e.type},isAddPermissionlessDelegatorTx:function(e){return"add_permissionless_delegator"===e.type},isAddPermissionlessValidatorTx:function(e){return"add_permissionless_validator"===e.type},isAddSubnetValidatorTx:function(e){return"add_subnet_validator"===e.type},isAddValidatorTx:function(e){return"add_validator"===e.type},isBaseTx:function(e){return"base"===e.type},isBech32Address:Oe,isConvertSubnetToL1Tx:function(e){return"convert_subnet_to_l1"===e.type},isCreateChainTx:function(e){return"create_chain"===e.type},isCreateSubnetTx:function(e){return"create_subnet"===e.type},isDisableL1ValidatorTx:function(e){return"disable_l1_validator"===e.type},isExportTx:function(e){return"export"===e.type},isImportTx:function(e){return"import"===e.type},isIncreaseL1ValidatorBalance:function(e){return"increase_l1_validator_balance"===e.type},isObsidianApp:ut,isRegisterL1ValidatorTx:function(e){return"register_l1_validator"===e.type},isRemoveSubnetValidatorTx:function(e){return"remove_subnet_validator"===e.type},isSetL1ValidatorWeightTx:function(e){return"set_l1_validator_weight"===e.type},isTransferSubnetOwnershipTx:function(e){return"transfer_subnet_ownership"===e.type},isTransformSubnetTx:function(e){return"transform_subnet"===e.type},parseAvalancheTx:async function(e,t,r,{feeTolerance:s=50}={}){try{const n=t.getContext(),i=e.getTx(),o=(e=>{for(const t of Object.values(Le)){const r=t(e);if(null!==r)return r}throw new Error("no parser found for tx")})(i),d=Fe(i,n),u=He(i),c=Re(i).get(n.avaxAssetID)??BigInt(0),l=d.get(n.avaxAssetID)??BigInt(0),h=u.get(n.avaxAssetID)??BigInt(0);let p=BigInt(0);a.evmSerial.isImportExportTx(i)?p=await t.getApiC().getBaseFee()/BigInt(1e9):"PVM"===i.vm&&(p=await t.getApiP().getFeeState().then((e=>e.price)).catch((()=>BigInt(0))));const{isValid:g,txFee:m}=$e({unsignedTx:e,context:n,burnedAmount:l,baseFee:p,feeTolerance:s});return await o({feeData:{totalAvaxBurned:l,totalAvaxOutput:h,totalAvaxInput:c,isValidAvaxBurnedAmount:g,txFee:m},assetId:n.avaxAssetID,provider:t,currentAddress:r})}catch(e){return{type:$.Unknown}}},populateCredential:ee,signedTxToHex:te,sortUTXOsByAmount:je,sortUTXOsByAmountAscending:ze,sortUTXOsByAmountDescending:Je,sortUTXOsStaking:We,verifyDerivationPath:rt});Object.defineProperty(exports,"BtcNetworks",{enumerable:!0,get:function(){return e.networks}}),exports.Avalanche=Ct,exports.BitcoinLedgerWallet=class extends H{constructor(e,t,r,s,n){super(e,r),this.derivationPath=t,this.transport=s,this.walletPolicyDetails=n}setTransport(e){this.transport=e}async signTx(e,t){const r=function(e){return new p(e)}(this.transport),s=this.ecPair.publicKey,n=this.provider.getNetwork(),a=await r.getMasterFingerprint(),i=L(e,t,n,Buffer.from(a,"hex"),s,this.derivationPath),{policy:o,hmac:d}=this.walletPolicyDetails,u=await r.signPsbt(i,o,d),c=F(i,n,s,this.derivationPath);if(u.forEach((e=>{const[t,r]=e;c.updateInput(t,{partialSig:[{signature:r.signature,pubkey:r.pubkey}]})})),!c.validateSignaturesOfAllInputs())throw new Error("Failed to validate signatures");return c.finalizeAllInputs(),c.extractTransaction()}},exports.BitcoinProvider=class extends I{constructor(e=!0,r,s,n,a){super(),this.isMainnet=e,this.extraParams=a;const i=r?{headers:{"api-key":r}}:{},o=e?"https://btcbook.nownodes.io":"https://btcbook-testnet.nownodes.io";this.#r=new t.HttpClient(s||o,i);const d=e?"https://btc.nownodes.io":"https://btc-testnet.nownodes.io";this.#s=new t.HttpClient(n||d,i)}#r;#s;async#n(e,t){return this.isMainnet||t?(await Promise.all(e.map((e=>this.#s.post("",e,{},this.extraParams))))).flat():this.#s.post("",e,{},this.extraParams)}async getTxHex(e){return(await this.#r.post(`/api/v2/tx/${e}`,{},{},this.extraParams)).hex}async getUTXOs(e,t=!0,r){const s=await this.#r.post(`/api/v2/utxo/${e}`,{},{},this.extraParams);if(!s?.length)return{confirmed:[],unconfirmed:[]};const n=s.map(this._parseUtxo),a=e=>({confirmed:e.filter((e=>e.confirmations>0)),unconfirmed:e.filter((e=>0===e.confirmations))});if(!t)return a(n);return a(await this.getScriptsForUtxos(n,r))}async getAddressFromScript(e){const t=await this.#s.post("",{jsonrpc:"2.0",id:`decode-script-${e}`,method:"decodescript",params:[e]},{},this.extraParams);if(t.result)return t.result.address;throw new Error(`Unable to resolve address for script: ${e}. ${t.error.message}`)}async getScriptsForUtxos(e,t){const[r,s]=e.reduce((([e,t],r)=>r.script?[[...e,r],t]:[e,[...t,r]]),[[],[]]),n=s.map(((e,t)=>({jsonrpc:"2.0",method:"gettxout",params:[e.txHash,e.index],id:`${t}`}))),a=n.length?(await this.#n(n,t)).sort(((e,t)=>Number(e.id)-Number(t.id))):[];return[...r,...s.map(((e,t)=>({...e,script:a[t]?.result?.scriptPubKey.hex})))]}_parseUtxo(e){return{...e,txHash:e.txid,index:e.vout,value:Number(e.value),blockHeight:e.height,script:e.script,confirmations:e.confirmations}}async getBalances(e){const t=await this.#r.post(`/api/v2/address/${e}`,{},{},this.extraParams);return{available:BigInt(t.balance),pending:BigInt(t.unconfirmedBalance),final:BigInt(t.balance)+BigInt(t.unconfirmedBalance)}}async getChainHeight(){return(await this.#s.post("",{jsonrpc:"2.0",id:"nownodes",method:"getblockcount",params:[]},{},this.extraParams)).result}async getFeeRates(e){const t={jsonrpc:"2.0",method:"estimatesmartfee"},r=await this.#n([{...t,id:"1",params:[1]},{...t,id:"2",params:[3]},{...t,id:"3",params:[6]}],e).then((e=>e.sort(((e,t)=>Number(e.id)-Number(t.id))).map((e=>1e8*(e.result?.feerate??0)))));return{high:Math.ceil(r[0]/1024)||1,medium:Math.ceil(r[1]/1024)||1,low:Math.ceil(r[2]/1024)||1}}getNetwork(){return this.isMainnet?e.networks.bitcoin:e.networks.testnet}async issueRawTx(e){return await this.#s.post("",{jsonrpc:"2.0",id:"nownodes",method:"sendrawtransaction",params:[e]},{},this.extraParams).then((e=>e.result))}async getTransaction(e){const t=await this.#r.post(`/api/v2/tx/${e}`,{},{},this.extraParams);return{block:t.blockHeight,fees:Number(t.fees),confirmations:t.confirmations,amount:Number(t.value),hash:t.txid,addresses:Array.from(new Set([...t.vin.map((e=>e.addresses||[])).flat(),...t.vout.map((e=>e.addresses||[])).flat()])),blockTime:t.blockTime,inputs:[...t.vin.map((e=>({...e,value:Number(e.value)})))],outputs:[...t.vout.map((e=>({...e,value:Number(e.value)})))]}}async getTxHistory(e){const t=await this.#r.post(`/api/v2/address/${e}`,{},{},this.extraParams);return await Promise.allSettled(t.txids?.slice(0,25).map((async t=>{try{const r=await this.#r.post(`/api/v2/tx/${t}`,{},{},this.extraParams);return function(e,t){const r=t.vin.filter((t=>t.addresses?.includes(e))),s=t.vout.filter((t=>t.addresses?.includes(e))),n=t.vin.filter((t=>!t.addresses?.includes(e))),a=t.vout.filter((t=>!t.addresses?.includes(e))),i=r.reduce(((e,t)=>e+BigInt(t.value)),0n),o=s.reduce(((e,t)=>e+BigInt(t.value)),0n),d=i>o;let u=o-i;d&&(u+=BigInt(t.fees));const c=n.map((e=>e.addresses||[])).flat(),l=a.map((e=>e.addresses||[])).flat(),h=d?l:c,p=h.filter(((e,t)=>h.indexOf(e)===t)),g=s.filter((e=>(e.addresses?.length||0)>1)).length>0;return{addresses:p,isSender:d,block:t.blockHeight,fee:Number(t.fees),confirmations:t.confirmations,amount:Number(u),hash:t.txid,containsMultisig:g,receivedTime:t.blockTime,confirmedTime:t.confirmations>0?t.blockTime:void 0}}(e,r)}catch(e){console.log(`Unable to parse full tx ${t}.`)}}))).then((e=>e.map((e=>"fulfilled"===e.status&&e.value?e.value:void 0)).filter((e=>void 0!==e))))}async waitForTx(e,{maxAttempts:t=20,attempt:r=1,pollInterval:s=500}={}){try{return await this.getTransaction(e)}catch(n){if(r>=t)throw n;return await new Promise((e=>setTimeout(e,s))),this.waitForTx(e,{maxAttempts:t,attempt:r+1,pollInterval:s})}}},exports.BitcoinProviderAbstract=I,exports.BitcoinWallet=R,exports.BitcoinWalletAbstract=H,exports.BitcoinWalletVoid=class extends H{constructor(e,t){super(e,t)}signTx(e){throw new Error("Void wallets can not sign.")}},exports.DerivationPath=D,exports.ETH_ACCOUNT_PATH=V,exports.ETH_COIN_PATH=E,exports.JsonRpcBatchInternal=N,exports.LedgerSigner=X,exports.addEncodedSigToPsbt=function(e,t,r,s){const n=[{pubkey:t,signature:e}];r.updateInput(s,{partialSig:n})},exports.createPSBTV2=L,exports.createPsbt=T,exports.createTransferTx=B,exports.createWalletPolicy=function(e,t,r,s){const n=new p.DefaultWalletPolicy("wpkh(@0/**)",`[${e}/44'/60'/${t}']${r}`);return new p.WalletPolicy(s,"wpkh(@0/**)",n.keys)},exports.formatAddressForNetworkBech32=function(t,r){const s=e.address.fromBech32(t);return e.address.toBech32(s.data,s.version,r.bech32)},exports.getAddressDerivationPath=M,exports.getAddressFromXPub=function(e,t){const r=_(e,t);return n.computeAddress(`0x${r.toString("hex")}`)},exports.getAddressPrivateKeyFromXPriv=function(e,t){const r=u.fromBase58(e).derivePath(`0/${t}`);if(!r.privateKey)throw new Error("Unable to derive private key.");return r.privateKey},exports.getAddressPublicKeyFromXPub=_,exports.getAppEth=k,exports.getBech32Address=C,exports.getBech32AddressFromXPub=function(e,t,r){return C(_(e,t),r)},exports.getBtcAddressFromPubKey=function(e,r){const s=t.strip0x(n.SigningKey.computePublicKey(e,!0));return C(Buffer.from(s,"hex"),r)},exports.getEvmAddressFromPubKey=function(e){return n.computeAddress(`0x${e.toString("hex")}`)},exports.getLedgerAppInfo=async function(e){const t=await e.send(176,1,0,0),r=t.readUInt8(1),s=t.readUInt8(2+r),n=t.subarray(2,2+r),a=t.subarray(2+r+1,2+r+1+s);return{applicationName:n.toString("ascii"),version:a.toString("ascii")}},exports.getLedgerExtendedPublicKey=async function(e,t=!1,r){const s=k(e),n=await s.getAddress(r??V,t,!0),a=new i;return a.publicKey=o.Buffer.from(n.publicKey,"hex"),a.chainCode=o.Buffer.from(n.chainCode,"hex"),a.publicExtendedKey},exports.getMaxTransferAmount=function(e,t,r,s){const n=b(e);if(!n)return 0;const{fee:a}=S(t,r,n,s,e);return n-a},exports.getPubKeyFromTransport=async function(e,t,r,s="EVM"){const n=k(e),a=M(t,r,s),i=await n.getAddress(a,!1,!1);return Buffer.from(i.publicKey,"hex")},exports.getPublicKeyFromPrivateKey=function(e){const t=Buffer.isBuffer(e)?e:Buffer.from(e,"hex");try{return Buffer.from(a.secp256k1.getPublicKey(t))}finally{t.fill(0)}},exports.getTransferTxDetails=function(e,t,r,s,n){const a=S(e,t,r,s,P(n));return a.inputs||console.log("Unable to construct transaction, fee needed: ",a.fee),a},exports.getVoidSigner=function(e,t){return new n.VoidSigner(e,t)},exports.getWalletFromMnemonic=function(e,t,r){if(!(t>=0&&t%1==0))throw new Error("Account index must be an integer greater than or equal to 0.");return n.HDNodeWallet.fromMnemonic(n.Mnemonic.fromPhrase(e),M(t,r,"EVM"))},exports.getXpubFromMnemonic=async function(e){if(!c.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");const t=await c.mnemonicToSeed(e);return u.fromSeed(t).derivePath(V).neutered().toBase58()},exports.isERC20Transfer=K,exports.isNativeTxn=U,exports.omitUndefinedKeys=function(e){return Object.keys(e).reduce(((t,r)=>(void 0!==e[r]&&(t[r]=e[r]),t)),{})},exports.onBalanceChange=async(e,t,r,s)=>{const n=new Set(e.map((e=>e.toLowerCase()))),a=new Set(t.map((e=>e.toLowerCase()))),i=async e=>{const t=await r.getBlock(e,!0);t?.prefetchedTransactions.forEach((function(e){e.to&&a.has(e.to.toLowerCase())&&K(e,n)?s(e,{type:"erc20",contractAddress:e.to}):U(e,n)&&s(e,{type:"native"})}))},o=await r.on("block",i);return{unsubscribe:()=>o.off("block",i)}},exports.openLedgerApp=async function(e,t){try{return(await e.send(224,216,0,0,Buffer.from(t,"ascii"))).equals(Buffer.from([144,0]))}catch(e){return!1}},exports.psbt2ToPsbt0=F,exports.quitLedgerApp=async function(e){return await e.send(176,167,0,0)},exports.selectUtxos=S;
1
+ "use strict";var e=require("bitcoinjs-lib"),t=require("@avalabs/core-utils-sdk"),r=require("coinselect"),s=require("@ledgerhq/hw-app-eth"),n=require("ethers"),a=require("@avalabs/avalanchejs"),i=require("hdkey"),o=require("buffer"),d=require("@openzeppelin/contracts/build/contracts/ERC20.json"),u=require("bip32"),c=require("bip39"),l=require("@ledgerhq/hw-transport"),h=require("@metamask/eth-sig-util"),p=require("ledger-bitcoin"),g=require("@ledgerhq/hw-app-btc/lib/bip32"),m=require("@noble/hashes/sha256"),f=require("@avalabs/glacier-sdk"),x=require("@avalabs/core-chains-sdk"),v=require("create-hash"),w=require("xss"),A=require("bip32-path"),y=require("@avalabs/hw-app-avalanche"),b=require("@solana/rpc"),I=require("@solana/rpc-types");function T(e){return e.reduce(((e,t)=>e+t.value),0)}class S{async getUtxoBalance(e,t=!0){const r=await this.getUTXOs(e,t);return{balance:T(r.confirmed),balanceUnconfirmed:T(r.unconfirmed),utxos:r.confirmed,utxosUnconfirmed:r.unconfirmed}}}function P(t,r,s){const n=new e.Psbt({network:s});return t.forEach((e=>{n.addInput({hash:e.txHash,index:e.index,witnessUtxo:{script:Buffer.from(e.script,"hex"),value:e.value}})})),r.forEach((e=>{n.addOutput({value:e.value,address:e.address})})),n}function B(e,t,s,n,a){const i=[{address:e,value:s}],{inputs:o,outputs:d,fee:u}=r(a,i,n);if(!o||!d)return{fee:u};const c=[d[0]],l=d[1];return l&&c.push({address:t,value:l.value}),{inputs:o,outputs:c,fee:u}}function C(e){const t=[];return e.filter((e=>{const r=e.txHash+e.index.toString();return!t.includes(r)&&(t.push(r),!0)}))}function k(e,t,r,s,n,a){const i=B(e,t,r,s,C(n));return i.inputs?{...i,psbt:P(i.inputs,i.outputs,a)}:(console.log("Unable to construct transaction, fee needed: ",i.fee),i)}function E(t,r){return e.payments.p2wpkh({pubkey:t,network:r}).address}function V(e){return new s(e,"w0w")}const D="m/44'/60'",M=`${D}/0'`;var U=(e=>(e.BIP44="bip44",e.LedgerLive="ledger_live",e))(U||{});function K(e,t,r){if(e<0)throw new Error("Account index can not be less than 0.");const s="EVM"===r?"60":"9000";return t==U.BIP44?`m/44'/${s}'/0'/0/${e}`:`m/44'/${s}'/${e}'/0/0`}const O=(e,t)=>t.has(e.from.toLowerCase())||t.has((e.to??"").toLowerCase()),N=(e,t)=>{const r=new n.Interface(d.abi).parseTransaction({data:e.data,value:e.value});if(t.has(e.from.toLowerCase()))return!0;if("transfer"===r?.name)return t.has(r.args[0]?.toLowerCase());if("transferFrom"===r?.name){const e=t.has(r.args[0]?.toLowerCase()),s=t.has(r.args[1]?.toLowerCase());return e||s}return!1};var _=[{inputs:[{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall.Call[]",name:"calls",type:"tuple[]"}],name:"aggregate",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"},{internalType:"bytes[]",name:"returnData",type:"bytes[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"}],name:"getBlockHash",outputs:[{internalType:"bytes32",name:"blockHash",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockCoinbase",outputs:[{internalType:"address",name:"coinbase",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockDifficulty",outputs:[{internalType:"uint256",name:"difficulty",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockGasLimit",outputs:[{internalType:"uint256",name:"gaslimit",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockTimestamp",outputs:[{internalType:"uint256",name:"timestamp",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"addr",type:"address"}],name:"getEthBalance",outputs:[{internalType:"uint256",name:"balance",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getLastBlockHash",outputs:[{internalType:"bytes32",name:"blockHash",type:"bytes32"}],stateMutability:"view",type:"function"}];class X extends n.JsonRpcProvider{url;constructor(e,t,r){super(t,r,{staticNetwork:r}),this.#e="string"==typeof t?new n.FetchRequest(t):void 0===t?new n.FetchRequest("http://localhost:8545"):t.clone(),this.url=this.#e.url,this._maxCalls="number"==typeof e?e:e.maxCalls,"number"!=typeof e&&e?.multiContractAddress&&(this._parentProvider=new n.JsonRpcProvider(this.#e,r,{staticNetwork:r}),this._multicallContract=new n.Contract(e.multiContractAddress,_,this._parentProvider),this._maxCalls=62)}#e;#t=1;_pendingBatchAggregator=null;_pendingBatch=[];_maxCalls;_parentProvider;_multicallContract;send(e,t){if("eth_call"!==e)return super.send(e,t);const r={method:e,params:t,id:this.#t++,jsonrpc:"2.0"};null==this._pendingBatch&&(this._pendingBatch=[]);const s={request:r,resolve:null,reject:null},n=new Promise(((e,t)=>{s.resolve=e,s.reject=t}));return this._pendingBatch.push(s),this._pendingBatchAggregator||(this._pendingBatchAggregator=setTimeout(this.flush,10)),n}flush=()=>{const e=this._pendingBatch?.slice(0,this._maxCalls)??[];!this._pendingBatch||this._pendingBatch?.length<=this._maxCalls?(this._pendingBatch=null,this._pendingBatchAggregator=null):(this._pendingBatch.splice(0,this._maxCalls),setTimeout(this.flush,10));(this._multicallContract?this.batchSendMultiCall:this.batchSend)(e).then((t=>{e?.forEach(((e,r)=>{const s=t[r];if(s.error){const t=new Error(s.error.message);t.code=s.error.code,t.data=s.error.data,e.reject(t)}else e.resolve(s.result)}))})).catch((t=>{e?.forEach((e=>{e.reject(t)}))}))};batchSend=async e=>{const t=e?.map((e=>e.request));if(!this.url||!t)throw new Error("No url");const r=this.#e.clone();r.body=t;return(await r.send()).bodyJson};batchSendMultiCall=async e=>{const t=e.map((e=>({callData:e.request.params[0].data,target:e.request.params[0].to})));return(await this._multicallContract.aggregate(t))[1].map((e=>({result:e})))}}function L(e,t){return u.fromBase58(e).derivePath(`0/${t}`).publicKey}let F=class e extends n.AbstractSigner{type="default";path;provider=null;accountIndex;derivationSpec;transport;_eth;constructor(e=0,t,r,s){super(),this.path=K(e,r,"EVM"),this.accountIndex=e,this.transport=t,this.derivationSpec=r,this._eth=V(t),n.defineProperties(this,{path:this.path,type:"default",provider:s??null})}setTransport(e){this._eth=V(e),this.transport=e}async getAddress(){const e=await this._eth.getAddress(this.path);return n.getAddress(e.address)}async signMessage(e){"string"==typeof e&&(e=n.toUtf8Bytes(e));const t=n.hexlify(e).substring(2),r=await this._eth.signPersonalMessage(this.path,t);return r.r="0x"+r.r,r.s="0x"+r.s,n.Signature.from(r).serialized}async signTransaction(e){const t=await this.populateTransaction(e);delete t.from;const r=n.Transaction.from(t),s=r.unsignedSerialized,a=await this._eth.signTransaction(this.path,s.slice(2),null);return r.signature={v:BigInt("0x"+a.v),r:"0x"+a.r,s:"0x"+a.s},r.serialized}connect(t){return new e(this.accountIndex,this.transport,this.derivationSpec,t)}async signTypedData(e,t,r){const{EIP712Domain:s,...a}=t,i=n.TypedDataEncoder.getPrimaryType(a);try{const s=await this._eth.signEIP712Message(this.path,{domain:{name:e.name||void 0,chainId:e.chainId?Number(e.chainId):void 0,version:e.version||void 0,verifyingContract:e.verifyingContract||void 0,salt:e.salt?.toString()||void 0},types:{EIP712Domain:[{name:"name",type:"string"},{name:"version",type:"string"},{name:"chainId",type:"uint256"},{name:"verifyingContract",type:"address"}],...t},primaryType:i,message:r});return s.r="0x"+s.r,s.s="0x"+s.s,n.Signature.from(s).serialized}catch(s){if(s instanceof l.TransportStatusError&&s.statusCode===l.StatusCodes.INS_NOT_SUPPORTED){const s=h.TypedDataUtils.hashStruct(i,r,t,h.SignTypedDataVersion.V4),a=h.TypedDataUtils.hashStruct("EIP712Domain",e,t,h.SignTypedDataVersion.V4),o=await this._eth.signEIP712HashedMessage(this.path,a.toString("hex"),s.toString("hex"));return o.r="0x"+o.r,o.s="0x"+o.s,n.Signature.from(o).serialized}throw s}}};function H(t,r,s,n,a,i){const o=new p.PsbtV2;return o.setGlobalPsbtVersion(2),o.setGlobalTxVersion(2),o.setGlobalInputCount(t.length),o.setGlobalOutputCount(r.length),t.forEach(((e,t)=>{if(!e.txHex)throw new Error("Input tx hex is not given");o.setInputPreviousTxId(t,Buffer.from(e.txHash,"hex").reverse()),o.setInputOutputIndex(t,e.index),o.setInputNonWitnessUtxo(t,Buffer.from(e.txHex,"hex")),o.setInputWitnessUtxo(t,e.value,Buffer.from(e.script,"hex")),o.setInputBip32Derivation(t,a,n,g.pathStringToArray(i))})),r.forEach(((t,r)=>{const n=e.address.toOutputScript(t.address,s);o.setOutputAmount(r,t.value),o.setOutputScript(r,n)})),o}function R(t,r,s,n){const a=new e.Psbt({network:r}),i=t.getGlobalInputCount(),o=t.getGlobalOutputCount();for(let e=0;e<i;e++){const r=t.getInputWitnessUtxo(e),i=t.getInputBip32Derivation(e,s);a.addInput({nonWitnessUtxo:t.getInputNonWitnessUtxo(e),witnessUtxo:r?{value:r.amount,script:r.scriptPubKey}:void 0,hash:t.getInputPreviousTxid(e),index:t.getInputOutputIndex(e),bip32Derivation:i?[{path:n,pubkey:s,masterFingerprint:i.masterFingerprint}]:void 0})}for(let s=0;s<o;s++)a.addOutput({value:t.getOutputAmount(s),address:e.address.fromOutputScript(t.getOutputScript(s),r)});return a}class ${constructor(t,r){this.pubkey=t,this.provider=r;try{this.ecPair=e.ECPair.fromPublicKey(t)}catch(e){throw new Error("Not a valid public key.")}}ecPair;getAddressP2PKH(){return e.payments.p2pkh({pubkey:this.ecPair.publicKey,network:this.provider.getNetwork()}).address}getAddressBech32(){return E(this.ecPair.publicKey,this.provider.getNetwork())}async getUTXOs(){return this.provider.getUTXOs(this.getAddressBech32(),!0)}async getBalances(){return this.provider.getBalances(this.getAddressBech32())}async getUtxoBalance(){return this.provider.getUtxoBalance(this.getAddressBech32())}connect(e){this.provider=e}getProvider(){return this.provider}getPublicKey(){return this.ecPair.publicKey}createTransferTx(e,t,r,s){return k(e,this.getAddressBech32(),t,r,s,this.provider.getNetwork())}}class q extends ${keypair;constructor(t,r){const s=e.ECPair.fromPrivateKey(t);super(s.publicKey,r),this.keypair=s}static async fromMnemonic(e,t,r,s=U.BIP44){if(t<0)throw new Error("Account index must be >= 0");if(!c.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");const n=await c.mnemonicToSeed(e),a=u.fromSeed(n),i=K(t,s,"EVM"),o=a.derivePath(i);if(!o.privateKey)throw new Error("Unable to derive private key from the given mnemonic.");return new q(o.privateKey,r)}signTx(e,t){const r=P(e,t,this.provider.getNetwork());return Promise.resolve(this.signPsbt(r))}static fromEthersWallet(e,t){const r=e.privateKey;if(!r)throw new Error("Unable to get private key from ethers wallet.");const s=Buffer.from(r.substring(2),"hex");return new q(s,t)}signPsbt(e){return e.signAllInputs(this.keypair),e.validateSignaturesOfAllInputs(),e.finalizeAllInputs(),e.extractTransaction()}}var W=(e=>(e.Base="base",e.AddValidator="add_validator",e.AddDelegator="add_delegator",e.Export="export",e.Import="import",e.CreateSubnet="create_subnet",e.CreateChain="create_chain",e.ConvertSubnetToL1="convert_subnet_to_l1",e.RegisterL1Validator="register_l1_validator",e.SetL1ValidatorWeight="set_l1_validator_weight",e.IncreaseL1ValidatorBalance="increase_l1_validator_balance",e.DisableL1Validator="disable_l1_validator",e.AddSubnetValidator="add_subnet_validator",e.RemoveSubnetValidator="remove_subnet_validator",e.AddPermissionlessValidator="add_permissionless_validator",e.AddPermissionlessDelegator="add_permissionless_delegator",e.TransformSubnet="transform_subnet",e.TransferSubnetOwnership="transfer_subnet_ownership",e.Unknown="unknown",e))(W||{});const j=e=>{switch(e){case"C":return a.EVM;case"X":return a.AVM;case"P":return a.PVM;default:throw new Error(`Unable to get VM type for chain "${e}"`)}};const{getTransferableInputsByTx:J,AddressMaps:z}=a.utils,Y=async({tx:e,fromAddressBytes:t,provider:r,credentials:s,utxos:n})=>{const i=J(e);let o=z.fromTransferableInputs(i,n,BigInt(Math.floor((new Date).getTime()/1e3)),t);if((e=>a.pvmSerial.isCreateChainTx(e)||a.pvmSerial.isAddSubnetValidatorTx(e)||a.pvmSerial.isRemoveSubnetValidatorTx(e)||a.pvmSerial.isTransformSubnetTx(e)||a.pvmSerial.isTransferSubnetOwnershipTx(e)||a.pvmSerial.isConvertSubnetToL1Tx(e))(e))try{const t=await(async({tx:e,provider:t,addressMaps:r})=>{const s=e.getSubnetAuth().values(),n=await t.getApiP().getSubnet({subnetID:e.getSubnetID().value()}),i=a.OutputOwners.fromNative(n.controlKeys.map((e=>a.utils.parse(e)[2])),BigInt(n.locktime),Number(n.threshold)).addrs.reduce(((e,t,r)=>(s.includes(r)&&e.push([t,r]),e)),[]);return r.push(new a.utils.AddressMap(i)),r})({tx:e,provider:r,addressMaps:o});return new a.UnsignedTx(e,n,t,s)}catch(e){throw new Error(`Error while preparing subnet authorization data: ${e.message}`)}else a.pvmSerial.isDisableL1ValidatorTx(e)&&(o=await async function(e,t,r){try{const{deactivationOwner:s}=await r.getApiP().getL1Validator(t.validationId.toString()),n=t.getDisableAuth().values(),i=s.addresses.reduce(((e,t,r)=>(n.includes(r)&&e.push([t,r]),e)),[]);return e.push(new a.utils.AddressMap(i)),e}catch(e){throw new Error(`Error while preparing disableAuth data: ${e.message}`)}}(o,e,r));return new a.UnsignedTx(e,n,o,s)},{bufferToHex:G,packTx:Q}=a.utils,{publicKeyBytesToAddress:Z,recoverPublicKey:ee}=a.secp256k1,te=new a.Signature(new Uint8Array(Array(65).fill(0))),re=(e,t)=>{const r=Math.max(...e);if(!isFinite(r))throw new Error("Error while adding placeholder signatures for the provided indices.");const s=new Array(r+1).fill(te);if(!t)return s;const{unsignedTx:n,credentialIndex:a}=t,i=n.getCredentials()[a];if(!i)return s;const o=Q(n.getTx()),d=m.sha256(o),u=te.toString();for(const e of i.toJSON()){if(e.toString()===u)continue;const t=ee(d,e.toBytes()),r={toHex:()=>G(Z(t))},i=n.addressMaps.getSigIndicesForAddress(r,!1)??[];for(const t of i)t[0]===a&&(s[t[1]]=e)}return s};function se(e){return a.utils.bufferToHex(a.utils.addChecksum(e.toBytes()))}const{getManagerForVM:ne,hexToBuffer:ae,unpackWithManager:ie}=a.utils,oe=async({transactionHex:e,chainAlias:t,provider:r,utxos:s})=>{const n=j(t);if(n===a.EVM)throw new Error("EVM transactions are not supported");const i=ae(e),o=ie(n,i),d=await(async({tx:e,txBytes:t,provider:r,vm:s,utxos:n})=>{try{const i=ne(s).unpack(t,a.avaxSerial.SignedTx),o=await Y({tx:e,utxos:n,provider:r,credentials:i.getCredentials()});return e.getSigIndices().map(((e,t)=>new a.Credential(re(e,{unsignedTx:o,credentialIndex:t}))))}catch(t){return e.getSigIndices().map((e=>new a.Credential(re(e))))}})({tx:o,txBytes:i,provider:r,vm:n,utxos:s});return Y({tx:o,provider:r,credentials:d,utxos:s})},{parseBech32:de,format:ue}=a.utils,{publicKeyBytesToAddress:ce}=a.secp256k1;class le{constructor(e,t){this.baseUrl=e,this.context=t;const r=`${e}/ext/bc/C/rpc`;this.evmRpc=new n.JsonRpcProvider(r)}evmRpc;async getEvmFeeData(){return this.evmRpc.getFeeData()}getContext(){return this.context}getChainID(e){switch(e){case"X":return this.context.xBlockchainID;case"P":return this.context.pBlockchainID;case"C":return this.context.cBlockchainID}}getNetworkID(){return this.context.networkID}getHrp(){return a.networkIDs.getHRP(this.getNetworkID())}getApiX(){return new a.avm.AVMApi(this.baseUrl)}getApiP(){return new a.pvm.PVMApi(this.baseUrl)}getApiC(){return new a.evm.EVMApi(this.baseUrl)}getInfo(){return new a.info.InfoApi(this.baseUrl)}getApi(e){switch(e){case"X":return this.getApiX();case"P":return this.getApiP();case"C":return this.getApiC()}}getAvaxID(){return this.getContext().avaxAssetID}getAddress(e,r){const s=t.strip0x(n.SigningKey.computePublicKey(e,!0)),a=Buffer.from(s,"hex"),i=ce(a);return ue(r,this.getHrp(),i)}getAddressFromBuffer(e,t){return ue(t,this.getHrp(),e)}formatAddress(e,t){const[,r]=de(e);return ue(t,this.getHrp(),r)}getApiByVM(e){switch(e){case"AVM":return this.getApiX();case"PVM":return this.getApiP();case"EVM":return this.getApiC()}}getApiByChainID(e){switch(e){case this.context.xBlockchainID:return this.getApiX();case this.context.pBlockchainID:return this.getApiP();case this.context.cBlockchainID:return this.getApiC()}}async issueTx(e){const t=e.unsignedTx.getVM(),r=se(e);return this.issueTxHex(r,t)}async issueTxHex(e,t){return this.getApiByVM(t).issueTx({tx:e})}async waitForTransaction(e,t,r=6e4){const s=this.getApiByVM(t),n=Date.now();return new Promise(((t,i)=>{const o=async()=>{let d;switch(r&&n+r<Date.now()&&i(new Error("Timeout")),d=s instanceof a.evm.EVMApi?await s.getAtomicTxStatus(e):await s.getTxStatus({txID:e,includeReason:!0}),d.status){case"Accepted":case"Committed":return void t({success:!0});case"Dropped":case"Rejected":return void t({success:!1});default:setTimeout((()=>{o()}),1e3)}};o()}))}}const he={weights:a.Common.createDimensions({bandwidth:1,dbRead:1e3,dbWrite:1e3,compute:4}),maxCapacity:BigInt(1e6),maxPerSecond:BigInt(1e5),targetPerSecond:BigInt(5e4),minPrice:BigInt(1),excessConversionConstant:BigInt(2164043)},pe={xBlockchainID:"2oYMBNV4eNHyqk2fjjV5nVQLDbtmNJzq5s3qs3Lo6ftnC6FByM",pBlockchainID:"11111111111111111111111111111111LpoYY",cBlockchainID:"2q9e4r6Mu3U68nU1fYjgbR6JvwrRx36CohpAX5UQxse55x1Q5",avaxAssetID:"FvwEAhmxKfeiG8SnEvq42hc6whRyY3EFYAvebMqDNDGCgxN5Z",baseTxFee:BigInt(1e6),createAssetTxFee:BigInt(1e7),networkID:1,hrp:"avax",platformFeeConfig:he},ge={xBlockchainID:"2JVSBoinj9C2J33VntvzYtVJNZdN2NKiwwKjcumHUWEb5DbBrm",pBlockchainID:"11111111111111111111111111111111LpoYY",cBlockchainID:"yH8D7ThNJkxmtkuv2jgBa4P1Rn3Qpr4pPr7QYNfcdoS6k6HWp",avaxAssetID:"U8iRqJoiJm8xZHAacmvYyZVwqQx6uDNtQeP3CQ6fcgQk3JqnK",baseTxFee:BigInt(1e6),createAssetTxFee:BigInt(1e7),networkID:5,hrp:"fuji",platformFeeConfig:he},me={xBlockchainID:"2piQ2AVHCjnduiWXsSY15DtbVuwHE2cwMHYnEXHsLL73BBkdbV",pBlockchainID:"11111111111111111111111111111111LpoYY",cBlockchainID:"vV3cui1DsEPC3nLCGH9rorwo8s6BYxM2Hz4QFE5gEYjwTqAu",avaxAssetID:"22jjRVdyTJiAEtcZciAVR8bTFyVDUVoo1T3o5PiDspQSZ2maXR",baseTxFee:1000000n,createAssetTxFee:1000000n,networkID:76,hrp:"custom",platformFeeConfig:he};class fe extends le{constructor(e,t){super(e,t)}static async fromBaseURL(e){const t=await a.Context.getContextFromURI(e);try{await new a.info.InfoApi(e).getUpgradesInfo();return new fe(e,t)}catch{return new fe(e,t)}}static getDefaultMainnetProvider(){return new fe(x.AVALANCHE_XP_NETWORK.rpcUrl,pe)}static getDefaultFujiProvider(){return new fe(x.AVALANCHE_XP_TEST_NETWORK.rpcUrl,ge)}static getDefaultDevnetProvider(){return new fe(x.AVALANCHE_P_DEV_NETWORK.rpcUrl,me)}}const{bytesCompare:xe,parseBech32:ve}=a.utils,we=(e,t)=>"P"===t,Ae=(e,t,r)=>{const s=we(0,t)?e.amount:e.asset?.amount;return new a.TransferOutput(new a.BigIntPr(BigInt(s)),a.OutputOwners.fromNative(e.addresses.map((e=>ve(e)[1])).sort(xe),BigInt(r??0),e.threshold))},ye=(e,t)=>{const r=((e,t)=>{const r=t===f.Network.FUJI,s=t===f.Network.DEVNET,{cBlockchainID:n,xBlockchainID:a,pBlockchainID:i}=s?me:r?ge:pe;if(n===e)return"C";if(a===e)return"X";if(i===e)return"P";throw new Error(`Unknown chainId "${e}"`)})(e.createdOnChainId,t),s=we(0,r)?e.txHash:e.creationTxHash,n=we(0,r)?e.assetId:e.asset?.assetId;return new a.Utxo(a.avaxSerial.UTXOID.fromNative(s,Number(e.outputIndex)),a.Id.fromString(n),((e,t)=>we(0,t)?e.stakeableLocktime?new a.pvmSerial.StakeableLockOut(new a.BigIntPr(BigInt(e.stakeableLocktime??0)),Ae(e,t,e.platformLocktime??0)):Ae(e,t,e.platformLocktime):Ae(e,t,e.locktime))(e,r))},{unpackWithManager:be,parse:Ie,bufferToHex:Te,AddressMaps:Se,AddressMap:Pe}=a.utils;function Be(e){const t=Buffer.from(e,"utf8"),r=Buffer.alloc(4);r.writeUInt32BE(t.length,0);const s=Buffer.from(`Avalanche Signed Message:\n${r}${e}`,"utf8");return v("sha256").update(s).digest()}const Ce=1024,ke=1024;async function Ee(e,t,r){const s=e.slice(0,Ce),n=e.slice(Ce),a=await Ve(t,{...r,addresses:s});if(n.length){const s=await Ee(n,t,{...r,addresses:e});return a.merge(s)}return a}async function Ve(e,t){if(t.addresses.length>Ce)throw new Error(`Can not get UTXOs for more than ${Ce} addresses.`);const{endIndex:r,utxos:s}=await e.getUTXOs(t),n=new a.utils.UtxoSet(s);if(s.length>=ke){const s=await Ve(e,{...t,startIndex:r});return n.merge(s)}return n}function De(){return BigInt(Math.floor(Date.now()/1e3))}const{getUtxoInfo:Me}=a.utils;async function Ue(e,t){const r=e.slice(0,256),s=e.slice(256),n=await t.getStake({addresses:r});if(s.length){const e=await Ue(s,t);return{staked:n.staked+e.staked,stakedOutputs:[...n.stakedOutputs,...e.stakedOutputs]}}return n}const{getTransferableInputsByTx:Ke,hexToBuffer:Oe,unpackWithManager:Ne}=a.utils;function _e(e,t=!0){try{if(t){const[t]=a.utils.parse(e);if(!["X","P","C"].includes(t))return!1}else a.utils.parseBech32(e);return!0}catch(e){return!1}}const Xe=e=>{if([pe.xBlockchainID,ge.xBlockchainID,me.xBlockchainID].includes(e))return"AVM";if([pe.pBlockchainID,ge.pBlockchainID,me.pBlockchainID].includes(e))return"PVM";if([pe.cBlockchainID,ge.cBlockchainID,me.cBlockchainID].includes(e))return"EVM";throw new Error("Unknown chain id. Failed to get alias.")},Le=(e,t)=>e.reduce(((e,r)=>r.assetId.toString()!==t?e:e+r.output.amount()),BigInt(0)),Fe=(e,t)=>e.reduce(((e,r)=>r.assetId.toString()!==t?e:e+r.input.amount()),BigInt(0));var He={parseCreateSubnetTx:e=>a.pvmSerial.isCreateSubnetTx(e)?({feeData:t,provider:r})=>({type:W.CreateSubnet,chain:e.getVM(),threshold:e.getSubnetOwners().threshold.value(),controlKeys:e.getSubnetOwners().addrs.map((e=>`P-${e.toString(r.getHrp())}`)),...t}):null,parseCreateChainTx:e=>a.pvmSerial.isCreateChainTx(e)?({feeData:t})=>({type:W.CreateChain,chain:e.getVM(),subnetID:e.getSubnetID().value(),chainName:e.chainName.value(),chainID:e.getBlockchainId(),vmID:e.vmID.value(),fxIDs:e.fxIds.map((e=>e.value())),genesisData:e.genesisData.toString(),...t}):null,parseAddSubnetValidatorTx:e=>a.pvmSerial.isAddSubnetValidatorTx(e)?({feeData:t})=>({type:W.AddSubnetValidator,chain:e.getVM(),stake:e.subnetValidator.validator.weight.value(),nodeID:e.subnetValidator.validator.nodeId.value(),start:e.subnetValidator.validator.startTime.value().toString(),end:e.subnetValidator.validator.endTime.value().toString(),subnetID:e.getSubnetID().value(),...t}):null,parseRemoveSubnetValidatorTx:e=>a.pvmSerial.isRemoveSubnetValidatorTx(e)?({feeData:t})=>({type:W.RemoveSubnetValidator,chain:e.getVM(),nodeID:e.nodeId.toString(),subnetID:e.getSubnetID().value(),...t}):null,parseImportTx:e=>a.pvmSerial.isImportTx(e)||a.avmSerial.isImportTx(e)||a.evmSerial.isImportTx(e)?a.evmSerial.isImportTx(e)?({feeData:t,assetId:r})=>({type:W.Import,chain:e.getVM(),source:Xe(e.sourceChain.value()),amount:Fe(e.importedInputs,r),...t}):({feeData:t,assetId:r})=>({type:W.Import,chain:e.getVM(),source:Xe(e.sourceChain.value()),amount:Fe(e.ins,r),...t}):null,parseExportTx:e=>a.pvmSerial.isExportTx(e)||a.avmSerial.isExportTx(e)||a.evmSerial.isExportTx(e)?a.evmSerial.isExportTx(e)?({feeData:t,assetId:r})=>({type:W.Export,chain:e.getVM(),destination:Xe(e.destinationChain.toString()),amount:Le(e.exportedOutputs,r),...t}):({feeData:t,assetId:r})=>({type:W.Export,chain:e.getVM(),destination:Xe(e.destination.value()),amount:Le(e.outs,r),...t}):null,parseBaseTx:e=>a.avmSerial.isAvmBaseTx(e)||a.pvmSerial.isPvmBaseTx(e)?async({feeData:t,currentAddress:r,provider:s})=>{const n=e.baseTx,i=await(async(e,t)=>{const r=e.baseTx,s=new Set;if(r.outputs.forEach((e=>{s.add(e.assetId.value())})),a.avmSerial.isAvmBaseTx(e)){const e=await Promise.all([...s.values()].map((e=>t.getApiX().getAssetDescription(e))));return r.outputs.reduce(((r,n)=>{if(n.output instanceof a.TransferOutput){const a=n.assetId.value(),i=[...s.values()].indexOf(a),o=e[i],d=n.output.outputOwners.addrs.map((e=>`X-${e.toString(t.getContext().hrp)}`));return[...r,{assetId:a,amount:n.output.amount(),locktime:n.output.getLocktime(),threshold:BigInt(n.output.getThreshold()),assetDescription:o,owners:d,isAvax:t.getContext().avaxAssetID===a}]}return r}),[])}return r.outputs.reduce(((e,r)=>{if(r.output instanceof a.TransferOutput){const s=r.assetId.value(),n=r.output.outputOwners.addrs.map((e=>`P-${e.toString(t.getContext().hrp)}`));return[...e,{assetId:s,amount:r.output.amount(),locktime:r.output.getLocktime(),threshold:BigInt(r.output.getThreshold()),owners:n,isAvax:t.getContext().avaxAssetID===s}]}return e}),[])})(e,s),o=De(),d=i.filter((e=>!(1===e.owners.length&&e.owners[0]===r&&e.locktime<=o)));return{type:W.Base,chain:e.getVM(),outputs:d,memo:w(Buffer.from(n.memo.toBytes()).toString("utf-8",4)),...t}}:null,parseAddPermissionlessValidatorTx:e=>{if(!a.pvmSerial.isAddPermissionlessValidatorTx(e))return null;let t,r;return a.pvmSerial.isSigner(e.signer)&&(r=a.utils.bufferToHex(e.signer.proof.publicKey),t=a.utils.bufferToHex(e.signer.proof.signature)),({feeData:s})=>({type:W.AddPermissionlessValidator,chain:e.getVM(),stake:e.subnetValidator.validator.weight.value(),nodeID:e.subnetValidator.validator.nodeId.value(),start:e.subnetValidator.validator.startTime.value().toString(),end:e.subnetValidator.validator.endTime.value().toString(),subnetID:e.subnetValidator.subnetId.value(),delegationFee:e.shares.value(),stakeOuts:e.stake,rewardOwner:e.getValidatorRewardsOwner(),delegationRewardOwner:e.getDelegatorRewardsOwner(),signer:e.signer,publicKey:r,signature:t,...s})},parseAddPermissionlessDelegatorTx:e=>a.pvmSerial.isAddPermissionlessDelegatorTx(e)?({feeData:t})=>({type:W.AddPermissionlessDelegator,chain:e.getVM(),stake:e.subnetValidator.validator.weight.value(),nodeID:e.subnetValidator.validator.nodeId.value(),start:e.subnetValidator.validator.startTime.value().toString(),end:e.subnetValidator.validator.endTime.value().toString(),subnetID:e.subnetValidator.subnetId.value(),stakeOuts:e.stake,delegatorRewardsOwner:e.getDelegatorRewardsOwner(),...t}):null,parseTransferSubnetOwnershipTx:e=>a.pvmSerial.isTransferSubnetOwnershipTx(e)?({feeData:t,provider:r})=>({type:W.TransferSubnetOwnership,chain:e.getVM(),subnetID:e.subnetID.value(),threshold:e.getSubnetOwners().threshold.value(),controlKeys:e.getSubnetOwners().addrs.map((e=>`P-${e.toString(r.getHrp())}`)),...t}):null,parseConvertSubnetTx:e=>a.pvmSerial.isConvertSubnetToL1Tx(e)?({feeData:t,provider:r})=>{const s=r.getHrp(),n=e=>`P-${e.toString(s)}`;return{type:W.ConvertSubnetToL1,chain:e.getVM(),managerAddress:n(a.Address.fromHex(e.address.toString("hex"))),validators:e.validators.map((e=>({nodeId:a.NodeId.fromHex(e.nodeId.toString("hex")).toString(),stake:e.weight.value(),balance:e.balance.value(),remainingBalanceOwners:e.remainingBalanceOwner.addresses.map(n),deactivationOwners:e.deactivationOwner.addresses.map(n)}))),chainID:e.chainID.value(),subnetID:e.subnetID.value(),...t}}:null,parseRegisterL1ValidatorTx:e=>a.pvmSerial.isRegisterL1ValidatorTx(e)?({feeData:t})=>({type:W.RegisterL1Validator,chain:e.getVM(),balance:e.balance.value(),...t}):null,parseIncreaseL1ValidatorBalanceTx:e=>a.pvmSerial.isIncreaseL1ValidatorBalanceTx(e)?({feeData:t})=>({type:W.IncreaseL1ValidatorBalance,chain:e.getVM(),balance:e.balance.value(),validationId:e.validationId.toString(),...t}):null,parseSetL1ValidatorWeightTx:e=>a.pvmSerial.isSetL1ValidatorWeightTx(e)?({feeData:t})=>({type:W.SetL1ValidatorWeight,chain:e.getVM(),...t}):null,parseDisableL1ValidatorTx:e=>a.pvmSerial.isDisableL1ValidatorTx(e)?({feeData:t})=>({type:W.DisableL1Validator,chain:e.getVM(),validationId:e.validationId.toString(),...t}):null};const{getBurnedAmountByTx:Re,getOutputAmounts:$e,getInputAmounts:qe,validateBurnedAmount:We}=a.utils;function je(e,t,r){return[...e].sort(((e,s)=>{for(let n=0;n<t.length;n++){const a=t[n];if(e[a]>s[a])return"asc"===r?1:-1;if(e[a]<s[a])return"asc"===r?-1:1}return 0}))}function Je(e){const t=De(),r=e.map((e=>({utxo:e,...a.utils.getUtxoInfo(e)}))),s=r.filter((e=>e.stakeableLocktime<=t)),n=r.filter((e=>e.stakeableLocktime>t)),i=je(s,["amount"],"desc"),o=je(n,["stakeableLocktime","amount"],"desc"),[d,...u]=i;return[...d?[d]:[],...o,...u].map((e=>e.utxo))}function ze(e,t){return je(e.map((e=>({utxo:e,...a.utils.getUtxoInfo(e)}))),["amount"],t?"desc":"asc").map((e=>e.utxo))}const Ye=e=>ze(e,!0),Ge=e=>ze(e,!1);const{getUtxoInfo:Qe}=a.utils;var Ze=(e=>(e.ExportP="ExportP",e.ImportP="ImportP",e.AddPermissionlessValidator="AddPermissionlessValidator",e.AddPermissionlessDelegator="AddPermissionlessDelegator",e.BaseP="BaseP",e.ConsolidateP="ConsolidateP",e))(Ze||{});const et="NodeID-8TArWpFgH3sazEH8qP4gUjtGtFMvjw1aR",tt="11111111111111111111111111111111LpoYY",rt=(e,t)=>e.reduce(((e,t)=>e+Qe(t).amount),BigInt(0))-t,st={BaseP:{sortFunction:Ye,unsignedTxBuilder:(e,t,r)=>{const s=e.getProvider().getContext();return e.baseTX({utxoSet:new a.utils.UtxoSet(t),chain:"P",toAddress:e.getCurrentAddress("P"),amountsPerAsset:{[s.avaxAssetID]:rt(t,s.baseTxFee)},feeState:r})}},ConsolidateP:{sortFunction:Ge,unsignedTxBuilder:(e,t,r)=>{const s=e.getProvider().getContext();return e.consolidateP({utxoSet:new a.utils.UtxoSet(t),amount:rt(t,s.baseTxFee),feeState:r})}},AddPermissionlessValidator:{sortFunction:Je,unsignedTxBuilder:(e,t,r)=>e.addPermissionlessValidator({utxoSet:new a.utils.UtxoSet(t),nodeId:et,start:De(),end:De()+BigInt(1e3),weight:rt(t,e.getProvider().getContext().baseTxFee),subnetId:tt,shares:5,feeState:r,fromAddresses:void 0,rewardAddresses:void 0,delegatorRewardAddresses:void 0,publicKey:Buffer.from(a.utils.hexToBuffer("0x8f95423f7142d00a48e1014a3de8d28907d420dc33b3052a6dee03a3f2941a393c2351e354704ca66a3fc29870282e15")),signature:Buffer.from(a.utils.hexToBuffer("0x86a3ab4c45cfe31cae34c1d06f212434ac71b1be6cfe046c80c162e057614a94a5bc9f1ded1a7029deb0ba4ca7c9b71411e293438691be79c2dbf19d1ca7c3eadb9c756246fc5de5b7b89511c7d7302ae051d9e03d7991138299b5ed6a570a98"))})},AddPermissionlessDelegator:{sortFunction:Je,unsignedTxBuilder:(e,t,r)=>e.addPermissionlessDelegator({utxoSet:new a.utils.UtxoSet(t),nodeId:et,start:De(),end:De()+BigInt(1e3),weight:rt(t,e.getProvider().getContext().baseTxFee),subnetId:tt,feeState:r})},ExportP:{sortFunction:Ye,unsignedTxBuilder:(e,t,r)=>e.exportP({amount:rt(t,e.getProvider().getContext().baseTxFee),utxoSet:new a.utils.UtxoSet(t),destination:"X",feeState:r})},ImportP:{sortFunction:Ye,unsignedTxBuilder:(e,t,r)=>e.importP({utxoSet:new a.utils.UtxoSet(t),sourceChain:"X",feeState:r})}};function nt(e){return A.validateString(e,!0)&&6===e.split("/").length}function at(e){if("object"!=typeof e||!e)throw new Error("feeState parameter is required post E-upgrade")}const{parse:it,hexToBuffer:ot}=a.utils;class dt{constructor(e){this.provider=e}setProvider(e){this.provider=e}getProvider(){return this.provider}async getUTXOs(e){const t=this.provider.getApi(e);return Ee(this.getAddresses(e),t)}async getStake(){const e=this.provider.getApiP();return Ue(this.getAddresses("P"),e)}async getAtomicUTXOs(e,t){if(e===t)throw new Error("Chain can not be the same as source chain.");const r=this.provider.getApi(e),s=this.provider.getChainID(t);return Ee(this.getAddresses(e),r,{sourceChain:s,addresses:[]})}async getNonce(){const e=this.getAddressEVM();return await this.provider.evmRpc.getTransactionCount(e)}exportX(e,t,r,s){s=s||this.getCurrentAddress(r);const n=it(s)[2],i=this.provider.getAvaxID(),o=a.TransferableOutput.fromNative(i,e,[n]),d=ze(t.getUTXOs(),!0),u=this.provider.getChainID(r),c=this.getAddresses("X").map((e=>it(e)[2])),l=it(this.getChangeAddress("X"))[2];return a.avm.newExportTx(this.provider.getContext(),u,c,d,[o],{threshold:1,changeAddresses:[l]})}importP({utxoSet:e,sourceChain:t,toAddress:r,threshold:s,feeState:n,locktime:i}){const o=this.provider.getChainID(t),d=this.getAddresses("P").map((e=>it(e)[2]));it(this.getChangeAddress("P"))[2],r=r||this.getCurrentAddress("P");const u=it(r)[2],c=e.getUTXOs();return at(n),a.pvm.newImportTx({fromAddressesBytes:d,utxos:c,toAddressesBytes:[u],sourceChainId:o,threshold:s,feeState:n,locktime:i},this.provider.getContext())}importX(e,t,r){const s=this.provider.getChainID(t),n=this.getAddresses("X").map((e=>it(e)[2])),i=it(this.getChangeAddress("X"))[2];r=r||this.getCurrentAddress("X");const o=it(r)[2];return a.avm.newImportTx(this.provider.getContext(),s,e.getUTXOs(),[o],n,{changeAddresses:[i]})}importC(e,r,s,n,i){const o=this.provider.getChainID(r),d=this.getAddresses("C").map((e=>it(e)[2]));i=i||this.getAddressEVM();const u=Buffer.from(t.strip0x(i),"hex");return a.evm.newImportTxFromBaseFee(this.provider.getContext(),u,d,e.getUTXOs(),o,s,n)}exportC(e,t,r,s,n){const i=ot(this.getAddressEVM()),o=this.provider.getChainID(t);n=n||this.getCurrentAddress(t);const d=it(n)[2],u=s/BigInt(1e9);return a.evm.newExportTxFromBaseFee(this.provider.getContext(),u,e,o,i,[d],r)}exportP({amount:e,utxoSet:t,destination:r,feeState:s,toAddress:n}){n=n||this.getCurrentAddress(r);const i=it(n)[2],o=this.provider.getAvaxID(),d=a.TransferableOutput.fromNative(o,e,[i]),u=ze(t.getUTXOs(),!0),c=this.provider.getChainID(r),l=this.getAddresses("P").map((e=>it(e)[2])),h=it(this.getChangeAddress("P"))[2];return at(s),a.pvm.newExportTx({changeAddressesBytes:[h],fromAddressesBytes:l,utxos:u,outputs:[d],destinationChainId:c,feeState:s},this.provider.getContext())}consolidateP({utxoSet:e,amount:t,feeState:r,toAddress:s,options:n}){const i=Ge(e.getUTXOs());s=s??this.getCurrentAddress("P");const o=it(s)[2],d=this.provider.getContext(),u=[a.TransferableOutput.fromNative(d.avaxAssetID,t,[o])],c=this.getAddresses("P").map((e=>it(e)[2])),l=it(this.getChangeAddress("P"))[2],h=n?.changeAddresses??[l];return at(r),a.pvm.newBaseTx({changeAddressesBytes:h,fromAddressesBytes:c,utxos:i,outputs:u,minIssuanceTime:n?.minIssuanceTime,memo:n?.memo,feeState:r},d)}baseTX({utxoSet:e,chain:t,toAddress:r,amountsPerAsset:s,feeState:n,options:i,fromAddresses:o}){const[d,u,c]=it(r);if(d!==t||u!==this.provider.getHrp())throw new Error(`Invalid recipient address "${r}"`);const l=Object.entries(s).map((([e,t])=>a.TransferableOutput.fromNative(e,t,[c]))),h=ze(e.getUTXOs(),!0),p=(o??this.getAddresses(t)).map((e=>it(e)[2])),g=it(this.getChangeAddress("P"))[2],m=i?.changeAddresses??[g];return"X"===t?a.avm.newBaseTx(this.provider.getContext(),p,h,l,i):(at(n),a.pvm.newBaseTx({changeAddressesBytes:m,fromAddressesBytes:p,utxos:h,outputs:l,minIssuanceTime:i?.minIssuanceTime,memo:i?.memo,feeState:n},this.provider.getContext()))}convertSubnetToL1({utxoSet:e,chainId:t,subnetId:r,subnetAuth:s,feeState:n,address:i,validators:o,options:d,fromAddresses:u}){const c=(u??this.getAddresses("P")).map((e=>it(e)[2])),l=it(this.getChangeAddress("P"))[2],h=d?.changeAddresses??[l],p=o.map((({nodeId:e,pubKey:t,signature:r,balance:s,weight:n,deactivationOwner:i,remainingBalanceOwner:o})=>{const d=new a.pvmSerial.ProofOfPossession(Uint8Array.from(a.utils.hexToBuffer(t)),Uint8Array.from(a.utils.hexToBuffer(r))),u=a.PChainOwner.fromNative(o.addresses.map((e=>it(e)[2])),o.threshold??1),c=a.PChainOwner.fromNative(i.addresses.map((e=>it(e)[2])),i.threshold??1);return a.L1Validator.fromNative(e,n,s,d,u,c)}));return a.pvm.newConvertSubnetToL1Tx({changeAddressesBytes:h,validators:p,fromAddressesBytes:c,address:it(i)[2],chainId:t,subnetId:r,subnetAuth:s,feeState:n,utxos:ze(e.getUTXOs(),!0)},this.provider.getContext())}registerL1Validator({utxoSet:e,balance:t,signature:r,message:s,feeState:n,fromAddresses:i,options:o}){const d=(i??this.getAddresses("P")).map((e=>it(e)[2])),u=it(this.getChangeAddress("P"))[2],c=o?.changeAddresses??[u];return a.pvm.newRegisterL1ValidatorTx({utxos:ze(e.getUTXOs(),!0),balance:t,blsSignature:Uint8Array.from(a.utils.hexToBuffer(r)),changeAddressesBytes:c,feeState:n,fromAddressesBytes:d,memo:o?.memo,message:Uint8Array.from(a.utils.hexToBuffer(s)),minIssuanceTime:o?.minIssuanceTime},this.provider.getContext())}setL1ValidatorWeight({utxoSet:e,feeState:t,message:r,options:s,fromAddresses:n}){const i=(n??this.getAddresses("P")).map((e=>it(e)[2])),o=it(this.getChangeAddress("P"))[2],d=s?.changeAddresses??[o];return a.pvm.newSetL1ValidatorWeightTx({utxos:ze(e.getUTXOs(),!0),changeAddressesBytes:d,feeState:t,fromAddressesBytes:i,memo:s?.memo,message:Uint8Array.from(a.utils.hexToBuffer(r)),minIssuanceTime:s?.minIssuanceTime},this.provider.getContext())}disableL1Validator({utxoSet:e,feeState:t,options:r,fromAddresses:s,disableAuth:n,validationId:i}){const o=(s??this.getAddresses("P")).map((e=>it(e)[2])),d=it(this.getChangeAddress("P"))[2],u=r?.changeAddresses??[d];return a.pvm.newDisableL1ValidatorTx({disableAuth:n,validationId:i,utxos:ze(e.getUTXOs(),!0),changeAddressesBytes:u,feeState:t,fromAddressesBytes:o,memo:r?.memo,minIssuanceTime:r?.minIssuanceTime},this.provider.getContext())}increaseL1ValidatorBalance({utxoSet:e,feeState:t,options:r,fromAddresses:s,balance:n,validationId:i}){const o=(s??this.getAddresses("P")).map((e=>it(e)[2])),d=it(this.getChangeAddress("P"))[2],u=r?.changeAddresses??[d];return a.pvm.newIncreaseL1ValidatorBalanceTx({balance:n,validationId:i,utxos:ze(e.getUTXOs(),!0),changeAddressesBytes:u,feeState:t,fromAddressesBytes:o,memo:r?.memo,minIssuanceTime:r?.minIssuanceTime},this.provider.getContext())}createBlockchain({utxoSet:e,subnetId:t,chainName:r,vmID:s,fxIds:n,genesisData:i,subnetAuth:o,feeState:d,options:u,fromAddresses:c}){const l=ze(e.getUTXOs(),!0),h=(c??this.getAddresses("P")).map((e=>it(e)[2])),p=it(this.getChangeAddress("P"))[2],g=u?.changeAddresses??[p];return at(d),a.pvm.newCreateChainTx({chainName:r,feeState:d,fromAddressesBytes:h,fxIds:n,genesisData:i,subnetAuth:o,subnetId:t,utxos:l,vmId:s,changeAddressesBytes:g},this.provider.getContext())}createSubnet({utxoSet:e,rewardAddresses:t,feeState:r,fromAddresses:s,options:n,threshold:i,locktime:o}){const d=ze(e.getUTXOs(),!0),u=(s??this.getAddresses("P")).map((e=>it(e)[2])),c=it(this.getChangeAddress("P"))[2],l=n?.changeAddresses??[c],h=t.map((e=>it(e)[2]));return at(r),a.pvm.newCreateSubnetTx({fromAddressesBytes:u,changeAddressesBytes:l,utxos:d,minIssuanceTime:n?.minIssuanceTime,memo:n?.memo,feeState:r,threshold:i,locktime:o,subnetOwners:h},this.provider.getContext())}addSubnetValidator({utxoSet:e,nodeId:t,start:r,end:s,weight:n,subnetId:i,subnetAuth:o,feeState:d,fromAddresses:u,options:c}){const l=ze(e.getUTXOs(),!0),h=(u??this.getAddresses("P")).map((e=>it(e)[2])),p=it(this.getChangeAddress("P"))[2],g=c?.changeAddresses??[p];return at(d),a.pvm.newAddSubnetValidatorTx({changeAddressesBytes:g,fromAddressesBytes:h,utxos:l,minIssuanceTime:c?.minIssuanceTime,memo:c?.memo,nodeId:t,start:r,end:s,weight:n,subnetId:i,subnetAuth:o,feeState:d},this.provider.getContext())}addPermissionlessValidator({utxoSet:e,nodeId:t,start:r,end:s,weight:n,subnetId:i,shares:o,feeState:d,fromAddresses:u,rewardAddresses:c,delegatorRewardAddresses:l,publicKey:h,signature:p,options:g,threshold:m,locktime:f,stakingAssetId:x}){const v=Je(e.getUTXOs()),w=(u??this.getAddresses("P")).map((e=>it(e)[2])),A=(c??[this.getCurrentAddress("P")]).map((e=>it(e)[2])),y=(l??[this.getCurrentAddress("P")]).map((e=>it(e)[2]));if(!(i!==a.networkIDs.PrimaryNetworkID.toString()||h&&p))throw new Error("Must provide public key and signature for primary subnet.");const b=it(this.getChangeAddress("P"))[2],I=g?.changeAddresses??[b];return at(d),a.pvm.newAddPermissionlessValidatorTx({fromAddressesBytes:w,delegatorRewardsOwner:y,utxos:v,minIssuanceTime:g?.minIssuanceTime,memo:g?.memo,changeAddressesBytes:I,nodeId:t,start:r,end:s,weight:n,subnetId:i,shares:o,feeState:d,publicKey:h,rewardAddresses:A,signature:p,locktime:f,threshold:m,stakingAssetId:x},this.provider.getContext())}addPermissionlessDelegator({utxoSet:e,nodeId:t,start:r,end:s,weight:n,subnetId:i,fromAddresses:o,rewardAddresses:d,options:u,locktime:c,feeState:l,threshold:h,stakingAssetId:p}){const g=Je(e.getUTXOs()),m=(o??this.getAddresses("P")).map((e=>it(e)[2])),f=(d??[this.getCurrentAddress("P")]).map((e=>it(e)[2])),x=it(this.getChangeAddress("P"))[2],v=u?.changeAddresses??[x];return at(l),a.pvm.newAddPermissionlessDelegatorTx({fromAddressesBytes:m,utxos:g,minIssuanceTime:u?.minIssuanceTime,memo:u?.memo,changeAddressesBytes:v,nodeId:t,start:r,end:s,weight:n,subnetId:i,rewardAddresses:f,locktime:c,stakingAssetId:p,threshold:h,feeState:l},this.provider.getContext())}removeSubnetValidator({utxoSet:e,nodeId:t,subnetId:r,subnetAuth:s,fromAddresses:n,feeState:i,options:o}){const d=ze(e.getUTXOs(),!0),u=(n??this.getAddresses("P")).map((e=>it(e)[2])),c=it(this.getChangeAddress("P"))[2],l=o?.changeAddresses??[c];return at(i),a.pvm.newRemoveSubnetValidatorTx({changeAddressesBytes:l,fromAddressesBytes:u,utxos:d,minIssuanceTime:o?.minIssuanceTime,memo:o?.memo,nodeId:t,subnetId:r,subnetAuth:s,feeState:i},this.provider.getContext())}transferSubnetOwnershipTx({utxoSet:e,subnetId:t,subnetAuth:r,subnetOwners:s,feeState:n,fromAddresses:i,options:o,threshold:d,locktime:u}){const c=ze(e.getUTXOs(),!0),l=(i??this.getAddresses("P")).map((e=>it(e)[2])),h=it(this.getChangeAddress("P"))[2],p=o?.changeAddresses??[h],g=s.map((e=>it(e)[2]));return at(n),a.pvm.newTransferSubnetOwnershipTx({changeAddressesBytes:p,fromAddressesBytes:l,utxos:c,minIssuanceTime:o?.minIssuanceTime,memo:o?.memo,subnetId:t,subnetAuth:r,subnetOwners:g,feeState:n,threshold:d,locktime:u},this.provider.getContext())}}class ut extends dt{constructor(e,t,r){if(super(r),this.pubkeyXP=e,this.pubkeyC=t,33!==t.length||33!==e.length)throw new Error("Public key must be 33 byte compressed public key")}static fromPublicKey(e,r,s){const a=t.strip0x(n.SigningKey.computePublicKey(e,!0)),i=t.strip0x(n.SigningKey.computePublicKey(r,!0)),o=Buffer.from(a,"hex"),d=Buffer.from(i,"hex");return new ut(o,d,s)}static fromMnemonic(e,t,r,s){if(!c.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");if(!nt(r)||!nt(t))throw new Error("Not valid derivation path. Make sure it is a valid BIP44 path starting with m/");const n=c.mnemonicToSeedSync(e),a=u.fromSeed(n),i=a.derivePath(r),o=a.derivePath(t);return ut.fromPublicKey(o.publicKey,i.publicKey,s)}getAddress(e){const t="C"===e?this.pubkeyC:this.pubkeyXP;return this.provider.getAddress(t,e)}getAddressEVM(){return n.computeAddress(`0x${this.pubkeyC.toString("hex")}`)}getAddresses(e){return[this.getAddress(e)]}getChangeAddress(e){return this.getAddress(e)}getCurrentAddress(e){return this.getAddress(e)}}const ct={type:"zondax",getApp:e=>new y(e),async getVersion(e){const t=this.getApp(e);return(await t.getAppInfo()).appVersion},async getAddress(e,t,r={show:!1,hrp:"avax"}){const s=this.getApp(e);return{publicKey:(await s.getAddressAndPubKey(t.toString(),r.show,r.hrp)).publicKey}},async getXPUB(e,t){const r=this.getApp(e),s=await r.getExtendedPubKey(t,!1);return{pubKey:s.publicKey,chainCode:s.chain_code}},async signHash(e,t,r,s){const n=this.getApp(e),a=s.map((e=>e.toString(!0))),i=await n.signHash(r.toString(),a,t),o=i.signatures||new Map;return{hash:i.hash||Buffer.from(""),signatures:o}},async signTx(e,t,r,s,n){const a=this.getApp(e),i=s.map((e=>e.toString(!0))),o=n?.map((e=>e.toString(!0)))||[],d=await a.sign(r.toString(),i,t,o),u=d.signatures||new Map;return{...d,signatures:u}}};async function lt(e){return!(await ct.getVersion(e)>="0.6.0")}const{parse:ht}=a.utils;class pt extends dt{constructor(e,t,r){super(r),this.avmXpub=e,this.accountNode=u.fromBase58(e),this.evmWallet=new ut(t,t,r)}accountNode;evmWallet;externalIndex=0;internalIndex=0;pubkeyCache={};static fromMnemonic(e,t){if(!c.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");const r=c.mnemonicToSeedSync(e),s=u.fromSeed(r),n=s.derivePath("m/44'/9000'/0'").neutered(),a=s.derivePath(K(0,U.BIP44,"EVM")).neutered();return new pt(n.toBase58(),a.publicKey,t)}setExternalIndex(e){if(e<0)throw new Error("Index must be >= 0");this.externalIndex=e}setInternalIndex(e){if(e<0)throw new Error("Index must be >= 0");this.internalIndex=e}getPubKeyAtIndex(e,t=!1){if(e<0)throw new Error("Index must be >= 0");const r=`${t?1:0}/${e}`,s=this.pubkeyCache[r];if(s)return s;const{publicKey:n}=this.accountNode.derivePath(r);return this.pubkeyCache[r]=n,n}getAddressAtIndex(e,t=!1,r){const s=this.getPubKeyAtIndex(e,t);return this.provider.getAddress(s,r)}getExternalAddresses(e){const t=[];for(let r=0;r<=this.externalIndex;r++)t.push(this.getAddressAtIndex(r,!1,e));return t}getInternalAddresses(e){const t=[];for(let r=0;r<=this.internalIndex;r++)t.push(this.getAddressAtIndex(r,!0,e));return t}getAddresses(e){return"C"===e?[this.getCurrentAddress("C")]:"P"===e?[...this.getExternalAddresses(e)]:[...this.getInternalAddresses(e),...this.getExternalAddresses(e)]}getChangeAddress(e){return"C"===e?this.evmWallet.getAddress("C"):"P"===e?this.getAddressAtIndex(this.externalIndex,!1,"P"):this.getAddressAtIndex(this.internalIndex,!0,e)}getCurrentAddress(e){return"C"===e?this.evmWallet.getAddress("C"):this.getAddressAtIndex(this.externalIndex,!1,e)}incrementIndex(e){e?this.externalIndex++:this.internalIndex++}getAddressEVM(){return this.evmWallet.getAddressEVM()}getActiveIndices(){return{external:this.externalIndex,internal:this.internalIndex}}getInternalRawAddresses(){return this.getInternalAddresses("X").map((e=>Buffer.from(ht(e)[2])))}getExternalRawAddresses(){return this.getExternalAddresses("X").map((e=>Buffer.from(ht(e)[2])))}getRawAddressC(){return Buffer.from(ht(this.getCurrentAddress("C"))[2])}}const{isTransferOut:gt,isStakeableLockOut:mt}=a.utils;function ft(e){const t=e.output;return gt(t)||mt(t)?t.getOwners():[]}function xt(e){const t=e.getTx();return a.avmSerial.isExportTx(t)||a.pvmSerial.isExportTx(t)?new Set(t.outs.map(ft).flat()):a.evmSerial.isExportTx(t)?new Set(t.exportedOutputs.map(ft).flat()):new Set((t.baseTx?.outputs??[]).map(ft).flat())}const{parse:vt}=a.utils;class wt extends pt{constructor(e,t,r){super(e,t,r)}getAdditionalAddressesByIndices(e,t,r){return"C"===r?[]:e.map((e=>{const s=this.getAddressAtIndex(e,t,r),[,,n]=vt(s);return Buffer.from(n).toString("hex")}))}static async fromTransport(e,r){if(await lt(e))throw new Error("Unsupported ledger app version. Must be >= 0.6.0");const s=V(e),a=await ct.getXPUB(e,wt.getAccountPath("X")),i=u.fromPublicKey(a.pubKey,a.chainCode),o=K(0,U.BIP44,"EVM"),d=await s.getAddress(o,!1),c=n.SigningKey.computePublicKey(Buffer.from(d.publicKey,"hex"),!0),l=Buffer.from(t.strip0x(c),"hex");return new wt(i.toBase58(),l,r)}static getAccountPath(e){switch(e){case"P":case"X":return"m/44'/9000'/0'";case"C":return"m/44'/60'/0'"}}async signMessage(e){throw new Error("not implemented")}filterOwnedAddresses(e,t,r){const s=this.getInternalRawAddresses().map((e=>e.toString("hex"))),n=this.getExternalRawAddresses().map((e=>e.toString("hex"))),a=new Set([...s,...r??[]]),i=new Set([...n,...t??[]]),o=new Set;return e.forEach((e=>{const t=e.toString("hex");if(a.has(t)){const e=[...a].indexOf(t);o.add(`1/${e}`)}else if(i.has(t)){const e=[...i].indexOf(t);o.add(`0/${e}`)}})),o}async signTx(e){if(!e.transport)throw new Error("Ledger transport not provided");const{tx:t,externalIndices:r,internalIndices:s}=e,n=t.getVM(),a=Buffer.from(t.toBytes()),i="EVM"===n?"C":"X",o=t.getAddresses().map((e=>Buffer.from(e))),d=this.getAdditionalAddressesByIndices(r??[],!1,i),u=this.getAdditionalAddressesByIndices(s??[],!0,i),c=[...this.filterOwnedAddresses(o,d,u).values()].map((e=>A.fromString(e))),l=[...xt(t)].map((e=>Buffer.from(e))),h=[...this.filterOwnedAddresses(l).values()].map((e=>A.fromString(e)));return(await this.signTxBuffer({buffer:a,chain:i,transport:e.transport,signers:c,change:h})).forEach((e=>{t.addSignature(e)})),t}async signTxBuffer(e){if(!e.transport)throw new Error("Ledger transport not provided");if(!e.signers)throw new Error("Signers not provided");const t=e.change||[],r=A.fromString(wt.getAccountPath(e.chain));return[...(await ct.signTx(e.transport,e.buffer,r,e.signers,t)).signatures.values()]}}const{strip0x:At}=a.utils;class yt extends pt{constructor(e,t,r){const s=u.fromBase58(e).neutered(),a=new n.SigningKey(t),i=Buffer.from(At(a.compressedPublicKey),"hex");super(s.toBase58(),i,r),this.evmPrivKey=t,this.accountNode=u.fromBase58(e)}accountNode;static fromMnemonic(e,t){if(!c.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");const r=c.mnemonicToSeedSync(e),s=u.fromSeed(r),n=s.derivePath("m/44'/9000'/0'"),a=s.derivePath(K(0,U.BIP44,"EVM"));if(!a.privateKey)throw new Error("Unable to derive EVM private key.");return new yt(n.toBase58(),a.privateKey,t)}async signTx(e){const t=this.getSigningKeys(e);return await a.addTxSignatures({unsignedTx:e.tx,privateKeys:t}),e.tx}getExternalPrivateKeys(e){const t=[];for(let e=0;e<=this.externalIndex;e++){const r=this.accountNode.derivePath(`0/${e}`);if(!r.privateKey)throw new Error("Unable to get private key.");t.push(r.privateKey)}const r=(e??[]).reduce(((e,t)=>{if(t>this.externalIndex){const r=this.accountNode.derivePath(`0/${t}`);if(!r.privateKey)throw new Error("Unable to get private key.");e.push(r.privateKey)}return e}),[]);return[...t,...r]}getInternalPrivateKeys(e){const t=[];for(let e=0;e<=this.internalIndex;e++){const r=this.accountNode.derivePath(`1/${e}`);if(!r.privateKey)throw new Error("Unable to get private key.");t.push(r.privateKey)}const r=(e??[]).reduce(((e,t)=>{if(t>this.internalIndex){const r=this.accountNode.derivePath(`1/${t}`);if(!r.privateKey)throw new Error("Unable to get private key.");e.push(r.privateKey)}return e}),[]);return[...t,...r]}getSigningKeys(e){const{tx:t,externalIndices:r,internalIndices:s}=e,n=t.getVM();return"AVM"===n?[...this.getInternalPrivateKeys(s),...this.getExternalPrivateKeys(r)]:"PVM"===n?this.getExternalPrivateKeys(r):[this.evmPrivKey]}async signTxBuffer(e){throw new Error("not implemented")}async signMessage(e){throw new Error("not implemented")}}const{getPublicKey:bt,sign:It,signHash:Tt}=a.secp256k1,{addChecksum:St}=a.utils;class Pt extends ut{privKeyXP;privKeyC;constructor(e,t,r){super(Buffer.from(bt(e)),Buffer.from(bt(t)),r),this.privKeyXP=e,this.privKeyC=t}static fromMnemonic(e,t,r,s){if(!c.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");if(!nt(r)||!nt(t))throw new Error("Not valid derivation path. Make sure it is a valid BIP44 path starting with m/");const n=c.mnemonicToSeedSync(e),a=u.fromSeed(n),i=a.derivePath(t),o=a.derivePath(r);if(!i.privateKey||!o.privateKey)throw new Error("Failed to generate private keys.");return new Pt(i.privateKey,o.privateKey,s)}async signMessage(e){const t=Be(e.message),r=this.getSigningKey(e.chain);return Buffer.from(St(await Tt(t,r)))}getSigningKey(e){return"C"===e?this.privKeyC:this.privKeyXP}async signTx(e){return await a.addTxSignatures({unsignedTx:e.tx,privateKeys:[this.privKeyC,this.privKeyXP]}),e.tx}async signTxBuffer(e){const t=this.getSigningKey(e.chain);return[Buffer.from(await It(e.buffer,t))]}}const{strip0x:Bt}=a.utils;class Ct extends ut{constructor(e,t,r,s,i){const o=a.utils.strip0x(n.SigningKey.computePublicKey(e,!0)),d=a.utils.strip0x(n.SigningKey.computePublicKey(r,!0));if(super(Buffer.from(o,"hex"),Buffer.from(d,"hex"),i),this.pathXP=t,this.pathC=s,!nt(t)||!nt(s))throw new Error("Invalid path configuration.")}static async fromTransport(e,t,r,a){if(await lt(e))throw new Error("Ledger app not supported. Must be version >= 0.6.0");if(!nt(t)||!nt(r))throw new Error("Invalid path configuration.");const i=new s(e),o=await i.getAddress(r,!1),d=await i.getAddress(t,!1),u=Buffer.from(Bt(o.publicKey),"hex"),c=Buffer.from(Bt(d.publicKey),"hex"),l=Buffer.from(Bt(n.SigningKey.computePublicKey(u,!0)),"hex"),h=Buffer.from(Bt(n.SigningKey.computePublicKey(c,!0)),"hex");return new Ct(h,t,l,r,a)}async signMessage(e){throw new Error("not implemented")}getFullSignerPath(e){return"C"===e?this.pathC:this.pathXP}getPartialSignerPath(e){return this.getFullSignerPath(e).split("/").slice(4).join("/")}getAccountPath(e){return this.getFullSignerPath(e).split("/").slice(0,4).join("/")}async signTx(e){if(!e.transport)throw new Error("Ledger transport not provided");const t=e.tx,r=t.getVM(),s=Buffer.from(t.toBytes()),n="EVM"===r?"C":"X";return(await this.signTxBuffer({buffer:s,chain:n,transport:e.transport})).forEach((e=>{t.addSignature(e)})),t}async signTxBuffer(e){if(!e.transport)throw new Error("Ledger transport not provided");const t=A.fromString(this.getAccountPath(e.chain)),r=A.fromString(this.getPartialSignerPath(e.chain));return[...(await ct.signTx(e.transport,e.buffer,t,[r],[r])).signatures.values()]}}const{parse:kt}=a.utils;var Et=Object.freeze({__proto__:null,AbstractProvider:le,AddressWallet:class extends dt{constructor(e,t,r,s,a){if(super(a),this.addressC=e,this.addressCoreEth=t,this.xpAddresses=r,this.xpChangeAddress=s,r.length<1)throw new Error("Must have at least 1 xp address.");if(!n.isAddress(e))throw new Error("Not a valid C-Chain (EVM) address");if(r.some((e=>!_e(e,!1))))throw new Error("Given addresses must be valid avalanche bech32 addresses without the chain alias prefix");if(!_e(t,!1))throw new Error("Given CoreEth address must be valid avalanche bech32 addresses without the chain alias prefix");this.setChangeAddress(s)}setChangeAddress(e){if(!_e(e,!1))throw new Error("Given address must be valid avalanche bech32 addresses without the chain alias prefix");this.xpChangeAddress=e}getAddressEVM(){return this.addressC}getAddresses(e){return("C"===e?[this.addressCoreEth]:this.xpAddresses).map((t=>this.provider.formatAddress(t,e)))}getChangeAddress(e){const t="C"===e?this.addressCoreEth:this.xpChangeAddress;return this.provider.formatAddress(t,e)}getCurrentAddress(e){const t="C"===e?this.addressCoreEth:this.xpAddresses[0];return this.provider.formatAddress(t,e)}},DevnetContext:me,FujiContext:ge,JsonRpcProvider:fe,LedgerSigner:Ct,LedgerWallet:wt,MainnetContext:pe,MnemonicWallet:yt,MnemonicWalletVoid:pt,P_CHAIN_TX_SIZE_LIMIT:65536,SimpleLedgerSigner:class{constructor(e,t,r){this.activeAccountIndex=e,this.provider=t,r&&(this.accountNode=u.fromBase58(r))}accountNode;reSerializeTx(e,t){return e instanceof a.EVMUnsignedTx||"C"===t?a.EVMUnsignedTx.fromJSON(JSON.stringify(e.toJSON())):a.UnsignedTx.fromJSON(JSON.stringify(e.toJSON()))}getChainAlias(e){return"EVM"===e.getVM()?"C":"X"}getAccountPath(e){switch(e){case"X":case"P":return"m/44'/9000'/0'";case"C":return"m/44'/60'/0'"}}getAddressOfPath(e,t){if(!this.accountNode)return null;const{publicKey:r}=this.accountNode.derivePath(e),s=this.provider.getAddress(r,t);return Buffer.from(kt(s)[2]).toString("hex")}getAddressPathMap(e){const{tx:t,externalIndices:r,internalIndices:s}=e,n=this.getChainAlias(t),a=`0/${this.activeAccountIndex}`,i=new Map;if("C"===n||!this.accountNode)return i;const o=(r??[]).map((e=>`0/${e}`)),d=(s??[]).map((e=>`1/${e}`)),u=[a,...o,...d];for(const e of u){const t=this.getAddressOfPath(e,n);t&&i.set(t,e)}return i}getAddressBipPaths(e,t){return 0===t.size?[A.fromString(`0/${this.activeAccountIndex}`)]:e.reduce(((e,r)=>{const s=t.get(Buffer.from(r).toString("hex"));return s&&e.push(A.fromString(s)),e}),[])}async signTx(e){if(!e.transport)throw new Error("Ledger transport not provided");const t=this.getChainAlias(e.tx),r=this.reSerializeTx(e.tx,t),s=Buffer.from(r.toBytes()),n=this.getAddressPathMap(e),a=this.getAddressBipPaths(r.getAddresses(),n),i=this.getAddressBipPaths([...xt(r)],n);return(await this.signTxBuffer({buffer:s,chain:t,transport:e.transport,signers:a,change:i})).forEach((e=>{r.addSignature(e)})),r}async signTxBuffer(e){if(!e.transport)throw new Error("Ledger transport not provided");if(!e.signers)throw new Error("Signers not provided");const t=e.change||[],r=A.fromString(this.getAccountPath(e.chain));return[...(await ct.signTx(e.transport,e.buffer,r,e.signers,t)).signatures.values()]}async signMessage(e){if(!e.transport||!e.message)throw new Error("Unable to sign message. Incomplete or invalid request.");const t=e.signer||A.fromString(`0/${this.activeAccountIndex}`);if(2!=t.toPathArray().length)throw new Error("Given signer path must have a depth of 2. Ex. 0/0, 0/1");const r=Be(e.message),s=(await ct.signHash(e.transport,r,A.fromString(this.getAccountPath(e.chain)),[t])).signatures.get(t.toString(!0));if(!s)throw new Error("Failed to sign message.");return s}},SimpleSigner:class{accountNodeXP;signerNodeEVM;activeAccountIndex;constructor(e,t){if(!c.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");if(t<0||t%1!=0)throw new Error("Invalid account index.");const r=c.mnemonicToSeedSync(e),s=u.fromSeed(r);this.accountNodeXP=s.derivePath("m/44'/9000'/0'");const n=s.derivePath(K(t,U.BIP44,"EVM"));this.signerNodeEVM=n,this.activeAccountIndex=t}getAdditionalKeys(e,t){return[...new Set(e??[])].reduce(((e,r)=>{const s=this.accountNodeXP.derivePath(`${t?1:0}/${r}`);if(!s.privateKey)throw new Error("Unable to get private key.");return e.push(s.privateKey),e}),[])}getSigningKeys(e,t,r){if("EVM"===e){if(!this.signerNodeEVM.privateKey)throw new Error("Unable to derive EVM private key.");return[this.signerNodeEVM.privateKey]}const s=this.accountNodeXP.derivePath(`0/${this.activeAccountIndex}`);if(!s.privateKey)throw new Error("Unable to derive X/P private key.");const n=this.getAdditionalKeys(t,!1);if("AVM"===e){const e=this.getAdditionalKeys(r,!0);return[s.privateKey,...n,...e]}if("PVM"===e)return[s.privateKey,...n]}async signTx(e){const{tx:t,externalIndices:r,internalIndices:s}=e,n=t.getVM(),i=this.getSigningKeys(n,r,s);if(!i?.length)throw new Error("Unable to sign transaction: signing keys are missing.");return await a.addTxSignatures({unsignedTx:t,privateKeys:i}),e.tx}async signTxBuffer(e){throw new Error("Not implemented")}getActiveAccountNode(e){switch(e){case"X":case"P":return this.accountNodeXP.derivePath(`0/${this.activeAccountIndex}`);case"C":return this.signerNodeEVM}}async signMessage(e){const t=this.getActiveAccountNode(e.chain);if(!t.privateKey)throw Error("Unable to sign message, key not found.");const r=Be(e.message),s=await a.secp256k1.signHash(r,t.privateKey);return Buffer.from(s)}},SizeSupportedTx:Ze,StaticSigner:Pt,TxType:W,WalletAbstract:dt,WalletVoid:ut,addSignaturesToAvalancheTx:async({transactionHex:e,signatures:t,chainAlias:r,provider:s,utxos:n})=>{if(!t.length)throw new Error("signatures were not provided");const i=await oe({transactionHex:e,chainAlias:r,provider:s,utxos:n});await Promise.all(t.map((e=>i.addSignature(e))));const o=i.getCredentials(),d=i.getSigIndices().reduce(((e,t,r)=>{const s=t.map((e=>{const t=o[r]?.toJSON()[e];if(!t)throw new Error(`Failed to sign [${r}, ${e}]`);return t}));return e.push(new a.Credential(s)),e}),[]),u=new a.UnsignedTx(i.getTx(),i.getInputUtxos(),i.addressMaps,d);return{signedTxHex:se(new a.avaxSerial.SignedTx(i.getTx(),d)),hasAllSignatures:u.hasAllSignatures()}},convertGlacierUtxo:ye,createAvalancheEvmUnsignedTx:async({txBytes:e,fromAddress:t,vm:r,utxos:s})=>{const n=be(r,e),i=Ie(t)[2],o=Te(i);if(a.evmSerial.isExportTx(n))return new a.EVMUnsignedTx(n,[],new Se([Pe.fromJSON([[o,0]])]));if(a.evmSerial.isImportTx(n)){const e=Se.fromTransferableInputs(n.importedInputs,s,BigInt(Math.floor((new Date).getTime()/1e3)),[i]);return new a.UnsignedTx(n,s,e)}throw new Error("Unsupported transaction type")},createAvalancheUnsignedTx:Y,digestMessage:Be,emptySignature:te,getAddressFromXpub:function(e,t,r,s,n=!1){if(t<0)throw new Error("Account index must be >= 0");const a=n?"1":"0",i=u.fromBase58(e).derivePath(`${a}/${t}`).publicKey;return r.getAddress(i,s)},getAddressPublicKeyFromXpub:function(e,t){if(t<0)throw new Error("Account index must be >= 0");return u.fromBase58(e).derivePath(`0/${t}`).publicKey},getAssetBalance:function(e,t){const r=e.getAssetDict()[t],s={locked:BigInt(0),available:BigInt(0),multisig:BigInt(0),lockedStakeable:BigInt(0),total:BigInt(0)};if(!r)return s;const n=r.getUTXOs(),a=De();return n.forEach((e=>{const t=Me(e);s[t.threshold>1?"multisig":t.locktime>a?"locked":t.stakeableLocktime>a?"lockedStakeable":"available"]+=t.amount})),s.total=s.locked+s.lockedStakeable+s.multisig+s.available,s},getLedgerProvider:async function(e){return ct},getMaximumUtxoSet:function({wallet:e,utxos:t,sizeSupportedTx:r,limit:s=65536,feeState:n}){const{sortFunction:a,unsignedTxBuilder:i}=st[r],o=De(),d=a(t.filter((e=>{const{locktime:t,stakeableLocktime:s}=Qe(e);return t<o&&(s<o||("AddPermissionlessDelegator"===r||"AddPermissionlessValidator"===r))}))),u=function(e,t,r){let s=0,n=e.length-1;if(t(e)<=r)return n;let a=-1;for(;s<=n;){const i=Math.floor((s+n)/2);t(e.slice(0,i+1))<=r?(a=i,s=i+1):n=i-1}return a}(d,(t=>{try{return function(e){const t=e.getInputUtxos().reduce(((e,t)=>e+(8+65*Qe(t).threshold)),0);return 6+e.toBytes().length+t}(i(e,t,n))}catch(e){return console.log("Unable to estimate size of utxos",{e:e,utxos:t.map(Qe)}),s+1}}),s);return-1===u?[]:d.slice(0,u+1)},getPaginatedUTXOs:Ve,getPchainUnixNow:async function(e){const t=e?x.AVALANCHE_XP_TEST_NETWORK.rpcUrl:x.AVALANCHE_XP_NETWORK.rpcUrl,r=await new a.pvm.PVMApi(t).getTimestamp(),s=new Date(r.timestamp),n=Math.floor(s.getTime()/1e3);return BigInt(n)},getStakeForAddresses:Ue,getStakedAssetBalance:function(e){const{stakedOutputs:t}=e,r={unlockedStaked:BigInt(0),lockedStaked:BigInt(0),total:BigInt(0)};return t.forEach((e=>{r[a.utils.isStakeableLockOut(e)?"lockedStaked":"unlockedStaked"]+=e.amount()})),r.total=r.lockedStaked+r.unlockedStaked,r},getUTXOsForAddresses:Ee,getUnixNow:De,getUtxosByTxFromGlacier:async({transactionHex:e,chainAlias:t,network:r,url:s,token:n,headers:i})=>{const o=j(t),d=Oe(e),u=Ne(o,d);if(a.evmSerial.isExportTx(u))return[];const c=(e=>{if(a.evmSerial.isImportTx(e)||a.avmSerial.isImportTx(e)||a.pvmSerial.isImportTx(e))return e.sourceChain.toString();const t=e.getVM();switch(t){case a.EVM:return f.BlockchainId.C_CHAIN;case a.AVM:return f.BlockchainId.X_CHAIN;case a.PVM:return f.BlockchainId.P_CHAIN;default:throw new Error(`Unable to get chain for VM type "${t}"`)}})(u),l=Ke(u),h=new f.Glacier({BASE:s,TOKEN:n,HEADERS:i}),p=[...new Set(l.map((e=>e.utxoID.txID.toString())))],g=await Promise.all(p.map((e=>h.primaryNetworkTransactions.getTxByHash({blockchainId:c,network:r,txHash:e}))));return l.reduce(((e,t)=>{const s=g.find((e=>e.txHash===t.utxoID.txID.toString()));if(!s)throw new Error(`Unable to find parent tx "${t.utxoID.txID.toString()}"`);const n=s.emittedUtxos.find((e=>e.utxoId===t.utxoID.ID()));if(!n)throw new Error(`Unable to find UTXO "${t.utxoID.ID()}" at index "${t.utxoID.outputIdx.value()}"`);const a=ye(n,r);return e.push(a),e}),[])},getVmByChainAlias:j,getXpubFromMnemonic:function(e){if(!c.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");const t=c.mnemonicToSeedSync(e);return u.fromSeed(t).derivePath("44'/9000'/0'").neutered().toBase58()},isAddDelegatorTx:function(e){return"add_delegator"===e.type},isAddPermissionlessDelegatorTx:function(e){return"add_permissionless_delegator"===e.type},isAddPermissionlessValidatorTx:function(e){return"add_permissionless_validator"===e.type},isAddSubnetValidatorTx:function(e){return"add_subnet_validator"===e.type},isAddValidatorTx:function(e){return"add_validator"===e.type},isBaseTx:function(e){return"base"===e.type},isBech32Address:_e,isConvertSubnetToL1Tx:function(e){return"convert_subnet_to_l1"===e.type},isCreateChainTx:function(e){return"create_chain"===e.type},isCreateSubnetTx:function(e){return"create_subnet"===e.type},isDisableL1ValidatorTx:function(e){return"disable_l1_validator"===e.type},isExportTx:function(e){return"export"===e.type},isImportTx:function(e){return"import"===e.type},isIncreaseL1ValidatorBalance:function(e){return"increase_l1_validator_balance"===e.type},isObsidianApp:lt,isRegisterL1ValidatorTx:function(e){return"register_l1_validator"===e.type},isRemoveSubnetValidatorTx:function(e){return"remove_subnet_validator"===e.type},isSetL1ValidatorWeightTx:function(e){return"set_l1_validator_weight"===e.type},isTransferSubnetOwnershipTx:function(e){return"transfer_subnet_ownership"===e.type},isTransformSubnetTx:function(e){return"transform_subnet"===e.type},parseAvalancheTx:async function(e,t,r,{feeTolerance:s=50}={}){try{const n=t.getContext(),i=e.getTx(),o=(e=>{for(const t of Object.values(He)){const r=t(e);if(null!==r)return r}throw new Error("no parser found for tx")})(i),d=Re(i,n),u=$e(i),c=qe(i).get(n.avaxAssetID)??BigInt(0),l=d.get(n.avaxAssetID)??BigInt(0),h=u.get(n.avaxAssetID)??BigInt(0);let p=BigInt(0);a.evmSerial.isImportExportTx(i)?p=await t.getApiC().getBaseFee()/BigInt(1e9):"PVM"===i.vm&&(p=await t.getApiP().getFeeState().then((e=>e.price)).catch((()=>BigInt(0))));const{isValid:g,txFee:m}=We({unsignedTx:e,context:n,burnedAmount:l,baseFee:p,feeTolerance:s});return await o({feeData:{totalAvaxBurned:l,totalAvaxOutput:h,totalAvaxInput:c,isValidAvaxBurnedAmount:g,txFee:m},assetId:n.avaxAssetID,provider:t,currentAddress:r})}catch(e){return{type:W.Unknown}}},populateCredential:re,signedTxToHex:se,sortUTXOsByAmount:ze,sortUTXOsByAmountAscending:Ge,sortUTXOsByAmountDescending:Ye,sortUTXOsStaking:Je,verifyDerivationPath:nt});const Vt=Symbol();Object.defineProperty(exports,"BtcNetworks",{enumerable:!0,get:function(){return e.networks}}),exports.Avalanche=Et,exports.BitcoinLedgerWallet=class extends ${constructor(e,t,r,s,n){super(e,r),this.derivationPath=t,this.transport=s,this.walletPolicyDetails=n}setTransport(e){this.transport=e}async signTx(e,t){const r=function(e){return new p(e)}(this.transport),s=this.ecPair.publicKey,n=this.provider.getNetwork(),a=await r.getMasterFingerprint(),i=H(e,t,n,Buffer.from(a,"hex"),s,this.derivationPath),{policy:o,hmac:d}=this.walletPolicyDetails,u=await r.signPsbt(i,o,d),c=R(i,n,s,this.derivationPath);if(u.forEach((e=>{const[t,r]=e;c.updateInput(t,{partialSig:[{signature:r.signature,pubkey:r.pubkey}]})})),!c.validateSignaturesOfAllInputs())throw new Error("Failed to validate signatures");return c.finalizeAllInputs(),c.extractTransaction()}},exports.BitcoinProvider=class extends S{constructor(e=!0,r,s,n,a){super(),this.isMainnet=e,this.extraParams=a;const i=r?{headers:{"api-key":r}}:{},o=e?"https://btcbook.nownodes.io":"https://btcbook-testnet.nownodes.io";this.#r=new t.HttpClient(s||o,i);const d=e?"https://btc.nownodes.io":"https://btc-testnet.nownodes.io";this.#s=new t.HttpClient(n||d,i)}#r;#s;async#n(e,t){return this.isMainnet||t?(await Promise.all(e.map((e=>this.#s.post("",e,{},this.extraParams))))).flat():this.#s.post("",e,{},this.extraParams)}async getTxHex(e){return(await this.#r.post(`/api/v2/tx/${e}`,{},{},this.extraParams)).hex}async getUTXOs(e,t=!0,r){const s=await this.#r.post(`/api/v2/utxo/${e}`,{},{},this.extraParams);if(!s?.length)return{confirmed:[],unconfirmed:[]};const n=s.map(this._parseUtxo),a=e=>({confirmed:e.filter((e=>e.confirmations>0)),unconfirmed:e.filter((e=>0===e.confirmations))});if(!t)return a(n);return a(await this.getScriptsForUtxos(n,r))}async getAddressFromScript(e){const t=await this.#s.post("",{jsonrpc:"2.0",id:`decode-script-${e}`,method:"decodescript",params:[e]},{},this.extraParams);if(t.result)return t.result.address;throw new Error(`Unable to resolve address for script: ${e}. ${t.error.message}`)}async getScriptsForUtxos(e,t){const[r,s]=e.reduce((([e,t],r)=>r.script?[[...e,r],t]:[e,[...t,r]]),[[],[]]),n=s.map(((e,t)=>({jsonrpc:"2.0",method:"gettxout",params:[e.txHash,e.index],id:`${t}`}))),a=n.length?(await this.#n(n,t)).sort(((e,t)=>Number(e.id)-Number(t.id))):[];return[...r,...s.map(((e,t)=>({...e,script:a[t]?.result?.scriptPubKey.hex})))]}_parseUtxo(e){return{...e,txHash:e.txid,index:e.vout,value:Number(e.value),blockHeight:e.height,script:e.script,confirmations:e.confirmations}}async getBalances(e){const t=await this.#r.post(`/api/v2/address/${e}`,{},{},this.extraParams);return{available:BigInt(t.balance),pending:BigInt(t.unconfirmedBalance),final:BigInt(t.balance)+BigInt(t.unconfirmedBalance)}}async getChainHeight(){return(await this.#s.post("",{jsonrpc:"2.0",id:"nownodes",method:"getblockcount",params:[]},{},this.extraParams)).result}async getFeeRates(e){const t={jsonrpc:"2.0",method:"estimatesmartfee"},r=await this.#n([{...t,id:"1",params:[1]},{...t,id:"2",params:[3]},{...t,id:"3",params:[6]}],e).then((e=>e.sort(((e,t)=>Number(e.id)-Number(t.id))).map((e=>1e8*(e.result?.feerate??0)))));return{high:Math.ceil(r[0]/1024)||1,medium:Math.ceil(r[1]/1024)||1,low:Math.ceil(r[2]/1024)||1}}getNetwork(){return this.isMainnet?e.networks.bitcoin:e.networks.testnet}async issueRawTx(e){return await this.#s.post("",{jsonrpc:"2.0",id:"nownodes",method:"sendrawtransaction",params:[e]},{},this.extraParams).then((e=>e.result))}async getTransaction(e){const t=await this.#r.post(`/api/v2/tx/${e}`,{},{},this.extraParams);return{block:t.blockHeight,fees:Number(t.fees),confirmations:t.confirmations,amount:Number(t.value),hash:t.txid,addresses:Array.from(new Set([...t.vin.map((e=>e.addresses||[])).flat(),...t.vout.map((e=>e.addresses||[])).flat()])),blockTime:t.blockTime,inputs:[...t.vin.map((e=>({...e,value:Number(e.value)})))],outputs:[...t.vout.map((e=>({...e,value:Number(e.value)})))]}}async getTxHistory(e){const t=await this.#r.post(`/api/v2/address/${e}`,{},{},this.extraParams);return await Promise.allSettled(t.txids?.slice(0,25).map((async t=>{try{const r=await this.#r.post(`/api/v2/tx/${t}`,{},{},this.extraParams);return function(e,t){const r=t.vin.filter((t=>t.addresses?.includes(e))),s=t.vout.filter((t=>t.addresses?.includes(e))),n=t.vin.filter((t=>!t.addresses?.includes(e))),a=t.vout.filter((t=>!t.addresses?.includes(e))),i=r.reduce(((e,t)=>e+BigInt(t.value)),0n),o=s.reduce(((e,t)=>e+BigInt(t.value)),0n),d=i>o;let u=o-i;d&&(u+=BigInt(t.fees));const c=n.map((e=>e.addresses||[])).flat(),l=a.map((e=>e.addresses||[])).flat(),h=d?l:c,p=h.filter(((e,t)=>h.indexOf(e)===t)),g=s.filter((e=>(e.addresses?.length||0)>1)).length>0;return{addresses:p,isSender:d,block:t.blockHeight,fee:Number(t.fees),confirmations:t.confirmations,amount:Number(u),hash:t.txid,containsMultisig:g,receivedTime:t.blockTime,confirmedTime:t.confirmations>0?t.blockTime:void 0}}(e,r)}catch(e){console.log(`Unable to parse full tx ${t}.`)}}))).then((e=>e.map((e=>"fulfilled"===e.status&&e.value?e.value:void 0)).filter((e=>void 0!==e))))}async waitForTx(e,{maxAttempts:t=20,attempt:r=1,pollInterval:s=500}={}){try{return await this.getTransaction(e)}catch(n){if(r>=t)throw n;return await new Promise((e=>setTimeout(e,s))),this.waitForTx(e,{maxAttempts:t,attempt:r+1,pollInterval:s})}}},exports.BitcoinProviderAbstract=S,exports.BitcoinWallet=q,exports.BitcoinWalletAbstract=$,exports.BitcoinWalletVoid=class extends ${constructor(e,t){super(e,t)}signTx(e){throw new Error("Void wallets can not sign.")}},exports.DerivationPath=U,exports.ETH_ACCOUNT_PATH=M,exports.ETH_COIN_PATH=D,exports.JsonRpcBatchInternal=X,exports.LedgerSigner=F,exports.addEncodedSigToPsbt=function(e,t,r,s){const n=[{pubkey:t,signature:e}];r.updateInput(s,{partialSig:n})},exports.createPSBTV2=H,exports.createPsbt=P,exports.createTransferTx=k,exports.createWalletPolicy=function(e,t,r,s){const n=new p.DefaultWalletPolicy("wpkh(@0/**)",`[${e}/44'/60'/${t}']${r}`);return new p.WalletPolicy(s,"wpkh(@0/**)",n.keys)},exports.formatAddressForNetworkBech32=function(t,r){const s=e.address.fromBech32(t);return e.address.toBech32(s.data,s.version,r.bech32)},exports.getAddressDerivationPath=K,exports.getAddressFromXPub=function(e,t){const r=L(e,t);return n.computeAddress(`0x${r.toString("hex")}`)},exports.getAddressPrivateKeyFromXPriv=function(e,t){const r=u.fromBase58(e).derivePath(`0/${t}`);if(!r.privateKey)throw new Error("Unable to derive private key.");return r.privateKey},exports.getAddressPublicKeyFromXPub=L,exports.getAppEth=V,exports.getBech32Address=E,exports.getBech32AddressFromXPub=function(e,t,r){return E(L(e,t),r)},exports.getBtcAddressFromPubKey=function(e,r){const s=t.strip0x(n.SigningKey.computePublicKey(e,!0));return E(Buffer.from(s,"hex"),r)},exports.getEvmAddressFromPubKey=function(e){return n.computeAddress(`0x${e.toString("hex")}`)},exports.getLedgerAppInfo=async function(e){const t=await e.send(176,1,0,0),r=t.readUInt8(1),s=t.readUInt8(2+r),n=t.subarray(2,2+r),a=t.subarray(2+r+1,2+r+1+s);return{applicationName:n.toString("ascii"),version:a.toString("ascii")}},exports.getLedgerExtendedPublicKey=async function(e,t=!1,r){const s=V(e),n=await s.getAddress(r??M,t,!0),a=new i;return a.publicKey=o.Buffer.from(n.publicKey,"hex"),a.chainCode=o.Buffer.from(n.chainCode,"hex"),a.publicExtendedKey},exports.getMaxTransferAmount=function(e,t,r,s){const n=T(e);if(!n)return 0;const{fee:a}=B(t,r,n,s,e);return n-a},exports.getPubKeyFromTransport=async function(e,t,r,s="EVM"){const n=V(e),a=K(t,r,s),i=await n.getAddress(a,!1,!1);return Buffer.from(i.publicKey,"hex")},exports.getPublicKeyFromPrivateKey=function(e){const t=Buffer.isBuffer(e)?e:Buffer.from(e,"hex");try{return Buffer.from(a.secp256k1.getPublicKey(t))}finally{t.fill(0)}},exports.getSolanaProvider=({isTestnet:e,rpcUrl:t})=>{const r=b.createSolanaRpc(e?I.devnet(t):I.mainnet(t));return new Proxy(r,{get:(e,t,r)=>t===Vt||("then"===t||"catch"===t||"finally"===t?e:Reflect.get(e,t,r))})},exports.getTransferTxDetails=function(e,t,r,s,n){const a=B(e,t,r,s,C(n));return a.inputs||console.log("Unable to construct transaction, fee needed: ",a.fee),a},exports.getVoidSigner=function(e,t){return new n.VoidSigner(e,t)},exports.getWalletFromMnemonic=function(e,t,r){if(!(t>=0&&t%1==0))throw new Error("Account index must be an integer greater than or equal to 0.");return n.HDNodeWallet.fromMnemonic(n.Mnemonic.fromPhrase(e),K(t,r,"EVM"))},exports.getXpubFromMnemonic=async function(e){if(!c.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");const t=await c.mnemonicToSeed(e);return u.fromSeed(t).derivePath(M).neutered().toBase58()},exports.isERC20Transfer=N,exports.isNativeTxn=O,exports.isSolanaProvider=e=>!(!e||"object"!=typeof e)&&!0===e[Vt],exports.omitUndefinedKeys=function(e){return Object.keys(e).reduce(((t,r)=>(void 0!==e[r]&&(t[r]=e[r]),t)),{})},exports.onBalanceChange=async(e,t,r,s)=>{const n=new Set(e.map((e=>e.toLowerCase()))),a=new Set(t.map((e=>e.toLowerCase()))),i=async e=>{const t=await r.getBlock(e,!0);t?.prefetchedTransactions.forEach((function(e){e.to&&a.has(e.to.toLowerCase())&&N(e,n)?s(e,{type:"erc20",contractAddress:e.to}):O(e,n)&&s(e,{type:"native"})}))},o=await r.on("block",i);return{unsubscribe:()=>o.off("block",i)}},exports.openLedgerApp=async function(e,t){try{return(await e.send(224,216,0,0,Buffer.from(t,"ascii"))).equals(Buffer.from([144,0]))}catch(e){return!1}},exports.psbt2ToPsbt0=R,exports.quitLedgerApp=async function(e){return await e.send(176,167,0,0)},exports.selectUtxos=B;
@@ -0,0 +1,10 @@
1
+ import * as _solana_rpc from '@solana/rpc';
2
+
3
+ type SolanaProvider = ReturnType<typeof getSolanaProvider>;
4
+ declare const isSolanaProvider: (something: unknown) => something is _solana_rpc.RpcDevnet<(_solana_rpc.GetAccountInfoApi & _solana_rpc.GetBalanceApi & _solana_rpc.GetBlockApi & _solana_rpc.GetBlockCommitmentApi & _solana_rpc.GetBlockHeightApi & _solana_rpc.GetBlockProductionApi & _solana_rpc.GetBlocksApi & _solana_rpc.GetBlocksWithLimitApi & _solana_rpc.GetBlockTimeApi & _solana_rpc.GetClusterNodesApi & _solana_rpc.GetEpochInfoApi & _solana_rpc.GetEpochScheduleApi & _solana_rpc.GetFeeForMessageApi & _solana_rpc.GetFirstAvailableBlockApi & _solana_rpc.GetGenesisHashApi & _solana_rpc.GetHealthApi & _solana_rpc.GetHighestSnapshotSlotApi & _solana_rpc.GetIdentityApi & _solana_rpc.GetInflationGovernorApi & _solana_rpc.GetInflationRateApi & _solana_rpc.GetInflationRewardApi & _solana_rpc.GetLargestAccountsApi & _solana_rpc.GetLatestBlockhashApi & _solana_rpc.GetLeaderScheduleApi & _solana_rpc.GetMaxRetransmitSlotApi & _solana_rpc.GetMaxShredInsertSlotApi & _solana_rpc.GetMinimumBalanceForRentExemptionApi & _solana_rpc.GetMultipleAccountsApi & _solana_rpc.GetProgramAccountsApi & _solana_rpc.GetRecentPerformanceSamplesApi & _solana_rpc.GetRecentPrioritizationFeesApi & _solana_rpc.GetSignaturesForAddressApi & _solana_rpc.GetSignatureStatusesApi & _solana_rpc.GetSlotApi & _solana_rpc.GetSlotLeaderApi & _solana_rpc.GetSlotLeadersApi & _solana_rpc.GetStakeMinimumDelegationApi & _solana_rpc.GetSupplyApi & _solana_rpc.GetTokenAccountBalanceApi & _solana_rpc.GetTokenAccountsByDelegateApi & _solana_rpc.GetTokenAccountsByOwnerApi & _solana_rpc.GetTokenLargestAccountsApi & _solana_rpc.GetTokenSupplyApi & _solana_rpc.GetTransactionApi & _solana_rpc.GetTransactionCountApi & _solana_rpc.GetVersionApi & _solana_rpc.GetVoteAccountsApi & _solana_rpc.IsBlockhashValidApi & _solana_rpc.MinimumLedgerSlotApi & _solana_rpc.SendTransactionApi & _solana_rpc.SimulateTransactionApi) | (_solana_rpc.RequestAirdropApi & _solana_rpc.GetAccountInfoApi & _solana_rpc.GetBalanceApi & _solana_rpc.GetBlockApi & _solana_rpc.GetBlockCommitmentApi & _solana_rpc.GetBlockHeightApi & _solana_rpc.GetBlockProductionApi & _solana_rpc.GetBlocksApi & _solana_rpc.GetBlocksWithLimitApi & _solana_rpc.GetBlockTimeApi & _solana_rpc.GetClusterNodesApi & _solana_rpc.GetEpochInfoApi & _solana_rpc.GetEpochScheduleApi & _solana_rpc.GetFeeForMessageApi & _solana_rpc.GetFirstAvailableBlockApi & _solana_rpc.GetGenesisHashApi & _solana_rpc.GetHealthApi & _solana_rpc.GetHighestSnapshotSlotApi & _solana_rpc.GetIdentityApi & _solana_rpc.GetInflationGovernorApi & _solana_rpc.GetInflationRateApi & _solana_rpc.GetInflationRewardApi & _solana_rpc.GetLargestAccountsApi & _solana_rpc.GetLatestBlockhashApi & _solana_rpc.GetLeaderScheduleApi & _solana_rpc.GetMaxRetransmitSlotApi & _solana_rpc.GetMaxShredInsertSlotApi & _solana_rpc.GetMinimumBalanceForRentExemptionApi & _solana_rpc.GetMultipleAccountsApi & _solana_rpc.GetProgramAccountsApi & _solana_rpc.GetRecentPerformanceSamplesApi & _solana_rpc.GetRecentPrioritizationFeesApi & _solana_rpc.GetSignaturesForAddressApi & _solana_rpc.GetSignatureStatusesApi & _solana_rpc.GetSlotApi & _solana_rpc.GetSlotLeaderApi & _solana_rpc.GetSlotLeadersApi & _solana_rpc.GetStakeMinimumDelegationApi & _solana_rpc.GetSupplyApi & _solana_rpc.GetTokenAccountBalanceApi & _solana_rpc.GetTokenAccountsByDelegateApi & _solana_rpc.GetTokenAccountsByOwnerApi & _solana_rpc.GetTokenLargestAccountsApi & _solana_rpc.GetTokenSupplyApi & _solana_rpc.GetTransactionApi & _solana_rpc.GetTransactionCountApi & _solana_rpc.GetVersionApi & _solana_rpc.GetVoteAccountsApi & _solana_rpc.IsBlockhashValidApi & _solana_rpc.MinimumLedgerSlotApi & _solana_rpc.SendTransactionApi & _solana_rpc.SimulateTransactionApi)> | _solana_rpc.RpcMainnet<(_solana_rpc.GetAccountInfoApi & _solana_rpc.GetBalanceApi & _solana_rpc.GetBlockApi & _solana_rpc.GetBlockCommitmentApi & _solana_rpc.GetBlockHeightApi & _solana_rpc.GetBlockProductionApi & _solana_rpc.GetBlocksApi & _solana_rpc.GetBlocksWithLimitApi & _solana_rpc.GetBlockTimeApi & _solana_rpc.GetClusterNodesApi & _solana_rpc.GetEpochInfoApi & _solana_rpc.GetEpochScheduleApi & _solana_rpc.GetFeeForMessageApi & _solana_rpc.GetFirstAvailableBlockApi & _solana_rpc.GetGenesisHashApi & _solana_rpc.GetHealthApi & _solana_rpc.GetHighestSnapshotSlotApi & _solana_rpc.GetIdentityApi & _solana_rpc.GetInflationGovernorApi & _solana_rpc.GetInflationRateApi & _solana_rpc.GetInflationRewardApi & _solana_rpc.GetLargestAccountsApi & _solana_rpc.GetLatestBlockhashApi & _solana_rpc.GetLeaderScheduleApi & _solana_rpc.GetMaxRetransmitSlotApi & _solana_rpc.GetMaxShredInsertSlotApi & _solana_rpc.GetMinimumBalanceForRentExemptionApi & _solana_rpc.GetMultipleAccountsApi & _solana_rpc.GetProgramAccountsApi & _solana_rpc.GetRecentPerformanceSamplesApi & _solana_rpc.GetRecentPrioritizationFeesApi & _solana_rpc.GetSignaturesForAddressApi & _solana_rpc.GetSignatureStatusesApi & _solana_rpc.GetSlotApi & _solana_rpc.GetSlotLeaderApi & _solana_rpc.GetSlotLeadersApi & _solana_rpc.GetStakeMinimumDelegationApi & _solana_rpc.GetSupplyApi & _solana_rpc.GetTokenAccountBalanceApi & _solana_rpc.GetTokenAccountsByDelegateApi & _solana_rpc.GetTokenAccountsByOwnerApi & _solana_rpc.GetTokenLargestAccountsApi & _solana_rpc.GetTokenSupplyApi & _solana_rpc.GetTransactionApi & _solana_rpc.GetTransactionCountApi & _solana_rpc.GetVersionApi & _solana_rpc.GetVoteAccountsApi & _solana_rpc.IsBlockhashValidApi & _solana_rpc.MinimumLedgerSlotApi & _solana_rpc.SendTransactionApi & _solana_rpc.SimulateTransactionApi) | (_solana_rpc.RequestAirdropApi & _solana_rpc.GetAccountInfoApi & _solana_rpc.GetBalanceApi & _solana_rpc.GetBlockApi & _solana_rpc.GetBlockCommitmentApi & _solana_rpc.GetBlockHeightApi & _solana_rpc.GetBlockProductionApi & _solana_rpc.GetBlocksApi & _solana_rpc.GetBlocksWithLimitApi & _solana_rpc.GetBlockTimeApi & _solana_rpc.GetClusterNodesApi & _solana_rpc.GetEpochInfoApi & _solana_rpc.GetEpochScheduleApi & _solana_rpc.GetFeeForMessageApi & _solana_rpc.GetFirstAvailableBlockApi & _solana_rpc.GetGenesisHashApi & _solana_rpc.GetHealthApi & _solana_rpc.GetHighestSnapshotSlotApi & _solana_rpc.GetIdentityApi & _solana_rpc.GetInflationGovernorApi & _solana_rpc.GetInflationRateApi & _solana_rpc.GetInflationRewardApi & _solana_rpc.GetLargestAccountsApi & _solana_rpc.GetLatestBlockhashApi & _solana_rpc.GetLeaderScheduleApi & _solana_rpc.GetMaxRetransmitSlotApi & _solana_rpc.GetMaxShredInsertSlotApi & _solana_rpc.GetMinimumBalanceForRentExemptionApi & _solana_rpc.GetMultipleAccountsApi & _solana_rpc.GetProgramAccountsApi & _solana_rpc.GetRecentPerformanceSamplesApi & _solana_rpc.GetRecentPrioritizationFeesApi & _solana_rpc.GetSignaturesForAddressApi & _solana_rpc.GetSignatureStatusesApi & _solana_rpc.GetSlotApi & _solana_rpc.GetSlotLeaderApi & _solana_rpc.GetSlotLeadersApi & _solana_rpc.GetStakeMinimumDelegationApi & _solana_rpc.GetSupplyApi & _solana_rpc.GetTokenAccountBalanceApi & _solana_rpc.GetTokenAccountsByDelegateApi & _solana_rpc.GetTokenAccountsByOwnerApi & _solana_rpc.GetTokenLargestAccountsApi & _solana_rpc.GetTokenSupplyApi & _solana_rpc.GetTransactionApi & _solana_rpc.GetTransactionCountApi & _solana_rpc.GetVersionApi & _solana_rpc.GetVoteAccountsApi & _solana_rpc.IsBlockhashValidApi & _solana_rpc.MinimumLedgerSlotApi & _solana_rpc.SendTransactionApi & _solana_rpc.SimulateTransactionApi)>;
5
+ declare const getSolanaProvider: ({ isTestnet, rpcUrl, }: {
6
+ isTestnet: boolean;
7
+ rpcUrl: string;
8
+ }) => _solana_rpc.RpcDevnet<(_solana_rpc.GetAccountInfoApi & _solana_rpc.GetBalanceApi & _solana_rpc.GetBlockApi & _solana_rpc.GetBlockCommitmentApi & _solana_rpc.GetBlockHeightApi & _solana_rpc.GetBlockProductionApi & _solana_rpc.GetBlocksApi & _solana_rpc.GetBlocksWithLimitApi & _solana_rpc.GetBlockTimeApi & _solana_rpc.GetClusterNodesApi & _solana_rpc.GetEpochInfoApi & _solana_rpc.GetEpochScheduleApi & _solana_rpc.GetFeeForMessageApi & _solana_rpc.GetFirstAvailableBlockApi & _solana_rpc.GetGenesisHashApi & _solana_rpc.GetHealthApi & _solana_rpc.GetHighestSnapshotSlotApi & _solana_rpc.GetIdentityApi & _solana_rpc.GetInflationGovernorApi & _solana_rpc.GetInflationRateApi & _solana_rpc.GetInflationRewardApi & _solana_rpc.GetLargestAccountsApi & _solana_rpc.GetLatestBlockhashApi & _solana_rpc.GetLeaderScheduleApi & _solana_rpc.GetMaxRetransmitSlotApi & _solana_rpc.GetMaxShredInsertSlotApi & _solana_rpc.GetMinimumBalanceForRentExemptionApi & _solana_rpc.GetMultipleAccountsApi & _solana_rpc.GetProgramAccountsApi & _solana_rpc.GetRecentPerformanceSamplesApi & _solana_rpc.GetRecentPrioritizationFeesApi & _solana_rpc.GetSignaturesForAddressApi & _solana_rpc.GetSignatureStatusesApi & _solana_rpc.GetSlotApi & _solana_rpc.GetSlotLeaderApi & _solana_rpc.GetSlotLeadersApi & _solana_rpc.GetStakeMinimumDelegationApi & _solana_rpc.GetSupplyApi & _solana_rpc.GetTokenAccountBalanceApi & _solana_rpc.GetTokenAccountsByDelegateApi & _solana_rpc.GetTokenAccountsByOwnerApi & _solana_rpc.GetTokenLargestAccountsApi & _solana_rpc.GetTokenSupplyApi & _solana_rpc.GetTransactionApi & _solana_rpc.GetTransactionCountApi & _solana_rpc.GetVersionApi & _solana_rpc.GetVoteAccountsApi & _solana_rpc.IsBlockhashValidApi & _solana_rpc.MinimumLedgerSlotApi & _solana_rpc.SendTransactionApi & _solana_rpc.SimulateTransactionApi) | (_solana_rpc.RequestAirdropApi & _solana_rpc.GetAccountInfoApi & _solana_rpc.GetBalanceApi & _solana_rpc.GetBlockApi & _solana_rpc.GetBlockCommitmentApi & _solana_rpc.GetBlockHeightApi & _solana_rpc.GetBlockProductionApi & _solana_rpc.GetBlocksApi & _solana_rpc.GetBlocksWithLimitApi & _solana_rpc.GetBlockTimeApi & _solana_rpc.GetClusterNodesApi & _solana_rpc.GetEpochInfoApi & _solana_rpc.GetEpochScheduleApi & _solana_rpc.GetFeeForMessageApi & _solana_rpc.GetFirstAvailableBlockApi & _solana_rpc.GetGenesisHashApi & _solana_rpc.GetHealthApi & _solana_rpc.GetHighestSnapshotSlotApi & _solana_rpc.GetIdentityApi & _solana_rpc.GetInflationGovernorApi & _solana_rpc.GetInflationRateApi & _solana_rpc.GetInflationRewardApi & _solana_rpc.GetLargestAccountsApi & _solana_rpc.GetLatestBlockhashApi & _solana_rpc.GetLeaderScheduleApi & _solana_rpc.GetMaxRetransmitSlotApi & _solana_rpc.GetMaxShredInsertSlotApi & _solana_rpc.GetMinimumBalanceForRentExemptionApi & _solana_rpc.GetMultipleAccountsApi & _solana_rpc.GetProgramAccountsApi & _solana_rpc.GetRecentPerformanceSamplesApi & _solana_rpc.GetRecentPrioritizationFeesApi & _solana_rpc.GetSignaturesForAddressApi & _solana_rpc.GetSignatureStatusesApi & _solana_rpc.GetSlotApi & _solana_rpc.GetSlotLeaderApi & _solana_rpc.GetSlotLeadersApi & _solana_rpc.GetStakeMinimumDelegationApi & _solana_rpc.GetSupplyApi & _solana_rpc.GetTokenAccountBalanceApi & _solana_rpc.GetTokenAccountsByDelegateApi & _solana_rpc.GetTokenAccountsByOwnerApi & _solana_rpc.GetTokenLargestAccountsApi & _solana_rpc.GetTokenSupplyApi & _solana_rpc.GetTransactionApi & _solana_rpc.GetTransactionCountApi & _solana_rpc.GetVersionApi & _solana_rpc.GetVoteAccountsApi & _solana_rpc.IsBlockhashValidApi & _solana_rpc.MinimumLedgerSlotApi & _solana_rpc.SendTransactionApi & _solana_rpc.SimulateTransactionApi)> | _solana_rpc.RpcMainnet<(_solana_rpc.GetAccountInfoApi & _solana_rpc.GetBalanceApi & _solana_rpc.GetBlockApi & _solana_rpc.GetBlockCommitmentApi & _solana_rpc.GetBlockHeightApi & _solana_rpc.GetBlockProductionApi & _solana_rpc.GetBlocksApi & _solana_rpc.GetBlocksWithLimitApi & _solana_rpc.GetBlockTimeApi & _solana_rpc.GetClusterNodesApi & _solana_rpc.GetEpochInfoApi & _solana_rpc.GetEpochScheduleApi & _solana_rpc.GetFeeForMessageApi & _solana_rpc.GetFirstAvailableBlockApi & _solana_rpc.GetGenesisHashApi & _solana_rpc.GetHealthApi & _solana_rpc.GetHighestSnapshotSlotApi & _solana_rpc.GetIdentityApi & _solana_rpc.GetInflationGovernorApi & _solana_rpc.GetInflationRateApi & _solana_rpc.GetInflationRewardApi & _solana_rpc.GetLargestAccountsApi & _solana_rpc.GetLatestBlockhashApi & _solana_rpc.GetLeaderScheduleApi & _solana_rpc.GetMaxRetransmitSlotApi & _solana_rpc.GetMaxShredInsertSlotApi & _solana_rpc.GetMinimumBalanceForRentExemptionApi & _solana_rpc.GetMultipleAccountsApi & _solana_rpc.GetProgramAccountsApi & _solana_rpc.GetRecentPerformanceSamplesApi & _solana_rpc.GetRecentPrioritizationFeesApi & _solana_rpc.GetSignaturesForAddressApi & _solana_rpc.GetSignatureStatusesApi & _solana_rpc.GetSlotApi & _solana_rpc.GetSlotLeaderApi & _solana_rpc.GetSlotLeadersApi & _solana_rpc.GetStakeMinimumDelegationApi & _solana_rpc.GetSupplyApi & _solana_rpc.GetTokenAccountBalanceApi & _solana_rpc.GetTokenAccountsByDelegateApi & _solana_rpc.GetTokenAccountsByOwnerApi & _solana_rpc.GetTokenLargestAccountsApi & _solana_rpc.GetTokenSupplyApi & _solana_rpc.GetTransactionApi & _solana_rpc.GetTransactionCountApi & _solana_rpc.GetVersionApi & _solana_rpc.GetVoteAccountsApi & _solana_rpc.IsBlockhashValidApi & _solana_rpc.MinimumLedgerSlotApi & _solana_rpc.SendTransactionApi & _solana_rpc.SimulateTransactionApi) | (_solana_rpc.RequestAirdropApi & _solana_rpc.GetAccountInfoApi & _solana_rpc.GetBalanceApi & _solana_rpc.GetBlockApi & _solana_rpc.GetBlockCommitmentApi & _solana_rpc.GetBlockHeightApi & _solana_rpc.GetBlockProductionApi & _solana_rpc.GetBlocksApi & _solana_rpc.GetBlocksWithLimitApi & _solana_rpc.GetBlockTimeApi & _solana_rpc.GetClusterNodesApi & _solana_rpc.GetEpochInfoApi & _solana_rpc.GetEpochScheduleApi & _solana_rpc.GetFeeForMessageApi & _solana_rpc.GetFirstAvailableBlockApi & _solana_rpc.GetGenesisHashApi & _solana_rpc.GetHealthApi & _solana_rpc.GetHighestSnapshotSlotApi & _solana_rpc.GetIdentityApi & _solana_rpc.GetInflationGovernorApi & _solana_rpc.GetInflationRateApi & _solana_rpc.GetInflationRewardApi & _solana_rpc.GetLargestAccountsApi & _solana_rpc.GetLatestBlockhashApi & _solana_rpc.GetLeaderScheduleApi & _solana_rpc.GetMaxRetransmitSlotApi & _solana_rpc.GetMaxShredInsertSlotApi & _solana_rpc.GetMinimumBalanceForRentExemptionApi & _solana_rpc.GetMultipleAccountsApi & _solana_rpc.GetProgramAccountsApi & _solana_rpc.GetRecentPerformanceSamplesApi & _solana_rpc.GetRecentPrioritizationFeesApi & _solana_rpc.GetSignaturesForAddressApi & _solana_rpc.GetSignatureStatusesApi & _solana_rpc.GetSlotApi & _solana_rpc.GetSlotLeaderApi & _solana_rpc.GetSlotLeadersApi & _solana_rpc.GetStakeMinimumDelegationApi & _solana_rpc.GetSupplyApi & _solana_rpc.GetTokenAccountBalanceApi & _solana_rpc.GetTokenAccountsByDelegateApi & _solana_rpc.GetTokenAccountsByOwnerApi & _solana_rpc.GetTokenLargestAccountsApi & _solana_rpc.GetTokenSupplyApi & _solana_rpc.GetTransactionApi & _solana_rpc.GetTransactionCountApi & _solana_rpc.GetVersionApi & _solana_rpc.GetVoteAccountsApi & _solana_rpc.IsBlockhashValidApi & _solana_rpc.MinimumLedgerSlotApi & _solana_rpc.SendTransactionApi & _solana_rpc.SimulateTransactionApi)>;
9
+
10
+ export { SolanaProvider, getSolanaProvider, isSolanaProvider };
@@ -0,0 +1 @@
1
+ import{createSolanaRpc as t}from"@solana/rpc";import{devnet as e,mainnet as o}from"@solana/rpc-types";const r=Symbol(),c=t=>!(!t||"object"!=typeof t)&&!0===t[r],n=({isTestnet:c,rpcUrl:n})=>{const p=t(c?e(n):o(n));return new Proxy(p,{get:(t,e,o)=>e===r||("then"===e||"catch"===e||"finally"===e?t:Reflect.get(t,e,o))})};export{n as getSolanaProvider,c as isSolanaProvider};
package/esm/index.d.ts CHANGED
@@ -41,3 +41,4 @@ export { omitUndefinedKeys } from './utils/omitUndefinedKeys.js';
41
41
  export { getLedgerAppInfo } from './utils/getLedgerAppInfo.js';
42
42
  export { openLedgerApp } from './utils/openLedgerApp.js';
43
43
  export { quitLedgerApp } from './utils/quitLedgerApp.js';
44
+ export { SolanaProvider, getSolanaProvider, isSolanaProvider } from './SolanaVM/utils/solanaProvider.js';
package/esm/index.js CHANGED
@@ -1 +1 @@
1
- export{BitcoinProviderAbstract}from"./BitcoinVM/providers/BitcoinProviderAbstract.js";export{BitcoinProvider}from"./BitcoinVM/providers/BitcoinProvider.js";export{addEncodedSigToPsbt}from"./BitcoinVM/utils/addEncodedSigToPsbt.js";export{createPsbt}from"./BitcoinVM/utils/createPsbt.js";export{createTransferTx}from"./BitcoinVM/utils/createTransferTx.js";export{formatAddressForNetworkBech32}from"./BitcoinVM/utils/formatAddressForNetworkBech32.js";export{getBech32Address}from"./BitcoinVM/utils/getBech32Address.js";export{getBech32AddressFromXPub}from"./BitcoinVM/utils/getBech32AddressFromXPub.js";export{getMaxTransferAmount}from"./BitcoinVM/utils/getMaxTransferAmount.js";export{selectUtxos}from"./BitcoinVM/utils/selectUtxos.js";export{createWalletPolicy}from"./BitcoinVM/utils/createWalletPolicy.js";export{createPSBTV2}from"./BitcoinVM/utils/createPSBTV2.js";export{psbt2ToPsbt0}from"./BitcoinVM/utils/psbt2ToPsbt0.js";export{getTransferTxDetails}from"./BitcoinVM/utils/getTransferTxDetails.js";export{BitcoinWalletAbstract}from"./BitcoinVM/wallets/BitcoinWalletAbstract.js";export{BitcoinWallet}from"./BitcoinVM/wallets/BitcoinWallet.js";export{BitcoinLedgerWallet}from"./BitcoinVM/wallets/BitcoinWalletLedger.js";export{BitcoinWalletVoid}from"./BitcoinVM/wallets/BitcoinWalletVoid.js";export{networks as BtcNetworks}from"bitcoinjs-lib";export{getAppEth}from"./EVM/utils/getAppEth.js";export{getVoidSigner}from"./EVM/utils/getVoidSigner.js";export{getWalletFromMnemonic}from"./EVM/utils/getWalletFromMnemonic.js";export{isERC20Transfer,isNativeTxn,onBalanceChange}from"./EVM/utils/blockPolling.js";export{JsonRpcBatchInternal}from"./EVM/utils/jsonRpcBatchProvider.js";export{getAddressPrivateKeyFromXPriv}from"./EVM/utils/getAddressPrivateKeyFromXPriv.js";export{getAddressPublicKeyFromXPub}from"./EVM/utils/getAddressPublicKeyFromXPub.js";export{getAddressFromXPub}from"./EVM/utils/getAddressFromXPub.js";export{getXpubFromMnemonic}from"./EVM/utils/getXpubFromMnemonic.js";export{getEvmAddressFromPubKey}from"./EVM/utils/getEvmAddressFromPubKey.js";export{getBtcAddressFromPubKey}from"./EVM/utils/getBtcAddressFromPubKey.js";export{DerivationPath,ETH_ACCOUNT_PATH,ETH_COIN_PATH}from"./EVM/constants.js";export{LedgerSigner}from"./EVM/LedgerSigner.js";import*as e from"./Avalanche/index.js";export{e as Avalanche};export{getAddressDerivationPath}from"./utils/getAddressDerivationPath.js";export{getPublicKeyFromPrivateKey}from"./utils/getPublicKeyFromPrivateKey.js";export{getPubKeyFromTransport}from"./utils/getPubKeyFromTransport.js";export{getLedgerExtendedPublicKey}from"./utils/getLedgerExtendedPublicKey.js";export{omitUndefinedKeys}from"./utils/omitUndefinedKeys.js";export{getLedgerAppInfo}from"./utils/getLedgerAppInfo.js";export{openLedgerApp}from"./utils/openLedgerApp.js";export{quitLedgerApp}from"./utils/quitLedgerApp.js";
1
+ export{BitcoinProviderAbstract}from"./BitcoinVM/providers/BitcoinProviderAbstract.js";export{BitcoinProvider}from"./BitcoinVM/providers/BitcoinProvider.js";export{addEncodedSigToPsbt}from"./BitcoinVM/utils/addEncodedSigToPsbt.js";export{createPsbt}from"./BitcoinVM/utils/createPsbt.js";export{createTransferTx}from"./BitcoinVM/utils/createTransferTx.js";export{formatAddressForNetworkBech32}from"./BitcoinVM/utils/formatAddressForNetworkBech32.js";export{getBech32Address}from"./BitcoinVM/utils/getBech32Address.js";export{getBech32AddressFromXPub}from"./BitcoinVM/utils/getBech32AddressFromXPub.js";export{getMaxTransferAmount}from"./BitcoinVM/utils/getMaxTransferAmount.js";export{selectUtxos}from"./BitcoinVM/utils/selectUtxos.js";export{createWalletPolicy}from"./BitcoinVM/utils/createWalletPolicy.js";export{createPSBTV2}from"./BitcoinVM/utils/createPSBTV2.js";export{psbt2ToPsbt0}from"./BitcoinVM/utils/psbt2ToPsbt0.js";export{getTransferTxDetails}from"./BitcoinVM/utils/getTransferTxDetails.js";export{BitcoinWalletAbstract}from"./BitcoinVM/wallets/BitcoinWalletAbstract.js";export{BitcoinWallet}from"./BitcoinVM/wallets/BitcoinWallet.js";export{BitcoinLedgerWallet}from"./BitcoinVM/wallets/BitcoinWalletLedger.js";export{BitcoinWalletVoid}from"./BitcoinVM/wallets/BitcoinWalletVoid.js";export{networks as BtcNetworks}from"bitcoinjs-lib";export{getAppEth}from"./EVM/utils/getAppEth.js";export{getVoidSigner}from"./EVM/utils/getVoidSigner.js";export{getWalletFromMnemonic}from"./EVM/utils/getWalletFromMnemonic.js";export{isERC20Transfer,isNativeTxn,onBalanceChange}from"./EVM/utils/blockPolling.js";export{JsonRpcBatchInternal}from"./EVM/utils/jsonRpcBatchProvider.js";export{getAddressPrivateKeyFromXPriv}from"./EVM/utils/getAddressPrivateKeyFromXPriv.js";export{getAddressPublicKeyFromXPub}from"./EVM/utils/getAddressPublicKeyFromXPub.js";export{getAddressFromXPub}from"./EVM/utils/getAddressFromXPub.js";export{getXpubFromMnemonic}from"./EVM/utils/getXpubFromMnemonic.js";export{getEvmAddressFromPubKey}from"./EVM/utils/getEvmAddressFromPubKey.js";export{getBtcAddressFromPubKey}from"./EVM/utils/getBtcAddressFromPubKey.js";export{DerivationPath,ETH_ACCOUNT_PATH,ETH_COIN_PATH}from"./EVM/constants.js";export{LedgerSigner}from"./EVM/LedgerSigner.js";import*as e from"./Avalanche/index.js";export{e as Avalanche};export{getAddressDerivationPath}from"./utils/getAddressDerivationPath.js";export{getPublicKeyFromPrivateKey}from"./utils/getPublicKeyFromPrivateKey.js";export{getPubKeyFromTransport}from"./utils/getPubKeyFromTransport.js";export{getLedgerExtendedPublicKey}from"./utils/getLedgerExtendedPublicKey.js";export{omitUndefinedKeys}from"./utils/omitUndefinedKeys.js";export{getLedgerAppInfo}from"./utils/getLedgerAppInfo.js";export{openLedgerApp}from"./utils/openLedgerApp.js";export{quitLedgerApp}from"./utils/quitLedgerApp.js";export{getSolanaProvider,isSolanaProvider}from"./SolanaVM/utils/solanaProvider.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@avalabs/core-wallets-sdk",
3
- "version": "3.1.0-alpha.40",
3
+ "version": "3.1.0-alpha.41",
4
4
  "license": "Limited Ecosystem License",
5
5
  "private": false,
6
6
  "main": "dist/index.js",
@@ -21,6 +21,7 @@
21
21
  },
22
22
  "devDependencies": {
23
23
  "@babel/preset-env": "7.22.20",
24
+ "@solana/rpc-types": "2.0.0",
24
25
  "@types/create-hash": "1.2.2",
25
26
  "@types/hdkey": "2.0.1",
26
27
  "@types/jest": "29.5.12",
@@ -31,14 +32,15 @@
31
32
  },
32
33
  "dependencies": {
33
34
  "@avalabs/avalanchejs": "4.2.0-alpha.1",
34
- "@avalabs/core-chains-sdk": "3.1.0-alpha.40",
35
- "@avalabs/glacier-sdk": "3.1.0-alpha.40",
35
+ "@avalabs/core-chains-sdk": "3.1.0-alpha.41",
36
+ "@avalabs/glacier-sdk": "3.1.0-alpha.41",
36
37
  "@avalabs/hw-app-avalanche": "0.14.1",
37
38
  "@ledgerhq/hw-app-btc": "10.2.4",
38
39
  "@ledgerhq/hw-app-eth": "6.36.1",
39
40
  "@ledgerhq/hw-transport": "6.30.6",
40
41
  "@metamask/eth-sig-util": "7.0.2",
41
42
  "@openzeppelin/contracts": "4.9.6",
43
+ "@solana/rpc": "2.0.0",
42
44
  "bip32": "2.0.6",
43
45
  "bip32-path": "0.4.2",
44
46
  "bip39": "3.1.0",
@@ -52,5 +54,5 @@
52
54
  "peerDependencies": {
53
55
  "ethers": "^6.7.1"
54
56
  },
55
- "gitHead": "06449c5fa0c042dbbe5983c28f4d343d8637f0d0"
57
+ "gitHead": "4842a9c0a1764b2e3595bde1d12a8bfc04d71fd0"
56
58
  }