@avalabs/core-wallets-sdk 3.1.0-alpha.86 → 3.1.0-alpha.87

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -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("bip32"),i=require("bip39"),o=require("@ledgerhq/hw-transport"),d=require("@metamask/eth-sig-util"),u=require("ledger-bitcoin"),c=require("@ledgerhq/hw-app-btc/lib/bip32"),l=require("@avalabs/avalanchejs"),p=require("@noble/hashes/sha256"),h=require("@avalabs/glacier-sdk"),g=require("@avalabs/core-chains-sdk"),m=require("create-hash"),f=require("xss"),x=require("bip32-path"),v=require("@avalabs/hw-app-avalanche"),y=require("hdkey"),w=require("@solana/kit"),b=require("@solana-program/system"),A=require("@solana-program/token"),T=require("@solana-program/token-2022"),S=require("@ledgerhq/hw-app-solana"),I=require("@noble/curves/ed25519"),P=require("@scure/base"),B=require("micro-key-producer/slip10.js"),C=require("buffer");function k(e){return e.reduce(((e,t)=>e+t.value),0)}class E{async getUtxoBalance(e,t=!0){const r=await this.getUTXOs(e,t);return{balance:k(r.confirmed),balanceUnconfirmed:k(r.unconfirmed),utxos:r.confirmed,utxosUnconfirmed:r.unconfirmed}}}function M(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 D(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 V(e){const t=[];return e.filter((e=>{const r=e.txHash+e.index.toString();return!t.includes(r)&&(t.push(r),!0)}))}function O(e,t,r,s,n,a){const i=D(e,t,r,s,V(n));return i.inputs?{...i,psbt:M(i.inputs,i.outputs,a)}:(console.log("Unable to construct transaction, fee needed: ",i.fee),i)}function K(t,r){return e.payments.p2wpkh({pubkey:t,network:r}).address}function U(e){return new s(e,"w0w")}const _="m/44'/60'",N=`${_}/0'`;var L=(e=>(e.BIP44="bip44",e.LedgerLive="ledger_live",e))(L||{});const X=(e,t,r=!0)=>{switch(t){case L.BIP44:return`${r?"m/":""}44'/60'/0'/0/${e}`;case L.LedgerLive:return`${r?"m/":""}44'/60'/${e}'/0/0`;default:throw new Error("Invalid path spec")}};var F=[{inputs:[{internalType:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}];const R=(e,t)=>t.has(e.from.toLowerCase())||t.has((e.to??"").toLowerCase()),H=(e,t)=>{const r=new n.Interface(F).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 q 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 W(e,t){return a.fromBase58(e).derivePath(`0/${t}`).publicKey}let j=class e extends n.AbstractSigner{type="default";path;provider=null;accountIndex;derivationSpec;transport;_eth;constructor(e=0,t,r,s){super(),this.path=X(e,r),this.accountIndex=e,this.transport=t,this.derivationSpec=r,this._eth=U(t),n.defineProperties(this,{path:this.path,type:"default",provider:s??null})}setTransport(e){this._eth=U(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 o.TransportStatusError&&s.statusCode===o.StatusCodes.INS_NOT_SUPPORTED){const s=d.TypedDataUtils.hashStruct(i,r,t,d.SignTypedDataVersion.V4),a=d.TypedDataUtils.hashStruct("EIP712Domain",e,t,d.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 G(t,r,s,n,a,i){const o=new u.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,c.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 J(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 z{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 K(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 O(e,this.getAddressBech32(),t,r,s,this.provider.getNetwork())}}var Y=(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))(Y||{});const Q=e=>{switch(e){case"C":return l.EVM;case"X":return l.AVM;case"P":return l.PVM;default:throw new Error(`Unable to get VM type for chain "${e}"`)}};const{getTransferableInputsByTx:Z,AddressMaps:ee}=l.utils,te=async({tx:e,fromAddressBytes:t,provider:r,credentials:s,utxos:n})=>{const a=Z(e);let i=ee.fromTransferableInputs(a,n,BigInt(Math.floor((new Date).getTime()/1e3)),t);if((e=>l.pvmSerial.isCreateChainTx(e)||l.pvmSerial.isAddSubnetValidatorTx(e)||l.pvmSerial.isRemoveSubnetValidatorTx(e)||l.pvmSerial.isTransformSubnetTx(e)||l.pvmSerial.isTransferSubnetOwnershipTx(e)||l.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()}),a=l.OutputOwners.fromNative(n.controlKeys.map((e=>l.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 l.utils.AddressMap(a)),r})({tx:e,provider:r,addressMaps:i});return new l.UnsignedTx(e,n,t,s)}catch(e){throw new Error(`Error while preparing subnet authorization data: ${e.message}`)}else l.pvmSerial.isDisableL1ValidatorTx(e)&&(i=await async function(e,t,r){try{const{deactivationOwner:s}=await r.getApiP().getL1Validator(t.validationId.toString()),n=t.getDisableAuth().values(),a=s.addresses.reduce(((e,t,r)=>(n.includes(r)&&e.push([t,r]),e)),[]);return e.push(new l.utils.AddressMap(a)),e}catch(e){throw new Error(`Error while preparing disableAuth data: ${e.message}`)}}(i,e,r));return new l.UnsignedTx(e,n,i,s)},{bufferToHex:re,packTx:se}=l.utils,{publicKeyBytesToAddress:ne,recoverPublicKey:ae}=l.secp256k1,ie=new l.Signature(new Uint8Array(Array(65).fill(0))),oe=(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(ie);if(!t)return s;const{unsignedTx:n,credentialIndex:a}=t,i=n.getCredentials()[a];if(!i)return s;const o=se(n.getTx()),d=p.sha256(o),u=ie.toString();for(const e of i.toJSON()){if(e.toString()===u)continue;const t=ae(d,e.toBytes()),r={toHex:()=>re(ne(t))},i=n.addressMaps.getSigIndicesForAddress(r,!1)??[];for(const t of i)t[0]===a&&(s[t[1]]=e)}return s};function de(e){return l.utils.bufferToHex(l.utils.addChecksum(e.toBytes()))}const{getManagerForVM:ue,hexToBuffer:ce,unpackWithManager:le}=l.utils,pe=async({transactionHex:e,chainAlias:t,provider:r,utxos:s})=>{const n=Q(t);if(n===l.EVM)throw new Error("EVM transactions are not supported");const a=ce(e),i=le(n,a),o=await(async({tx:e,txBytes:t,provider:r,vm:s,utxos:n})=>{try{const a=ue(s).unpack(t,l.avaxSerial.SignedTx),i=await te({tx:e,utxos:n,provider:r,credentials:a.getCredentials()});return e.getSigIndices().map(((e,t)=>new l.Credential(oe(e,{unsignedTx:i,credentialIndex:t}))))}catch(t){return e.getSigIndices().map((e=>new l.Credential(oe(e))))}})({tx:i,txBytes:a,provider:r,vm:n,utxos:s});return te({tx:i,provider:r,credentials:o,utxos:s})},{parseBech32:he,format:ge}=l.utils,{publicKeyBytesToAddress:me}=l.secp256k1;class fe{constructor(e,t,r){this.baseUrl=e,this.context=t,this.fetchOptions=r}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 l.networkIDs.getHRP(this.getNetworkID())}getApiX(){const e=new l.avm.AVMApi(this.baseUrl);return this.fetchOptions&&e.setFetchOptions(this.fetchOptions),e}getApiP(){const e=new l.pvm.PVMApi(this.baseUrl);return this.fetchOptions&&e.setFetchOptions(this.fetchOptions),e}getApiC(){const e=new l.evm.EVMApi(this.baseUrl);return this.fetchOptions&&e.setFetchOptions(this.fetchOptions),e}getInfo(){const e=new l.info.InfoApi(this.baseUrl);return this.fetchOptions&&e.setFetchOptions(this.fetchOptions),e}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=me(a);return ge(r,this.getHrp(),i)}getAddressFromBuffer(e,t){return ge(t,this.getHrp(),e)}formatAddress(e,t){const[,r]=he(e);return ge(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=de(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,a)=>{const i=async()=>{let o;switch(r&&n+r<Date.now()&&a(new Error("Timeout")),o=s instanceof l.evm.EVMApi?await s.getAtomicTxStatus(e):await s.getTxStatus({txID:e,includeReason:!0}),o.status){case"Accepted":case"Committed":return void t({success:!0});case"Dropped":case"Rejected":return void t({success:!1});default:setTimeout((()=>{i()}),1e3)}};i()}))}}const xe={weights:l.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)},ve={xBlockchainID:"2oYMBNV4eNHyqk2fjjV5nVQLDbtmNJzq5s3qs3Lo6ftnC6FByM",pBlockchainID:"11111111111111111111111111111111LpoYY",cBlockchainID:"2q9e4r6Mu3U68nU1fYjgbR6JvwrRx36CohpAX5UQxse55x1Q5",avaxAssetID:"FvwEAhmxKfeiG8SnEvq42hc6whRyY3EFYAvebMqDNDGCgxN5Z",baseTxFee:BigInt(1e6),createAssetTxFee:BigInt(1e7),networkID:1,hrp:"avax",platformFeeConfig:xe},ye={xBlockchainID:"2JVSBoinj9C2J33VntvzYtVJNZdN2NKiwwKjcumHUWEb5DbBrm",pBlockchainID:"11111111111111111111111111111111LpoYY",cBlockchainID:"yH8D7ThNJkxmtkuv2jgBa4P1Rn3Qpr4pPr7QYNfcdoS6k6HWp",avaxAssetID:"U8iRqJoiJm8xZHAacmvYyZVwqQx6uDNtQeP3CQ6fcgQk3JqnK",baseTxFee:BigInt(1e6),createAssetTxFee:BigInt(1e7),networkID:5,hrp:"fuji",platformFeeConfig:xe},we={xBlockchainID:"2piQ2AVHCjnduiWXsSY15DtbVuwHE2cwMHYnEXHsLL73BBkdbV",pBlockchainID:"11111111111111111111111111111111LpoYY",cBlockchainID:"vV3cui1DsEPC3nLCGH9rorwo8s6BYxM2Hz4QFE5gEYjwTqAu",avaxAssetID:"22jjRVdyTJiAEtcZciAVR8bTFyVDUVoo1T3o5PiDspQSZ2maXR",baseTxFee:1000000n,createAssetTxFee:1000000n,networkID:76,hrp:"custom",platformFeeConfig:xe};class be extends fe{constructor(e,t,r){super(e,t,r)}static async fromBaseURL(e){const t=await l.Context.getContextFromURI(e);try{return new be(e,t)}catch{return new be(e,t)}}static getDefaultMainnetProvider(e){return new be(g.AVALANCHE_XP_NETWORK.rpcUrl,ve,e)}static getDefaultFujiProvider(e){return new be(g.AVALANCHE_XP_TEST_NETWORK.rpcUrl,ye,e)}static getDefaultDevnetProvider(e){return new be(g.AVALANCHE_P_DEV_NETWORK.rpcUrl,we,e)}}const{bytesCompare:Ae,parseBech32:Te}=l.utils,Se=(e,t)=>"P"===t,Ie=(e,t,r)=>{const s=Se(0,t)?e.amount:e.asset?.amount;return new l.TransferOutput(new l.BigIntPr(BigInt(s)),l.OutputOwners.fromNative(e.addresses.map((e=>Te(e)[1])).sort(Ae),BigInt(r??0),e.threshold))},Pe=(e,t)=>{const r=((e,t)=>{const r=t===h.Network.FUJI,{cBlockchainID:s,xBlockchainID:n,pBlockchainID:a}=r?ye:ve;if(s===e)return"C";if(n===e)return"X";if(a===e)return"P";throw new Error(`Unknown chainId "${e}"`)})(e.createdOnChainId,t),s=Se(0,r)?e.txHash:e.creationTxHash,n=Se(0,r)?e.assetId:e.asset?.assetId;return new l.Utxo(l.avaxSerial.UTXOID.fromNative(s,Number(e.outputIndex)),l.Id.fromString(n),((e,t)=>Se(0,t)?e.stakeableLocktime?new l.pvmSerial.StakeableLockOut(new l.BigIntPr(BigInt(e.stakeableLocktime??0)),Ie(e,t,e.platformLocktime??0)):Ie(e,t,e.platformLocktime):Ie(e,t,e.locktime))(e,r))},{unpackWithManager:Be,parse:Ce,bufferToHex:ke,AddressMaps:Ee,AddressMap:Me}=l.utils;function De(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 m("sha256").update(s).digest()}const Ve=1024,Oe=1024;async function Ke(e,t,r){const s=e.slice(0,Ve),n=e.slice(Ve),a=await Ue(t,{...r,addresses:s});if(n.length){const s=await Ke(n,t,{...r,addresses:e});return a.merge(s)}return a}async function Ue(e,t){if(t.addresses.length>Ve)throw new Error(`Can not get UTXOs for more than ${Ve} addresses.`);const{endIndex:r,utxos:s}=await e.getUTXOs(t),n=new l.utils.UtxoSet(s);if(s.length>=Oe){const s=await Ue(e,{...t,startIndex:r});return n.merge(s)}return n}function _e(){return BigInt(Math.floor(Date.now()/1e3))}const{getUtxoInfo:Ne}=l.utils;async function Le(e,t){const r=e.slice(0,256),s=e.slice(256),n=await t.getStake({addresses:r});if(s.length){const e=await Le(s,t);return{staked:n.staked+e.staked,stakedOutputs:[...n.stakedOutputs,...e.stakedOutputs]}}return n}const{getTransferableInputsByTx:Xe,hexToBuffer:Fe,unpackWithManager:Re}=l.utils;function He(e,t=!0){try{if(t){const[t]=l.utils.parse(e);if(!["X","P","C"].includes(t))return!1}else l.utils.parseBech32(e);return!0}catch(e){return!1}}const $e=e=>{if([ve.xBlockchainID,ye.xBlockchainID,we.xBlockchainID].includes(e))return"AVM";if([ve.pBlockchainID,ye.pBlockchainID,we.pBlockchainID].includes(e))return"PVM";if([ve.cBlockchainID,ye.cBlockchainID,we.cBlockchainID].includes(e))return"EVM";throw new Error("Unknown chain id. Failed to get alias.")},qe=(e,t)=>e.reduce(((e,r)=>r.assetId.toString()!==t?e:e+r.output.amount()),BigInt(0)),We=(e,t)=>e.reduce(((e,r)=>r.assetId.toString()!==t?e:e+r.input.amount()),BigInt(0));var je={parseCreateSubnetTx:e=>l.pvmSerial.isCreateSubnetTx(e)?({feeData:t,provider:r})=>({type:Y.CreateSubnet,chain:e.getVM(),threshold:e.getSubnetOwners().threshold.value(),controlKeys:e.getSubnetOwners().addrs.map((e=>`P-${e.toString(r.getHrp())}`)),...t}):null,parseCreateChainTx:e=>l.pvmSerial.isCreateChainTx(e)?({feeData:t})=>({type:Y.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=>l.pvmSerial.isAddSubnetValidatorTx(e)?({feeData:t})=>({type:Y.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=>l.pvmSerial.isRemoveSubnetValidatorTx(e)?({feeData:t})=>({type:Y.RemoveSubnetValidator,chain:e.getVM(),nodeID:e.nodeId.toString(),subnetID:e.getSubnetID().value(),...t}):null,parseImportTx:e=>l.pvmSerial.isImportTx(e)||l.avmSerial.isImportTx(e)||l.evmSerial.isImportTx(e)?l.evmSerial.isImportTx(e)?({feeData:t,assetId:r})=>({type:Y.Import,chain:e.getVM(),source:$e(e.sourceChain.value()),amount:We(e.importedInputs,r),...t}):({feeData:t,assetId:r})=>({type:Y.Import,chain:e.getVM(),source:$e(e.sourceChain.value()),amount:We(e.ins,r),...t}):null,parseExportTx:e=>l.pvmSerial.isExportTx(e)||l.avmSerial.isExportTx(e)||l.evmSerial.isExportTx(e)?l.evmSerial.isExportTx(e)?({feeData:t,assetId:r})=>({type:Y.Export,chain:e.getVM(),destination:$e(e.destinationChain.toString()),amount:qe(e.exportedOutputs,r),...t}):({feeData:t,assetId:r})=>({type:Y.Export,chain:e.getVM(),destination:$e(e.destination.value()),amount:qe(e.outs,r),...t}):null,parseBaseTx:e=>l.avmSerial.isAvmBaseTx(e)||l.pvmSerial.isPvmBaseTx(e)?async({feeData:t,currentAddress:r,provider:s})=>{const n=e.baseTx,a=await(async(e,t)=>{const r=e.baseTx,s=new Set;if(r.outputs.forEach((e=>{s.add(e.assetId.value())})),l.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 l.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 l.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),i=_e(),o=a.filter((e=>!(1===e.owners.length&&e.owners[0]===r&&e.locktime<=i)));return{type:Y.Base,chain:e.getVM(),outputs:o,memo:f(Buffer.from(n.memo.toBytes()).toString("utf-8",4)),...t}}:null,parseAddPermissionlessValidatorTx:e=>{if(!l.pvmSerial.isAddPermissionlessValidatorTx(e))return null;let t,r;return l.pvmSerial.isSigner(e.signer)&&(r=l.utils.bufferToHex(e.signer.proof.publicKey),t=l.utils.bufferToHex(e.signer.proof.signature)),({feeData:s})=>({type:Y.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=>l.pvmSerial.isAddPermissionlessDelegatorTx(e)?({feeData:t})=>({type:Y.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=>l.pvmSerial.isTransferSubnetOwnershipTx(e)?({feeData:t,provider:r})=>({type:Y.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=>l.pvmSerial.isConvertSubnetToL1Tx(e)?({feeData:t,provider:r})=>{const s=r.getHrp(),n=e=>`P-${e.toString(s)}`;return{type:Y.ConvertSubnetToL1,chain:e.getVM(),managerAddress:`0x${e.address.toString("hex")}`,validators:e.validators.map((e=>({nodeId:l.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=>l.pvmSerial.isRegisterL1ValidatorTx(e)?({feeData:t})=>({type:Y.RegisterL1Validator,chain:e.getVM(),balance:e.balance.value(),...t}):null,parseIncreaseL1ValidatorBalanceTx:e=>l.pvmSerial.isIncreaseL1ValidatorBalanceTx(e)?({feeData:t})=>({type:Y.IncreaseL1ValidatorBalance,chain:e.getVM(),balance:e.balance.value(),validationId:e.validationId.toString(),...t}):null,parseSetL1ValidatorWeightTx:e=>l.pvmSerial.isSetL1ValidatorWeightTx(e)?({feeData:t})=>({type:Y.SetL1ValidatorWeight,chain:e.getVM(),...t}):null,parseDisableL1ValidatorTx:e=>l.pvmSerial.isDisableL1ValidatorTx(e)?({feeData:t})=>({type:Y.DisableL1Validator,chain:e.getVM(),validationId:e.validationId.toString(),...t}):null};const{getBurnedAmountByTx:Ge,getOutputAmounts:Je,getInputAmounts:ze,validateBurnedAmount:Ye}=l.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 Ze(e){const t=_e(),r=e.map((e=>({utxo:e,...l.utils.getUtxoInfo(e)}))),s=r.filter((e=>e.stakeableLocktime<=t)),n=r.filter((e=>e.stakeableLocktime>t)),a=Qe(s,["amount"],"desc"),i=Qe(n,["stakeableLocktime","amount"],"desc"),[o,...d]=a;return[...o?[o]:[],...i,...d].map((e=>e.utxo))}function et(e,t){return Qe(e.map((e=>({utxo:e,...l.utils.getUtxoInfo(e)}))),["amount"],t?"desc":"asc").map((e=>e.utxo))}const tt=e=>et(e,!0),rt=e=>et(e,!1);const{getUtxoInfo:st}=l.utils;var nt=(e=>(e.ExportP="ExportP",e.ImportP="ImportP",e.AddPermissionlessValidator="AddPermissionlessValidator",e.AddPermissionlessDelegator="AddPermissionlessDelegator",e.BaseP="BaseP",e.ConsolidateP="ConsolidateP",e))(nt||{});const at="NodeID-8TArWpFgH3sazEH8qP4gUjtGtFMvjw1aR",it="11111111111111111111111111111111LpoYY",ot=(e,t)=>e.reduce(((e,t)=>e+st(t).amount),BigInt(0))-t,dt={BaseP:{sortFunction:tt,unsignedTxBuilder:(e,t,r)=>{const s=e.getProvider().getContext();return e.baseTX({utxoSet:new l.utils.UtxoSet(t),chain:"P",toAddress:e.getCurrentAddress("P"),amountsPerAsset:{[s.avaxAssetID]:ot(t,s.baseTxFee)},feeState:r})}},ConsolidateP:{sortFunction:rt,unsignedTxBuilder:(e,t,r)=>{const s=e.getProvider().getContext();return e.consolidateP({utxoSet:new l.utils.UtxoSet(t),amount:ot(t,s.baseTxFee),feeState:r})}},AddPermissionlessValidator:{sortFunction:Ze,unsignedTxBuilder:(e,t,r)=>e.addPermissionlessValidator({utxoSet:new l.utils.UtxoSet(t),nodeId:at,start:_e(),end:_e()+BigInt(1e3),weight:ot(t,e.getProvider().getContext().baseTxFee),subnetId:it,shares:5,feeState:r,fromAddresses:void 0,rewardAddresses:void 0,delegatorRewardAddresses:void 0,publicKey:Buffer.from(l.utils.hexToBuffer("0x8f95423f7142d00a48e1014a3de8d28907d420dc33b3052a6dee03a3f2941a393c2351e354704ca66a3fc29870282e15")),signature:Buffer.from(l.utils.hexToBuffer("0x86a3ab4c45cfe31cae34c1d06f212434ac71b1be6cfe046c80c162e057614a94a5bc9f1ded1a7029deb0ba4ca7c9b71411e293438691be79c2dbf19d1ca7c3eadb9c756246fc5de5b7b89511c7d7302ae051d9e03d7991138299b5ed6a570a98"))})},AddPermissionlessDelegator:{sortFunction:Ze,unsignedTxBuilder:(e,t,r)=>e.addPermissionlessDelegator({utxoSet:new l.utils.UtxoSet(t),nodeId:at,start:_e(),end:_e()+BigInt(1e3),weight:ot(t,e.getProvider().getContext().baseTxFee),subnetId:it,feeState:r})},ExportP:{sortFunction:tt,unsignedTxBuilder:(e,t,r)=>{const s=e.getProvider().getContext(),n=function({numberIns:e=1},t){const r=l.Common.createDimensions({bandwidth:161*e+254,dbRead:e,dbWrite:2+e,compute:200*e});return l.Common.dimensionsToGas(r,t)}({numberIns:t.length},s.platformFeeConfig.weights),a=r?n*r.price:s.baseTxFee;return e.exportP({amount:ot(t,a),utxoSet:new l.utils.UtxoSet(t),destination:"X",feeState:r})}},ImportP:{sortFunction:tt,unsignedTxBuilder:(e,t,r)=>e.importP({utxoSet:new l.utils.UtxoSet(t),sourceChain:"X",feeState:r})}};function ut(e){return x.validateString(e,!0)&&6===e.split("/").length}const ct=(e,t=!0)=>`${t?"m/":""}44'/9000'/${e}'/0/0`;function lt(e){if("object"!=typeof e||!e)throw new Error("feeState parameter is required post E-upgrade")}const{parse:pt,hexToBuffer:ht}=l.utils;class gt{constructor(e){this.provider=e}setProvider(e){this.provider=e}getProvider(){return this.provider}async getUTXOs(e){const t=this.provider.getApi(e);return Ke(this.getAddresses(e),t)}async getStake(){const e=this.provider.getApiP();return Le(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 Ke(this.getAddresses(e),r,{sourceChain:s,addresses:[]})}exportX(e,t,r,s){s=s||this.getCurrentAddress(r);const n=pt(s)[2],a=this.provider.getAvaxID(),i=l.TransferableOutput.fromNative(a,e,[n]),o=et(t.getUTXOs(),!0),d=this.provider.getChainID(r),u=this.getAddresses("X").map((e=>pt(e)[2])),c=pt(this.getChangeAddress("X"))[2];return l.avm.newExportTx(this.provider.getContext(),d,u,o,[i],{threshold:1,changeAddresses:[c]})}importP({utxoSet:e,sourceChain:t,toAddress:r,threshold:s,feeState:n,locktime:a}){const i=this.provider.getChainID(t),o=this.getAddresses("P").map((e=>pt(e)[2]));pt(this.getChangeAddress("P"))[2],r=r||this.getCurrentAddress("P");const d=pt(r)[2],u=e.getUTXOs();return lt(n),l.pvm.newImportTx({fromAddressesBytes:o,utxos:u,toAddressesBytes:[d],sourceChainId:i,threshold:s,feeState:n,locktime:a},this.provider.getContext())}importX(e,t,r){const s=this.provider.getChainID(t),n=this.getAddresses("X").map((e=>pt(e)[2])),a=pt(this.getChangeAddress("X"))[2];r=r||this.getCurrentAddress("X");const i=pt(r)[2];return l.avm.newImportTx(this.provider.getContext(),s,e.getUTXOs(),[i],n,{changeAddresses:[a]})}importC(e,r,s,n,a){const i=this.provider.getChainID(r),o=this.getAddresses("C").map((e=>pt(e)[2]));a=a||this.getAddressEVM();const d=Buffer.from(t.strip0x(a),"hex");return l.evm.newImportTxFromBaseFee(this.provider.getContext(),d,o,e.getUTXOs(),i,s,n)}exportC(e,t,r,s,n){const a=ht(this.getAddressEVM()),i=this.provider.getChainID(t);n=n||this.getCurrentAddress(t);const o=pt(n)[2],d=s/BigInt(1e9);return l.evm.newExportTxFromBaseFee(this.provider.getContext(),d,e,i,a,[o],r)}exportP({amount:e,utxoSet:t,destination:r,feeState:s,toAddress:n}){n=n||this.getCurrentAddress(r);const a=pt(n)[2],i=this.provider.getAvaxID(),o=l.TransferableOutput.fromNative(i,e,[a]),d=et(t.getUTXOs(),!0),u=this.provider.getChainID(r),c=this.getAddresses("P").map((e=>pt(e)[2])),p=pt(this.getChangeAddress("P"))[2];return lt(s),l.pvm.newExportTx({changeAddressesBytes:[p],fromAddressesBytes:c,utxos:d,outputs:[o],destinationChainId:u,feeState:s},this.provider.getContext())}consolidateP({utxoSet:e,amount:t,feeState:r,toAddress:s,options:n}){const a=rt(e.getUTXOs());s=s??this.getCurrentAddress("P");const i=pt(s)[2],o=this.provider.getContext(),d=[l.TransferableOutput.fromNative(o.avaxAssetID,t,[i])],u=this.getAddresses("P").map((e=>pt(e)[2])),c=pt(this.getChangeAddress("P"))[2],p=n?.changeAddresses??[c];return lt(r),l.pvm.newBaseTx({changeAddressesBytes:p,fromAddressesBytes:u,utxos:a,outputs:d,minIssuanceTime:n?.minIssuanceTime,memo:n?.memo,feeState:r},o)}baseTX({utxoSet:e,chain:t,toAddress:r,amountsPerAsset:s,feeState:n,options:a,fromAddresses:i}){const[o,d,u]=pt(r);if(o!==t||d!==this.provider.getHrp())throw new Error(`Invalid recipient address "${r}"`);const c=Object.entries(s).map((([e,t])=>l.TransferableOutput.fromNative(e,t,[u]))),p=et(e.getUTXOs(),!0),h=(i??this.getAddresses(t)).map((e=>pt(e)[2])),g=pt(this.getChangeAddress("P"))[2],m=a?.changeAddresses??[g];return"X"===t?l.avm.newBaseTx(this.provider.getContext(),h,p,c,a):(lt(n),l.pvm.newBaseTx({changeAddressesBytes:m,fromAddressesBytes:h,utxos:p,outputs:c,minIssuanceTime:a?.minIssuanceTime,memo:a?.memo,feeState:n},this.provider.getContext()))}convertSubnetToL1({utxoSet:e,chainId:t,subnetId:r,subnetAuth:s,feeState:n,address:a,validators:i,options:o,fromAddresses:d}){const u=(d??this.getAddresses("P")).map((e=>pt(e)[2])),c=pt(this.getChangeAddress("P"))[2],p=o?.changeAddresses??[c],h=i.map((({nodeId:e,pubKey:t,signature:r,balance:s,weight:n,deactivationOwner:a,remainingBalanceOwner:i})=>{const o=new l.pvmSerial.ProofOfPossession(Uint8Array.from(l.utils.hexToBuffer(t)),Uint8Array.from(l.utils.hexToBuffer(r))),d=l.PChainOwner.fromNative(i.addresses.map((e=>pt(e)[2])),i.threshold??1),u=l.PChainOwner.fromNative(a.addresses.map((e=>pt(e)[2])),a.threshold??1);return l.L1Validator.fromNative(e,n,s,o,d,u)}));return l.pvm.newConvertSubnetToL1Tx({changeAddressesBytes:p,validators:h,fromAddressesBytes:u,address:pt(a)[2],chainId:t,subnetId:r,subnetAuth:s,feeState:n,utxos:et(e.getUTXOs(),!0)},this.provider.getContext())}registerL1Validator({utxoSet:e,balance:t,signature:r,message:s,feeState:n,fromAddresses:a,options:i}){const o=(a??this.getAddresses("P")).map((e=>pt(e)[2])),d=pt(this.getChangeAddress("P"))[2],u=i?.changeAddresses??[d];return l.pvm.newRegisterL1ValidatorTx({utxos:et(e.getUTXOs(),!0),balance:t,blsSignature:Uint8Array.from(l.utils.hexToBuffer(r)),changeAddressesBytes:u,feeState:n,fromAddressesBytes:o,memo:i?.memo,message:Uint8Array.from(l.utils.hexToBuffer(s)),minIssuanceTime:i?.minIssuanceTime},this.provider.getContext())}setL1ValidatorWeight({utxoSet:e,feeState:t,message:r,options:s,fromAddresses:n}){const a=(n??this.getAddresses("P")).map((e=>pt(e)[2])),i=pt(this.getChangeAddress("P"))[2],o=s?.changeAddresses??[i];return l.pvm.newSetL1ValidatorWeightTx({utxos:et(e.getUTXOs(),!0),changeAddressesBytes:o,feeState:t,fromAddressesBytes:a,memo:s?.memo,message:Uint8Array.from(l.utils.hexToBuffer(r)),minIssuanceTime:s?.minIssuanceTime},this.provider.getContext())}disableL1Validator({utxoSet:e,feeState:t,options:r,fromAddresses:s,disableAuth:n,validationId:a}){const i=(s??this.getAddresses("P")).map((e=>pt(e)[2])),o=pt(this.getChangeAddress("P"))[2],d=r?.changeAddresses??[o];return l.pvm.newDisableL1ValidatorTx({disableAuth:n,validationId:a,utxos:et(e.getUTXOs(),!0),changeAddressesBytes:d,feeState:t,fromAddressesBytes:i,memo:r?.memo,minIssuanceTime:r?.minIssuanceTime},this.provider.getContext())}increaseL1ValidatorBalance({utxoSet:e,feeState:t,options:r,fromAddresses:s,balance:n,validationId:a}){const i=(s??this.getAddresses("P")).map((e=>pt(e)[2])),o=pt(this.getChangeAddress("P"))[2],d=r?.changeAddresses??[o];return l.pvm.newIncreaseL1ValidatorBalanceTx({balance:n,validationId:a,utxos:et(e.getUTXOs(),!0),changeAddressesBytes:d,feeState:t,fromAddressesBytes:i,memo:r?.memo,minIssuanceTime:r?.minIssuanceTime},this.provider.getContext())}createBlockchain({utxoSet:e,subnetId:t,chainName:r,vmID:s,fxIds:n,genesisData:a,subnetAuth:i,feeState:o,options:d,fromAddresses:u}){const c=et(e.getUTXOs(),!0),p=(u??this.getAddresses("P")).map((e=>pt(e)[2])),h=pt(this.getChangeAddress("P"))[2],g=d?.changeAddresses??[h];return lt(o),l.pvm.newCreateChainTx({chainName:r,feeState:o,fromAddressesBytes:p,fxIds:n,genesisData:a,subnetAuth:i,subnetId:t,utxos:c,vmId:s,changeAddressesBytes:g},this.provider.getContext())}createSubnet({utxoSet:e,rewardAddresses:t,feeState:r,fromAddresses:s,options:n,threshold:a,locktime:i}){const o=et(e.getUTXOs(),!0),d=(s??this.getAddresses("P")).map((e=>pt(e)[2])),u=pt(this.getChangeAddress("P"))[2],c=n?.changeAddresses??[u],p=t.map((e=>pt(e)[2]));return lt(r),l.pvm.newCreateSubnetTx({fromAddressesBytes:d,changeAddressesBytes:c,utxos:o,minIssuanceTime:n?.minIssuanceTime,memo:n?.memo,feeState:r,threshold:a,locktime:i,subnetOwners:p},this.provider.getContext())}addSubnetValidator({utxoSet:e,nodeId:t,start:r,end:s,weight:n,subnetId:a,subnetAuth:i,feeState:o,fromAddresses:d,options:u}){const c=et(e.getUTXOs(),!0),p=(d??this.getAddresses("P")).map((e=>pt(e)[2])),h=pt(this.getChangeAddress("P"))[2],g=u?.changeAddresses??[h];return lt(o),l.pvm.newAddSubnetValidatorTx({changeAddressesBytes:g,fromAddressesBytes:p,utxos:c,minIssuanceTime:u?.minIssuanceTime,memo:u?.memo,nodeId:t,start:r,end:s,weight:n,subnetId:a,subnetAuth:i,feeState:o},this.provider.getContext())}addPermissionlessValidator({utxoSet:e,nodeId:t,start:r,end:s,weight:n,subnetId:a,shares:i,feeState:o,fromAddresses:d,rewardAddresses:u,delegatorRewardAddresses:c,publicKey:p,signature:h,options:g,threshold:m,locktime:f,stakingAssetId:x}){const v=Ze(e.getUTXOs()),y=(d??this.getAddresses("P")).map((e=>pt(e)[2])),w=(u??[this.getCurrentAddress("P")]).map((e=>pt(e)[2])),b=(c??[this.getCurrentAddress("P")]).map((e=>pt(e)[2]));if(!(a!==l.networkIDs.PrimaryNetworkID.toString()||p&&h))throw new Error("Must provide public key and signature for primary subnet.");const A=pt(this.getChangeAddress("P"))[2],T=g?.changeAddresses??[A];return lt(o),l.pvm.newAddPermissionlessValidatorTx({fromAddressesBytes:y,delegatorRewardsOwner:b,utxos:v,minIssuanceTime:g?.minIssuanceTime,memo:g?.memo,changeAddressesBytes:T,nodeId:t,start:r,end:s,weight:n,subnetId:a,shares:i,feeState:o,publicKey:p,rewardAddresses:w,signature:h,locktime:f,threshold:m,stakingAssetId:x},this.provider.getContext())}addPermissionlessDelegator({utxoSet:e,nodeId:t,start:r,end:s,weight:n,subnetId:a,fromAddresses:i,rewardAddresses:o,options:d,locktime:u,feeState:c,threshold:p,stakingAssetId:h}){const g=Ze(e.getUTXOs()),m=(i??this.getAddresses("P")).map((e=>pt(e)[2])),f=(o??[this.getCurrentAddress("P")]).map((e=>pt(e)[2])),x=pt(this.getChangeAddress("P"))[2],v=d?.changeAddresses??[x];return lt(c),l.pvm.newAddPermissionlessDelegatorTx({fromAddressesBytes:m,utxos:g,minIssuanceTime:d?.minIssuanceTime,memo:d?.memo,changeAddressesBytes:v,nodeId:t,start:r,end:s,weight:n,subnetId:a,rewardAddresses:f,locktime:u,stakingAssetId:h,threshold:p,feeState:c},this.provider.getContext())}removeSubnetValidator({utxoSet:e,nodeId:t,subnetId:r,subnetAuth:s,fromAddresses:n,feeState:a,options:i}){const o=et(e.getUTXOs(),!0),d=(n??this.getAddresses("P")).map((e=>pt(e)[2])),u=pt(this.getChangeAddress("P"))[2],c=i?.changeAddresses??[u];return lt(a),l.pvm.newRemoveSubnetValidatorTx({changeAddressesBytes:c,fromAddressesBytes:d,utxos:o,minIssuanceTime:i?.minIssuanceTime,memo:i?.memo,nodeId:t,subnetId:r,subnetAuth:s,feeState:a},this.provider.getContext())}transferSubnetOwnershipTx({utxoSet:e,subnetId:t,subnetAuth:r,subnetOwners:s,feeState:n,fromAddresses:a,options:i,threshold:o,locktime:d}){const u=et(e.getUTXOs(),!0),c=(a??this.getAddresses("P")).map((e=>pt(e)[2])),p=pt(this.getChangeAddress("P"))[2],h=i?.changeAddresses??[p],g=s.map((e=>pt(e)[2]));return lt(n),l.pvm.newTransferSubnetOwnershipTx({changeAddressesBytes:h,fromAddressesBytes:c,utxos:u,minIssuanceTime:i?.minIssuanceTime,memo:i?.memo,subnetId:t,subnetAuth:r,subnetOwners:g,feeState:n,threshold:o,locktime:d},this.provider.getContext())}}class mt extends gt{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 mt(o,d,s)}static fromMnemonic(e,t,r,s){if(!i.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");if(!ut(r)||!ut(t))throw new Error("Not valid derivation path. Make sure it is a valid BIP44 path starting with m/");const n=i.mnemonicToSeedSync(e),o=a.fromSeed(n),d=o.derivePath(r),u=o.derivePath(t);return mt.fromPublicKey(u.publicKey,d.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 ft={type:"zondax",getApp:e=>new v(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 xt(e){return!(await ft.getVersion(e)>="0.6.0")}const{parse:vt}=l.utils;class yt extends gt{constructor(e,t,r){super(r),this.avmXpub=e,this.accountNode=a.fromBase58(e),this.evmWallet=new mt(t,t,r)}accountNode;evmWallet;externalIndex=0;internalIndex=0;pubkeyCache={};static fromMnemonic(e,t){if(!i.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");const r=i.mnemonicToSeedSync(e),s=a.fromSeed(r),n=s.derivePath("m/44'/9000'/0'").neutered(),o=s.derivePath(X(0,L.BIP44)).neutered();return new yt(n.toBase58(),o.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(vt(e)[2])))}getExternalRawAddresses(){return this.getExternalAddresses("X").map((e=>Buffer.from(vt(e)[2])))}getRawAddressC(){return Buffer.from(vt(this.getCurrentAddress("C"))[2])}}const{isTransferOut:wt,isStakeableLockOut:bt}=l.utils;function At(e){const t=e.output;return wt(t)||bt(t)?t.getOwners():[]}function Tt(e){const t=e.getTx();return l.avmSerial.isExportTx(t)||l.pvmSerial.isExportTx(t)?new Set(t.outs.map(At).flat()):l.evmSerial.isExportTx(t)?new Set(t.exportedOutputs.map(At).flat()):new Set((t.baseTx?.outputs??[]).map(At).flat())}const{parse:St}=l.utils;class It extends yt{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]=St(s);return Buffer.from(n).toString("hex")}))}static async fromTransport(e,r){if(await xt(e))throw new Error("Unsupported ledger app version. Must be >= 0.6.0");const s=U(e),i=await ft.getXPUB(e,It.getAccountPath("X")),o=a.fromPublicKey(i.pubKey,i.chainCode),d=qt(0,"EVM",{pathSpec:L.BIP44}),u=await s.getAddress(d,!1),c=n.SigningKey.computePublicKey(Buffer.from(u.publicKey,"hex"),!0),l=Buffer.from(t.strip0x(c),"hex");return new It(o.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=>x.fromString(e))),l=[...Tt(t)].map((e=>Buffer.from(e))),p=[...this.filterOwnedAddresses(l).values()].map((e=>x.fromString(e)));return(await this.signTxBuffer({buffer:a,chain:i,transport:e.transport,signers:c,change:p})).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=x.fromString(It.getAccountPath(e.chain));return[...(await ft.signTx(e.transport,e.buffer,r,e.signers,t)).signatures.values()]}}const{strip0x:Pt}=l.utils;class Bt extends yt{constructor(e,t,r){const s=a.fromBase58(e).neutered(),i=new n.SigningKey(t),o=Buffer.from(Pt(i.compressedPublicKey),"hex");super(s.toBase58(),o,r),this.evmPrivKey=t,this.accountNode=a.fromBase58(e)}accountNode;static fromMnemonic(e,t){if(!i.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");const r=i.mnemonicToSeedSync(e),s=a.fromSeed(r),n=s.derivePath("m/44'/9000'/0'"),o=s.derivePath(qt(0,"EVM",{pathSpec:L.BIP44}));if(!o.privateKey)throw new Error("Unable to derive EVM private key.");return new Bt(n.toBase58(),o.privateKey,t)}async signTx(e){const t=this.getSigningKeys(e);return await l.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;return"EVM"===t.getVM()?[this.evmPrivKey]:[...this.getInternalPrivateKeys(s),...this.getExternalPrivateKeys(r)]}async signTxBuffer(e){throw new Error("not implemented")}async signMessage(e){throw new Error("not implemented")}}const{getPublicKey:Ct,sign:kt,signHash:Et}=l.secp256k1,{addChecksum:Mt}=l.utils;class Dt extends mt{privKeyXP;privKeyC;constructor(e,t,r){super(Buffer.from(Ct(e)),Buffer.from(Ct(t)),r),this.privKeyXP=e,this.privKeyC=t}static fromMnemonic(e,t,r,s){if(!i.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");if(!ut(r)||!ut(t))throw new Error("Not valid derivation path. Make sure it is a valid BIP44 path starting with m/");const n=i.mnemonicToSeedSync(e),o=a.fromSeed(n),d=o.derivePath(t),u=o.derivePath(r);if(!d.privateKey||!u.privateKey)throw new Error("Failed to generate private keys.");return new Dt(d.privateKey,u.privateKey,s)}async signMessage(e){const t=De(e.message),r=this.getSigningKey(e.chain);return Buffer.from(Mt(await Et(t,r)))}getSigningKey(e){return"C"===e?this.privKeyC:this.privKeyXP}async signTx(e){return await l.addTxSignatures({unsignedTx:e.tx,privateKeys:[this.privKeyC,this.privKeyXP]}),e.tx}async signTxBuffer(e){const t=this.getSigningKey(e.chain);return[Buffer.from(await kt(e.buffer,t))]}}const{strip0x:Vt}=l.utils;class Ot extends mt{constructor(e,t,r,s,a){const i=l.utils.strip0x(n.SigningKey.computePublicKey(e,!0)),o=l.utils.strip0x(n.SigningKey.computePublicKey(r,!0));if(super(Buffer.from(i,"hex"),Buffer.from(o,"hex"),a),this.pathXP=t,this.pathC=s,!ut(t)||!ut(s))throw new Error("Invalid path configuration.")}static async fromTransport(e,t,r,a){if(await xt(e))throw new Error("Ledger app not supported. Must be version >= 0.6.0");if(!ut(t)||!ut(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(Vt(o.publicKey),"hex"),c=Buffer.from(Vt(d.publicKey),"hex"),l=Buffer.from(Vt(n.SigningKey.computePublicKey(u,!0)),"hex"),p=Buffer.from(Vt(n.SigningKey.computePublicKey(c,!0)),"hex");return new Ot(p,t,l,r,a)}async signMessage(e){if(!e.transport||!e.message)throw new Error("Unable to sign message. Incomplete or invalid request.");const t=x.fromString(this.getAccountPath(e.chain)),r=x.fromString(this.getPartialSignerPath(e.chain)),s=De(e.message),n=(await ft.signHash(e.transport,s,t,[r])).signatures.get(r.toString(!0));if(!n)throw new Error("Failed to sign message.");return n}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=x.fromString(this.getAccountPath(e.chain)),r=x.fromString(this.getPartialSignerPath(e.chain));return[...(await ft.signTx(e.transport,e.buffer,t,[r],[r])).signatures.values()]}}const{parse:Kt}=l.utils;const Ut={C:60,X:9e3,P:9e3};var _t=Object.freeze({__proto__:null,AbstractProvider:fe,AddressWallet:class extends gt{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=>!He(e,!1))))throw new Error("Given addresses must be valid avalanche bech32 addresses without the chain alias prefix");if(!He(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(!He(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:we,FujiContext:ye,JsonRpcProvider:be,LedgerLiveSigner:class{constructor(e){this.accountIndices=e}#r(e){return`m/44'/${Ut[e]}'`}#s(e,t){return`${this.#r(e)}/${t}'`}async signMessage(e){if(!e.transport||!e.message)throw new Error("Unable to sign message. Incomplete or invalid request.");if(!this.accountIndices.length)throw new Error("No account indices provided. At least one account index is required to sign a message.");const t=x.fromString(this.#s(e.chain,this.accountIndices[0])),r=x.fromString("0/0"),s=De(e.message),n=(await ft.signHash(e.transport,s,t,[r])).signatures.get(r.toString(!0));if(!n)throw new Error("Failed to sign message.");return n}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":"AVM"===r?"X":"P",a=new Set(e.externalIndices??this.accountIndices);for(const r of a){const a=x.fromString(this.#s(n,r));(await this.#n(a,{buffer:s,chain:n,transport:e.transport})).forEach((e=>{t.addSignature(e)}))}return t}async#n(e,t){if(!t.transport)throw new Error("Ledger transport not provided");return[...(await ft.signTx(t.transport,t.buffer,e,t.signers??[x.fromString("0/0")],t.change??[x.fromString("0/0")])).signatures.values()]}async signTxBuffer(e){if(!this.accountIndices.length)throw new Error("No account indices provided. At least one account index is required to sign a tx buffer.");const t=x.fromString(this.#s(e.chain,this.accountIndices[0]));return this.#n(t,e)}},LedgerSigner:Ot,LedgerWallet:It,MainnetContext:ve,MnemonicWallet:Bt,MnemonicWalletVoid:yt,P_CHAIN_TX_SIZE_LIMIT:65536,SimpleLedgerSigner:class{constructor(e,t,r,s=L.BIP44){this.activeAccountIndex=e,this.provider=t,this.pathSpec=s,r&&(this.accountNode=a.fromBase58(r))}accountNode;reSerializeTx(e,t){return e instanceof l.EVMUnsignedTx||"C"===t?l.EVMUnsignedTx.fromJSON(JSON.stringify(e.toJSON())):l.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'/${this.activeAccountIndex}'`;case"C":return`m/44'/60'/${this.pathSpec===L.LedgerLive?this.activeAccountIndex: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="EVM"===e.tx.getVM()?`0/${this.pathSpec===L.LedgerLive?0:this.activeAccountIndex}`:"0/0",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,r){return 0===t.size?[x.fromString("C"===r?`0/${this.pathSpec===L.LedgerLive?0:this.activeAccountIndex}`:"0/0")]:e.reduce(((e,r)=>{const s=t.get(Buffer.from(r).toString("hex"));return s&&e.push(x.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,t),i=this.getAddressBipPaths([...Tt(r)],n,t);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=x.fromString(this.getAccountPath(e.chain));return[...(await ft.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="C"===e.chain?this.activeAccountIndex:0,r=e.signer||x.fromString(`0/${t}`);if(2!=r.toPathArray().length)throw new Error("Given signer path must have a depth of 2. Ex. 0/0, 0/1");const s=De(e.message),n=(await ft.signHash(e.transport,s,x.fromString(this.getAccountPath(e.chain)),[r])).signatures.get(r.toString(!0));if(!n)throw new Error("Failed to sign message.");return n}},SimpleSigner:class{accountNodeXP;signerNodeEVM;activeAccountIndex;constructor(e,t){if(!i.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");if(t<0||t%1!=0)throw new Error("Invalid account index.");const r=i.mnemonicToSeedSync(e),s=a.fromSeed(r);this.accountNodeXP=s.derivePath(`m/44'/9000'/${t}'`);const n=s.derivePath(qt(t,"EVM",{pathSpec:L.BIP44}));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/0");if(!s.privateKey)throw new Error("Unable to derive X/P private key.");const n=this.getAdditionalKeys(t,!1),a=this.getAdditionalKeys(r,!0);return[s.privateKey,...n,...a]}async signTx(e){const{tx:t,externalIndices:r,internalIndices:s}=e,n=t.getVM(),a=this.getSigningKeys(n,r,s);if(!a?.length)throw new Error("Unable to sign transaction: signing keys are missing.");return await l.addTxSignatures({unsignedTx:t,privateKeys:a}),e.tx}async signTxBuffer(e){throw new Error("Not implemented")}getActiveAccountNode(e){switch(e){case"X":case"P":return this.accountNodeXP.derivePath("0/0");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=De(e.message),s=await l.secp256k1.signHash(r,t.privateKey);return Buffer.from(s)}},SizeSupportedTx:nt,StaticSigner:Dt,TxType:Y,WalletAbstract:gt,WalletVoid:mt,addSignaturesToAvalancheTx:async({transactionHex:e,signatures:t,chainAlias:r,provider:s,utxos:n})=>{if(!t.length)throw new Error("signatures were not provided");const a=await pe({transactionHex:e,chainAlias:r,provider:s,utxos:n});await Promise.all(t.map((e=>a.addSignature(e))));const i=a.getCredentials(),o=a.getSigIndices().reduce(((e,t,r)=>{const s=t.map((e=>{const t=i[r]?.toJSON()[e];if(!t)throw new Error(`Failed to sign [${r}, ${e}]`);return t}));return e.push(new l.Credential(s)),e}),[]),d=new l.UnsignedTx(a.getTx(),a.getInputUtxos(),a.addressMaps,o);return{signedTxHex:de(new l.avaxSerial.SignedTx(a.getTx(),o)),hasAllSignatures:d.hasAllSignatures()}},convertGlacierUtxo:Pe,createAvalancheEvmUnsignedTx:async({txBytes:e,fromAddress:t,vm:r,credentials:s,utxos:n})=>{const a=Be(r,e),i=Ce(t)[2],o=ke(i);if(l.evmSerial.isExportTx(a))return new l.EVMUnsignedTx(a,[],new Ee([Me.fromJSON([[o,0]])]),s);if(l.evmSerial.isImportTx(a)){const e=Ee.fromTransferableInputs(a.importedInputs,n,BigInt(Math.floor((new Date).getTime()/1e3)),[i]);return new l.UnsignedTx(a,n,e,s)}throw new Error("Unsupported transaction type")},createAvalancheUnsignedTx:te,digestMessage:De,emptySignature:ie,getAddressFromXpub:function(e,t,r,s,n=!1){if(t<0)throw new Error("Account index must be >= 0");const i=n?"1":"0",o=a.fromBase58(e).derivePath(`${i}/${t}`).publicKey;return r.getAddress(o,s)},getAddressPublicKeyFromXpub:function(e,t){if(t<0)throw new Error("Account index must be >= 0");return a.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=_e();return n.forEach((e=>{const t=Ne(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},getAvalancheDerivationPath:ct,getLedgerProvider:async function(e){return ft},getMaximumUtxoSet:function({wallet:e,utxos:t,sizeSupportedTx:r,limit:s=65536,feeState:n}){const{sortFunction:a,unsignedTxBuilder:i}=dt[r],o=_e(),d=a(t.filter((e=>{const{locktime:t,stakeableLocktime:s}=st(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*st(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(st)}),s+1}}),s);return-1===u?[]:d.slice(0,u+1)},getPaginatedUTXOs:Ue,getPchainUnixNow:async function(e){const t=await e.getApiP().getTimestamp(),r=new Date(t.timestamp),s=Math.floor(r.getTime()/1e3);return BigInt(s)},getStakeForAddresses:Le,getStakedAssetBalance:function(e){const{stakedOutputs:t}=e,r={unlockedStaked:BigInt(0),lockedStaked:BigInt(0),total:BigInt(0)};return t.forEach((e=>{r[l.utils.isStakeableLockOut(e)?"lockedStaked":"unlockedStaked"]+=e.amount()})),r.total=r.lockedStaked+r.unlockedStaked,r},getUTXOsForAddresses:Ke,getUnixNow:_e,getUtxosByTxFromGlacier:async({transactionHex:e,chainAlias:t,network:r,url:s,token:n,headers:a})=>{const i=Q(t),o=Fe(e),d=Re(i,o);if(l.evmSerial.isExportTx(d))return[];const u=(e=>{if(l.evmSerial.isImportTx(e)||l.avmSerial.isImportTx(e)||l.pvmSerial.isImportTx(e))return e.sourceChain.toString();const t=e.getVM();switch(t){case l.EVM:return h.BlockchainId.C_CHAIN;case l.AVM:return h.BlockchainId.X_CHAIN;case l.PVM:return h.BlockchainId.P_CHAIN;default:throw new Error(`Unable to get chain for VM type "${t}"`)}})(d),c=Xe(d),p=new h.Glacier({BASE:s,TOKEN:n,HEADERS:a}),g=[...new Set(c.map((e=>e.utxoID.txID.toString())))],m=await Promise.all(g.map((e=>p.primaryNetworkTransactions.getTxByHash({blockchainId:u,network:r,txHash:e}))));return c.reduce(((e,t)=>{const s=m.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=Pe(n,r);return e.push(a),e}),[])},getVmByChainAlias:Q,getXpubFromMnemonic:function(e,t){if(!i.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");const r=i.mnemonicToSeedSync(e);return a.fromSeed(r).derivePath(`44'/9000'/${t}'`).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:He,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:xt,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,baseFee:n}={}){const a=t.getContext(),i=e.getTx(),o=(e=>{for(const t of Object.values(je)){const r=t(e);if(null!==r)return r}throw new Error("no parser found for tx")})(i),d=Ge(i,a),u=Je(i),c=ze(i).get(a.avaxAssetID)??BigInt(0),p=d.get(a.avaxAssetID)??BigInt(0),h=u.get(a.avaxAssetID)??BigInt(0);let g=n;void 0===g&&(g=0n,l.evmSerial.isImportExportTx(i)?(g=await t.getApiC().getBaseFee()/BigInt(1e9),0n===g&&(g=1n)):"PVM"===i.vm&&(g=await t.getApiP().getFeeState().then((e=>e.price)).catch((()=>BigInt(0)))));const{isValid:m,txFee:f}=Ye({unsignedTx:e,context:a,burnedAmount:p,baseFee:g,feeTolerance:s});return await o({feeData:{totalAvaxBurned:p,totalAvaxOutput:h,totalAvaxInput:c,isValidAvaxBurnedAmount:m,txFee:f,baseFee:g},assetId:a.avaxAssetID,provider:t,currentAddress:r})},populateCredential:oe,signedTxToHex:de,sortUTXOsByAmount:et,sortUTXOsByAmountAscending:rt,sortUTXOsByAmountDescending:tt,sortUTXOsStaking:Ze,verifyDerivationPath:ut});const Nt=(e,t)=>{const r=w.getTransactionDecoder().decode(w.getBase64Encoder().encode(e)),s=w.getCompiledTransactionMessageDecoder().decode(r.messageBytes);return w.decompileTransactionMessageFetchingLookupTables(s,t)},Lt=Symbol(),Xt=(e,t)=>String(e)===String(t),Ft=async({mint:e,provider:t})=>{const r=w.address(e),{value:s}=await t.getAccountInfo(r,{encoding:"base64"}).send();if(!s)throw new Error(`Mint account not found: ${e}`);const n=s.owner;if(Xt(n,A.TOKEN_PROGRAM_ADDRESS))return A.TOKEN_PROGRAM_ADDRESS;if(Xt(n,T.TOKEN_2022_PROGRAM_ADDRESS))return T.TOKEN_2022_PROGRAM_ADDRESS;throw new Error(`Unsupported token program for mint ${e}: ${String(n)}`)},Rt=async({mint:e,owner:t,provider:r,tokenProgram:s})=>{const n=s??await Ft({mint:e,provider:r}),[a]=await A.findAssociatedTokenPda({mint:w.address(e),owner:w.address(t),tokenProgram:n}),i=await r.getAccountInfo(a,{encoding:"base64"}).send();return{address:a,exists:Boolean(i.value),info:i}},Ht=(e,t=!0)=>`${t?"m/":""}44'/501'/${e}'/0'`;class $t{#a;#i;constructor(e){this.#a=Uint8Array.from(e),this.#i=w.address(P.base58.encode(I.ed25519.getPublicKey(this.#a)))}static fromMnemonic(e,t){const r=i.mnemonicToSeedSync(e),s=B.fromMasterSeed(Uint8Array.from(r)).derive(`m/44'/501'/${t}'/0'`);return new $t(Buffer.from(s.privateKey))}#o(e){try{return w.getCompiledTransactionMessageDecoder().decode(e),!0}catch{return!1}}async signMessage(e){const t=P.base64.decode(e);if(this.#o(t))throw new Error("Cannot use signMessage() to sign transactions!");return P.base64.encode(I.ed25519.sign(t,this.#a))}async signTx(e,t){const r=await Nt(e,t),{signatures:s,messageBytes:n,...a}=w.compileTransaction(r);if(!this.#d(s))return e;const i=P.base58.encode(I.ed25519.sign(Uint8Array.from(n),this.#a));return w.assertIsSignature(i),w.getBase64EncodedWireTransaction({...a,messageBytes:n,signatures:{...s,[this.#i]:P.base58.decode(i)}})}#d(e){return this.#i in e&&!e[this.#i]}}function qt(e,t,r={withRoot:!0}){if(e<0)throw new Error("Account index can not be less than 0.");switch(t){case"EVM":if(!r.pathSpec)throw new Error("Path spec is required for EVM: either BIP44 or Ledger Live");return X(e,r.pathSpec,r.withRoot);case"AVM":case"PVM":return ct(e,r.withRoot);case"SVM":return Ht(e,r.withRoot);default:throw new Error(`Unknown derivation path for VM: ${t}`)}}class Wt extends z{keypair;constructor(t,r){const s=e.ECPair.fromPrivateKey(t);super(s.publicKey,r),this.keypair=s}static async fromMnemonic(e,t,r,s=L.BIP44){if(t<0)throw new Error("Account index must be >= 0");if(!i.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");const n=await i.mnemonicToSeed(e),o=a.fromSeed(n),d=qt(t,"EVM",{pathSpec:s}),u=o.derivePath(d);if(!u.privateKey)throw new Error("Unable to derive private key from the given mnemonic.");return new Wt(u.privateKey,r)}signTx(e,t){const r=M(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 Wt(s,t)}signPsbt(e){return e.signAllInputs(this.keypair),e.validateSignaturesOfAllInputs(),e.finalizeAllInputs(),e.extractTransaction()}}const jt=e.networks;exports.Avalanche=_t,exports.BitcoinLedgerWallet=class extends z{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 u.AppClient(e)}(this.transport),s=this.ecPair.publicKey,n=this.provider.getNetwork(),a=await r.getMasterFingerprint(),i=G(e,t,n,Buffer.from(a,"hex"),s,this.derivationPath),{policy:o,hmac:d}=this.walletPolicyDetails,c=await r.signPsbt(i,o,d),l=J(i,n,s,this.derivationPath);if(c.forEach((e=>{const[t,r]=e;l.updateInput(t,{partialSig:[{signature:r.signature,pubkey:r.pubkey}]})})),!l.validateSignaturesOfAllInputs())throw new Error("Failed to validate signatures");return l.finalizeAllInputs(),l.extractTransaction()}},exports.BitcoinProvider=class extends E{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.#u=new t.HttpClient(s||o,i);const d=e?"https://btc.nownodes.io":"https://btc-testnet.nownodes.io";this.#c=new t.HttpClient(n||d,i)}#u;#c;async#l(e,t){return this.isMainnet||t?(await Promise.all(e.map((e=>this.#c.post("",e,{},this.extraParams))))).flat():this.#c.post("",e,{},this.extraParams)}async getTxHex(e){return(await this.#u.post(`/api/v2/tx/${e}`,{},{},this.extraParams)).hex}async getUTXOs(e,t=!0,r){const s=await this.#u.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.#c.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.#l(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.#u.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.#c.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.#l([{...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.#c.post("",{jsonrpc:"2.0",id:"nownodes",method:"sendrawtransaction",params:[e]},{},this.extraParams).then((e=>e.result))}async getTransaction(e){const t=await this.#u.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.#u.post(`/api/v2/address/${e}`,{},{},this.extraParams),r=t.txids?.slice(0,25)??[];return await Promise.allSettled(r.map((async t=>{try{const r=await this.#u.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(),p=d?l:c,h=p.filter(((e,t)=>p.indexOf(e)===t)),g=s.filter((e=>(e.addresses?.length||0)>1)).length>0;return{addresses:h,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=E,exports.BitcoinWallet=Wt,exports.BitcoinWalletAbstract=z,exports.BitcoinWalletVoid=class extends z{constructor(e,t){super(e,t)}signTx(e){throw new Error("Void wallets can not sign.")}},exports.BtcNetworks=jt,exports.DerivationPath=L,exports.ETH_ACCOUNT_PATH=N,exports.ETH_COIN_PATH=_,exports.JsonRpcBatchInternal=q,exports.LedgerSigner=j,exports.SolanaLedgerSigner=class{#p;#h;constructor(e,t){this.#p=Ht(e,!1),this.#h=t}async signTx(e,t){const r=await Nt(e,t),{signatures:s,messageBytes:n,...a}=w.compileTransaction(r),i=new S(this.#h),{address:o}=await i.getAddress(this.#p),d=w.address(P.base58.encode(Uint8Array.from(o)));if(!this.#d(d,s))return e;const{signature:u}=await i.signTransaction(this.#p,Buffer.from(n)),c=P.base58.encode(Uint8Array.from(u));return w.assertIsSignature(c),w.getBase64EncodedWireTransaction({...a,messageBytes:n,signatures:{...s,[d]:P.base58.decode(c)}})}#d(e,t){return e in t&&!t[e]}},exports.SolanaSigner=$t,exports.addEncodedSigToPsbt=function(e,t,r,s){const n=[{pubkey:t,signature:e}];r.updateInput(s,{partialSig:n})},exports.compileSolanaTx=e=>w.compileTransaction(e),exports.createPSBTV2=G,exports.createPsbt=M,exports.createTransferTx=O,exports.createWalletPolicy=function(e,t,r,s){const n=new u.DefaultWalletPolicy("wpkh(@0/**)",`[${e}/44'/60'/${t}']${r}`);return new u.WalletPolicy(s,"wpkh(@0/**)",n.keys)},exports.deserializeTransactionMessage=Nt,exports.formatAddressForNetworkBech32=function(t,r){const s=e.address.fromBech32(t);return e.address.toBech32(s.data,s.version,r.bech32)},exports.getAddressDerivationPath=qt,exports.getAddressFromXPub=function(e,t){const r=W(e,t);return n.computeAddress(`0x${r.toString("hex")}`)},exports.getAddressPrivateKeyFromXPriv=function(e,t){const r=a.fromBase58(e).derivePath(`0/${t}`);if(!r.privateKey)throw new Error("Unable to derive private key.");return r.privateKey},exports.getAddressPublicKeyFromXPub=W,exports.getAppEth=U,exports.getBech32Address=K,exports.getBech32AddressFromXPub=function(e,t,r){return K(W(e,t),r)},exports.getBtcAddressFromPubKey=function(e,r){const s=t.strip0x(n.SigningKey.computePublicKey(e,!0));return K(Buffer.from(s,"hex"),r)},exports.getEVMDerivationPath=X,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=U(e),n=await s.getAddress(r??N,t,!0),a=new y;return a.publicKey=C.Buffer.from(n.publicKey,"hex"),a.chainCode=C.Buffer.from(n.chainCode,"hex"),a.publicExtendedKey},exports.getMaxTransferAmount=function(e,t,r,s){const n=k(e);if(!n)return 0;const{fee:a}=D(t,r,n,s,e);return n-a},exports.getPubKeyFromTransport=async function(e,t,r,s="EVM"){const n=U(e),a="EVM"===s?qt(t,s,{pathSpec:r}):qt(t,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(l.secp256k1.getPublicKey(t))}finally{t.fill(0)}},exports.getSolanaDerivationPath=Ht,exports.getSolanaProvider=({isTestnet:e,rpcUrl:t})=>{const r=w.createSolanaRpc(e?w.devnet(t):w.mainnet(t));return new Proxy(r,{get:(e,t,r)=>t===Lt||("then"===t||"catch"===t||"finally"===t?e:Reflect.get(e,t,r))})},exports.getSolanaPublicKeyFromLedger=async(e,t)=>{const r=new S(t),{address:s}=await r.getAddress(Ht(e,!1));return s},exports.getTransferTxDetails=function(e,t,r,s,n){const a=D(e,t,r,s,V(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),X(t,r))},exports.getXpubFromMnemonic=async function(e){if(!i.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");const t=await i.mnemonicToSeed(e);return a.fromSeed(t).derivePath(N).neutered().toBase58()},exports.isERC20Transfer=H,exports.isNativeTxn=R,exports.isSolanaProvider=e=>!(!e||"object"!=typeof e)&&!0===e[Lt],exports.maybeGetAssociatedTokenAccount=Rt,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())&&H(e,n)?s(e,{type:"erc20",contractAddress:e.to}):R(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=J,exports.quitLedgerApp=async function(e){return await e.send(176,167,0,0)},exports.resolveTokenProgramForMint=Ft,exports.selectUtxos=D,exports.serializeSolanaTx=e=>w.getBase64EncodedWireTransaction(e),exports.transferSol=async({from:e,to:t,amount:r,provider:s})=>{const{value:n}=await s.getLatestBlockhash().send(),a=[b.getTransferSolInstruction({source:w.createNoopSigner(w.address(e)),destination:w.address(t),amount:r})];return w.pipe(w.createTransactionMessage({version:0}),(e=>w.setTransactionMessageLifetimeUsingBlockhash(n,e)),(t=>w.setTransactionMessageFeePayer(w.address(e),t)),(e=>w.appendTransactionMessageInstructions(a,e)))},exports.transferToken=async({from:e,to:t,mint:r,amount:s,decimals:n,provider:a})=>{const i=await Ft({mint:r,provider:a}),o=String(i)===String(T.TOKEN_2022_PROGRAM_ADDRESS);const{address:d}=await Rt({mint:r,owner:e,provider:a,tokenProgram:i}),{address:u,exists:c}=await Rt({mint:r,owner:t,provider:a,tokenProgram:i}),l=[];c||l.push(o?T.getCreateAssociatedTokenIdempotentInstruction({payer:w.createNoopSigner(w.address(e)),mint:w.address(r),owner:w.address(t),ata:u,tokenProgram:T.TOKEN_2022_PROGRAM_ADDRESS}):A.getCreateAssociatedTokenIdempotentInstruction({payer:w.createNoopSigner(w.address(e)),mint:w.address(r),owner:w.address(t),ata:u})),l.push(o?T.getTransferCheckedInstruction({amount:s,authority:w.createNoopSigner(w.address(e)),decimals:n,mint:w.address(r),destination:u,source:d}):A.getTransferCheckedInstruction({amount:s,authority:w.createNoopSigner(w.address(e)),decimals:n,mint:w.address(r),destination:u,source:d}));const{value:p}=await a.getLatestBlockhash().send();return w.pipe(w.createTransactionMessage({version:0}),(e=>w.setTransactionMessageLifetimeUsingBlockhash(p,e)),(t=>w.setTransactionMessageFeePayer(w.address(e),t)),(e=>w.appendTransactionMessageInstructions(l,e)))};
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("bip32"),i=require("bip39"),o=require("@ledgerhq/hw-transport"),d=require("@metamask/eth-sig-util"),u=require("ledger-bitcoin"),c=require("@ledgerhq/hw-app-btc/lib/bip32"),l=require("@avalabs/avalanchejs"),p=require("@noble/hashes/sha256"),h=require("@avalabs/glacier-sdk"),g=require("@avalabs/core-chains-sdk"),m=require("create-hash"),f=require("xss"),x=require("bip32-path"),v=require("@avalabs/hw-app-avalanche"),w=require("hdkey"),y=require("@solana/kit"),A=require("@solana-program/system"),b=require("@solana-program/token"),T=require("@solana-program/token-2022"),S=require("@ledgerhq/hw-app-solana"),I=require("@noble/curves/ed25519"),P=require("@scure/base"),B=require("micro-key-producer/slip10.js"),C=require("buffer");function k(e){return e.reduce(((e,t)=>e+t.value),0)}class E{async getUtxoBalance(e,t=!0){const r=await this.getUTXOs(e,t);return{balance:k(r.confirmed),balanceUnconfirmed:k(r.unconfirmed),utxos:r.confirmed,utxosUnconfirmed:r.unconfirmed}}}function V(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 D(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 M(e){const t=[];return e.filter((e=>{const r=e.txHash+e.index.toString();return!t.includes(r)&&(t.push(r),!0)}))}function O(e,t,r,s,n,a){const i=D(e,t,r,s,M(n));return i.inputs?{...i,psbt:V(i.inputs,i.outputs,a)}:(console.log("Unable to construct transaction, fee needed: ",i.fee),i)}function K(t,r){return e.payments.p2wpkh({pubkey:t,network:r}).address}function U(e){return new s(e,"w0w")}const _="m/44'/60'",N=`${_}/0'`;var L=(e=>(e.BIP44="bip44",e.LedgerLive="ledger_live",e))(L||{});const R=(e,t,r=!0)=>{switch(t){case L.BIP44:return`${r?"m/":""}44'/60'/0'/0/${e}`;case L.LedgerLive:return`${r?"m/":""}44'/60'/${e}'/0/0`;default:throw new Error("Invalid path spec")}};var X=[{inputs:[{internalType:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}];const F=(e,t)=>t.has(e.from.toLowerCase())||t.has((e.to??"").toLowerCase()),H=(e,t)=>{const r=new n.Interface(X).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 q 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 W(e,t){return a.fromBase58(e).derivePath(`0/${t}`).publicKey}let j=class e extends n.AbstractSigner{type="default";path;provider=null;accountIndex;derivationSpec;transport;_eth;constructor(e=0,t,r,s){super(),this.path=R(e,r),this.accountIndex=e,this.transport=t,this.derivationSpec=r,this._eth=U(t),n.defineProperties(this,{path:this.path,type:"default",provider:s??null})}setTransport(e){this._eth=U(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 o.TransportStatusError&&s.statusCode===o.StatusCodes.INS_NOT_SUPPORTED){const s=d.TypedDataUtils.hashStruct(i,r,t,d.SignTypedDataVersion.V4),a=d.TypedDataUtils.hashStruct("EIP712Domain",e,t,d.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 G(t,r,s,n,a,i){const o=new u.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,c.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 J(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 z{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 K(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 O(e,this.getAddressBech32(),t,r,s,this.provider.getNetwork())}}var Y=(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.AddAutoRenewedValidator="add_auto_renewed_validator",e.SetAutoRenewedValidatorConfig="set_auto_renewed_validator_config",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))(Y||{});const Q=e=>{switch(e){case"C":return l.EVM;case"X":return l.AVM;case"P":return l.PVM;default:throw new Error(`Unable to get VM type for chain "${e}"`)}};const{getTransferableInputsByTx:Z,AddressMaps:ee}=l.utils,te=async({tx:e,fromAddressBytes:t,provider:r,credentials:s,utxos:n})=>{const a=Z(e);let i=ee.fromTransferableInputs(a,n,BigInt(Math.floor((new Date).getTime()/1e3)),t);if((e=>l.pvmSerial.isCreateChainTx(e)||l.pvmSerial.isAddSubnetValidatorTx(e)||l.pvmSerial.isRemoveSubnetValidatorTx(e)||l.pvmSerial.isTransformSubnetTx(e)||l.pvmSerial.isTransferSubnetOwnershipTx(e)||l.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()}),a=l.OutputOwners.fromNative(n.controlKeys.map((e=>l.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 l.utils.AddressMap(a)),r})({tx:e,provider:r,addressMaps:i});return new l.UnsignedTx(e,n,t,s)}catch(e){throw new Error(`Error while preparing subnet authorization data: ${e.message}`)}else l.pvmSerial.isDisableL1ValidatorTx(e)?i=await async function(e,t,r){try{const{deactivationOwner:s}=await r.getApiP().getL1Validator(t.validationId.toString()),n=t.getDisableAuth().values(),a=s.addresses.reduce(((e,t,r)=>(n.includes(r)&&e.push([t,r]),e)),[]);return e.push(new l.utils.AddressMap(a)),e}catch(e){throw new Error(`Error while preparing disableAuth data: ${e.message}`)}}(i,e,r):l.pvmSerial.isSetAutoRenewedValidatorConfigTx(e)&&(i=await async function(e,t,r){try{const s=(await r.getApiP().getTx({txID:t.txId.value()})).unsignedTx;if(!l.pvmSerial.isAddAutoRenewedValidatorTx(s))throw new Error("Referenced validator transaction is not an AddAutoRenewedValidatorTx");const n=s.getOwner().addrs,a=t.getAuth().values(),i=n.reduce(((e,t,r)=>(a.includes(r)&&e.push([t,r]),e)),[]);return e.push(new l.utils.AddressMap(i)),e}catch(e){throw new Error(`Error while preparing auto-renewed validator config auth data: ${e.message}`)}}(i,e,r));return new l.UnsignedTx(e,n,i,s)},{bufferToHex:re,packTx:se}=l.utils,{publicKeyBytesToAddress:ne,recoverPublicKey:ae}=l.secp256k1,ie=new l.Signature(new Uint8Array(Array(65).fill(0))),oe=(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(ie);if(!t)return s;const{unsignedTx:n,credentialIndex:a}=t,i=n.getCredentials()[a];if(!i)return s;const o=se(n.getTx()),d=p.sha256(o),u=ie.toString();for(const e of i.toJSON()){if(e.toString()===u)continue;const t=ae(d,e.toBytes()),r={toHex:()=>re(ne(t))},i=n.addressMaps.getSigIndicesForAddress(r,!1)??[];for(const t of i)t[0]===a&&(s[t[1]]=e)}return s};function de(e){return l.utils.bufferToHex(l.utils.addChecksum(e.toBytes()))}const{getManagerForVM:ue,hexToBuffer:ce,unpackWithManager:le}=l.utils,pe=async({transactionHex:e,chainAlias:t,provider:r,utxos:s})=>{const n=Q(t);if(n===l.EVM)throw new Error("EVM transactions are not supported");const a=ce(e),i=le(n,a),o=await(async({tx:e,txBytes:t,provider:r,vm:s,utxos:n})=>{try{const a=ue(s).unpack(t,l.avaxSerial.SignedTx),i=await te({tx:e,utxos:n,provider:r,credentials:a.getCredentials()});return e.getSigIndices().map(((e,t)=>new l.Credential(oe(e,{unsignedTx:i,credentialIndex:t}))))}catch(t){return e.getSigIndices().map((e=>new l.Credential(oe(e))))}})({tx:i,txBytes:a,provider:r,vm:n,utxos:s});return te({tx:i,provider:r,credentials:o,utxos:s})},{parseBech32:he,format:ge}=l.utils,{publicKeyBytesToAddress:me}=l.secp256k1;class fe{constructor(e,t,r){this.baseUrl=e,this.context=t,this.fetchOptions=r}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 l.networkIDs.getHRP(this.getNetworkID())}getApiX(){const e=new l.avm.AVMApi(this.baseUrl);return this.fetchOptions&&e.setFetchOptions(this.fetchOptions),e}getApiP(){const e=new l.pvm.PVMApi(this.baseUrl);return this.fetchOptions&&e.setFetchOptions(this.fetchOptions),e}getApiC(){const e=new l.evm.EVMApi(this.baseUrl);return this.fetchOptions&&e.setFetchOptions(this.fetchOptions),e}getInfo(){const e=new l.info.InfoApi(this.baseUrl);return this.fetchOptions&&e.setFetchOptions(this.fetchOptions),e}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=me(a);return ge(r,this.getHrp(),i)}getAddressFromBuffer(e,t){return ge(t,this.getHrp(),e)}formatAddress(e,t){const[,r]=he(e);return ge(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=de(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,a)=>{const i=async()=>{let o;switch(r&&n+r<Date.now()&&a(new Error("Timeout")),o=s instanceof l.evm.EVMApi?await s.getAtomicTxStatus(e):await s.getTxStatus({txID:e,includeReason:!0}),o.status){case"Accepted":case"Committed":return void t({success:!0});case"Dropped":case"Rejected":return void t({success:!1});default:setTimeout((()=>{i()}),1e3)}};i()}))}}const xe={weights:l.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)},ve={xBlockchainID:"2oYMBNV4eNHyqk2fjjV5nVQLDbtmNJzq5s3qs3Lo6ftnC6FByM",pBlockchainID:"11111111111111111111111111111111LpoYY",cBlockchainID:"2q9e4r6Mu3U68nU1fYjgbR6JvwrRx36CohpAX5UQxse55x1Q5",avaxAssetID:"FvwEAhmxKfeiG8SnEvq42hc6whRyY3EFYAvebMqDNDGCgxN5Z",baseTxFee:BigInt(1e6),createAssetTxFee:BigInt(1e7),networkID:1,hrp:"avax",platformFeeConfig:xe},we={xBlockchainID:"2JVSBoinj9C2J33VntvzYtVJNZdN2NKiwwKjcumHUWEb5DbBrm",pBlockchainID:"11111111111111111111111111111111LpoYY",cBlockchainID:"yH8D7ThNJkxmtkuv2jgBa4P1Rn3Qpr4pPr7QYNfcdoS6k6HWp",avaxAssetID:"U8iRqJoiJm8xZHAacmvYyZVwqQx6uDNtQeP3CQ6fcgQk3JqnK",baseTxFee:BigInt(1e6),createAssetTxFee:BigInt(1e7),networkID:5,hrp:"fuji",platformFeeConfig:xe},ye={xBlockchainID:"2piQ2AVHCjnduiWXsSY15DtbVuwHE2cwMHYnEXHsLL73BBkdbV",pBlockchainID:"11111111111111111111111111111111LpoYY",cBlockchainID:"vV3cui1DsEPC3nLCGH9rorwo8s6BYxM2Hz4QFE5gEYjwTqAu",avaxAssetID:"22jjRVdyTJiAEtcZciAVR8bTFyVDUVoo1T3o5PiDspQSZ2maXR",baseTxFee:1000000n,createAssetTxFee:1000000n,networkID:76,hrp:"custom",platformFeeConfig:xe};class Ae extends fe{constructor(e,t,r){super(e,t,r)}static async fromBaseURL(e){const t=await l.Context.getContextFromURI(e);try{return new Ae(e,t)}catch{return new Ae(e,t)}}static getDefaultMainnetProvider(e){return new Ae(g.AVALANCHE_XP_NETWORK.rpcUrl,ve,e)}static getDefaultFujiProvider(e){return new Ae(g.AVALANCHE_XP_TEST_NETWORK.rpcUrl,we,e)}static getDefaultDevnetProvider(e){return new Ae(g.AVALANCHE_P_DEV_NETWORK.rpcUrl,ye,e)}}const{bytesCompare:be,parseBech32:Te}=l.utils,Se=(e,t)=>"P"===t,Ie=(e,t,r)=>{const s=Se(0,t)?e.amount:e.asset?.amount;return new l.TransferOutput(new l.BigIntPr(BigInt(s)),l.OutputOwners.fromNative(e.addresses.map((e=>Te(e)[1])).sort(be),BigInt(r??0),e.threshold))},Pe=(e,t)=>{const r=((e,t)=>{const r=t===h.Network.FUJI,{cBlockchainID:s,xBlockchainID:n,pBlockchainID:a}=r?we:ve;if(s===e)return"C";if(n===e)return"X";if(a===e)return"P";throw new Error(`Unknown chainId "${e}"`)})(e.createdOnChainId,t),s=Se(0,r)?e.txHash:e.creationTxHash,n=Se(0,r)?e.assetId:e.asset?.assetId;return new l.Utxo(l.avaxSerial.UTXOID.fromNative(s,Number(e.outputIndex)),l.Id.fromString(n),((e,t)=>Se(0,t)?e.stakeableLocktime?new l.pvmSerial.StakeableLockOut(new l.BigIntPr(BigInt(e.stakeableLocktime??0)),Ie(e,t,e.platformLocktime??0)):Ie(e,t,e.platformLocktime):Ie(e,t,e.locktime))(e,r))},{unpackWithManager:Be,parse:Ce,bufferToHex:ke,AddressMaps:Ee,AddressMap:Ve}=l.utils;function De(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 m("sha256").update(s).digest()}const Me=1024,Oe=1024;async function Ke(e,t,r){const s=e.slice(0,Me),n=e.slice(Me),a=await Ue(t,{...r,addresses:s});if(n.length){const s=await Ke(n,t,{...r,addresses:e});return a.merge(s)}return a}async function Ue(e,t){if(t.addresses.length>Me)throw new Error(`Can not get UTXOs for more than ${Me} addresses.`);const{endIndex:r,utxos:s}=await e.getUTXOs(t),n=new l.utils.UtxoSet(s);if(s.length>=Oe){const s=await Ue(e,{...t,startIndex:r});return n.merge(s)}return n}function _e(){return BigInt(Math.floor(Date.now()/1e3))}const{getUtxoInfo:Ne}=l.utils;async function Le(e,t){const r=e.slice(0,256),s=e.slice(256),n=await t.getStake({addresses:r});if(s.length){const e=await Le(s,t);return{staked:n.staked+e.staked,stakedOutputs:[...n.stakedOutputs,...e.stakedOutputs]}}return n}const{getTransferableInputsByTx:Re,hexToBuffer:Xe,unpackWithManager:Fe}=l.utils;function He(e,t=!0){try{if(t){const[t]=l.utils.parse(e);if(!["X","P","C"].includes(t))return!1}else l.utils.parseBech32(e);return!0}catch(e){return!1}}const $e=e=>{if([ve.xBlockchainID,we.xBlockchainID,ye.xBlockchainID].includes(e))return"AVM";if([ve.pBlockchainID,we.pBlockchainID,ye.pBlockchainID].includes(e))return"PVM";if([ve.cBlockchainID,we.cBlockchainID,ye.cBlockchainID].includes(e))return"EVM";throw new Error("Unknown chain id. Failed to get alias.")},qe=(e,t)=>e.reduce(((e,r)=>r.assetId.toString()!==t?e:e+r.output.amount()),BigInt(0)),We=(e,t)=>e.reduce(((e,r)=>r.assetId.toString()!==t?e:e+r.input.amount()),BigInt(0));var je={parseCreateSubnetTx:e=>l.pvmSerial.isCreateSubnetTx(e)?({feeData:t,provider:r})=>({type:Y.CreateSubnet,chain:e.getVM(),threshold:e.getSubnetOwners().threshold.value(),controlKeys:e.getSubnetOwners().addrs.map((e=>`P-${e.toString(r.getHrp())}`)),...t}):null,parseCreateChainTx:e=>l.pvmSerial.isCreateChainTx(e)?({feeData:t})=>({type:Y.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=>l.pvmSerial.isAddSubnetValidatorTx(e)?({feeData:t})=>({type:Y.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=>l.pvmSerial.isRemoveSubnetValidatorTx(e)?({feeData:t})=>({type:Y.RemoveSubnetValidator,chain:e.getVM(),nodeID:e.nodeId.toString(),subnetID:e.getSubnetID().value(),...t}):null,parseImportTx:e=>l.pvmSerial.isImportTx(e)||l.avmSerial.isImportTx(e)||l.evmSerial.isImportTx(e)?l.evmSerial.isImportTx(e)?({feeData:t,assetId:r})=>({type:Y.Import,chain:e.getVM(),source:$e(e.sourceChain.value()),amount:We(e.importedInputs,r),...t}):({feeData:t,assetId:r})=>({type:Y.Import,chain:e.getVM(),source:$e(e.sourceChain.value()),amount:We(e.ins,r),...t}):null,parseExportTx:e=>l.pvmSerial.isExportTx(e)||l.avmSerial.isExportTx(e)||l.evmSerial.isExportTx(e)?l.evmSerial.isExportTx(e)?({feeData:t,assetId:r})=>({type:Y.Export,chain:e.getVM(),destination:$e(e.destinationChain.toString()),amount:qe(e.exportedOutputs,r),...t}):({feeData:t,assetId:r})=>({type:Y.Export,chain:e.getVM(),destination:$e(e.destination.value()),amount:qe(e.outs,r),...t}):null,parseBaseTx:e=>l.avmSerial.isAvmBaseTx(e)||l.pvmSerial.isPvmBaseTx(e)?async({feeData:t,currentAddress:r,provider:s})=>{const n=e.baseTx,a=await(async(e,t)=>{const r=e.baseTx,s=new Set;if(r.outputs.forEach((e=>{s.add(e.assetId.value())})),l.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 l.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 l.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),i=_e(),o=a.filter((e=>!(1===e.owners.length&&e.owners[0]===r&&e.locktime<=i)));return{type:Y.Base,chain:e.getVM(),outputs:o,memo:f(Buffer.from(n.memo.toBytes()).toString("utf-8",4)),...t}}:null,parseAddPermissionlessValidatorTx:e=>{if(!l.pvmSerial.isAddPermissionlessValidatorTx(e))return null;let t,r;return l.pvmSerial.isSigner(e.signer)&&(r=l.utils.bufferToHex(e.signer.proof.publicKey),t=l.utils.bufferToHex(e.signer.proof.signature)),({feeData:s})=>({type:Y.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=>l.pvmSerial.isAddPermissionlessDelegatorTx(e)?({feeData:t})=>({type:Y.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=>l.pvmSerial.isTransferSubnetOwnershipTx(e)?({feeData:t,provider:r})=>({type:Y.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=>l.pvmSerial.isConvertSubnetToL1Tx(e)?({feeData:t,provider:r})=>{const s=r.getHrp(),n=e=>`P-${e.toString(s)}`;return{type:Y.ConvertSubnetToL1,chain:e.getVM(),managerAddress:`0x${e.address.toString("hex")}`,validators:e.validators.map((e=>({nodeId:l.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=>l.pvmSerial.isRegisterL1ValidatorTx(e)?({feeData:t})=>({type:Y.RegisterL1Validator,chain:e.getVM(),balance:e.balance.value(),...t}):null,parseIncreaseL1ValidatorBalanceTx:e=>l.pvmSerial.isIncreaseL1ValidatorBalanceTx(e)?({feeData:t})=>({type:Y.IncreaseL1ValidatorBalance,chain:e.getVM(),balance:e.balance.value(),validationId:e.validationId.toString(),...t}):null,parseSetL1ValidatorWeightTx:e=>l.pvmSerial.isSetL1ValidatorWeightTx(e)?({feeData:t})=>({type:Y.SetL1ValidatorWeight,chain:e.getVM(),...t}):null,parseDisableL1ValidatorTx:e=>l.pvmSerial.isDisableL1ValidatorTx(e)?({feeData:t})=>({type:Y.DisableL1Validator,chain:e.getVM(),validationId:e.validationId.toString(),...t}):null,parseAddAutoRenewedValidatorTx:e=>{if(!l.pvmSerial.isAddAutoRenewedValidatorTx(e))return null;let t,r;return l.pvmSerial.isSigner(e.signer)&&(r=l.utils.bufferToHex(e.signer.proof.publicKey),t=l.utils.bufferToHex(e.signer.proof.signature)),({feeData:s})=>({type:Y.AddAutoRenewedValidator,chain:e.getVM(),nodeID:e.nodeId.value(),stake:e.weight.value(),stakeOuts:e.stake,rewardOwner:e.getValidatorRewardsOwner(),delegationRewardOwner:e.getDelegatorRewardsOwner(),owner:e.getOwner(),delegationFee:e.shares.value(),weight:e.weight.value(),autoCompoundRewardShares:e.autoCompoundRewardShares.value(),period:e.period.value(),signer:e.signer,publicKey:r,signature:t,...s})},parseSetAutoRenewedValidatorConfigTx:e=>l.pvmSerial.isSetAutoRenewedValidatorConfigTx(e)?({feeData:t})=>({type:Y.SetAutoRenewedValidatorConfig,chain:e.getVM(),txId:e.txId.value(),autoCompoundRewardShares:e.autoCompoundRewardShares.value(),period:e.period.value(),...t}):null};const{getBurnedAmountByTx:Ge,getOutputAmounts:Je,getInputAmounts:ze,validateBurnedAmount:Ye}=l.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 Ze(e){const t=_e(),r=e.map((e=>({utxo:e,...l.utils.getUtxoInfo(e)}))),s=r.filter((e=>e.stakeableLocktime<=t)),n=r.filter((e=>e.stakeableLocktime>t)),a=Qe(s,["amount"],"desc"),i=Qe(n,["stakeableLocktime","amount"],"desc"),[o,...d]=a;return[...o?[o]:[],...i,...d].map((e=>e.utxo))}function et(e,t){return Qe(e.map((e=>({utxo:e,...l.utils.getUtxoInfo(e)}))),["amount"],t?"desc":"asc").map((e=>e.utxo))}const tt=e=>et(e,!0),rt=e=>et(e,!1);const{getUtxoInfo:st}=l.utils;var nt=(e=>(e.ExportP="ExportP",e.ImportP="ImportP",e.AddPermissionlessValidator="AddPermissionlessValidator",e.AddPermissionlessDelegator="AddPermissionlessDelegator",e.BaseP="BaseP",e.ConsolidateP="ConsolidateP",e))(nt||{});const at="NodeID-8TArWpFgH3sazEH8qP4gUjtGtFMvjw1aR",it="11111111111111111111111111111111LpoYY",ot=(e,t)=>e.reduce(((e,t)=>e+st(t).amount),BigInt(0))-t,dt={BaseP:{sortFunction:tt,unsignedTxBuilder:(e,t,r)=>{const s=e.getProvider().getContext();return e.baseTX({utxoSet:new l.utils.UtxoSet(t),chain:"P",toAddress:e.getCurrentAddress("P"),amountsPerAsset:{[s.avaxAssetID]:ot(t,s.baseTxFee)},feeState:r})}},ConsolidateP:{sortFunction:rt,unsignedTxBuilder:(e,t,r)=>{const s=e.getProvider().getContext();return e.consolidateP({utxoSet:new l.utils.UtxoSet(t),amount:ot(t,s.baseTxFee),feeState:r})}},AddPermissionlessValidator:{sortFunction:Ze,unsignedTxBuilder:(e,t,r)=>e.addPermissionlessValidator({utxoSet:new l.utils.UtxoSet(t),nodeId:at,start:_e(),end:_e()+BigInt(1e3),weight:ot(t,e.getProvider().getContext().baseTxFee),subnetId:it,shares:5,feeState:r,fromAddresses:void 0,rewardAddresses:void 0,delegatorRewardAddresses:void 0,publicKey:Buffer.from(l.utils.hexToBuffer("0x8f95423f7142d00a48e1014a3de8d28907d420dc33b3052a6dee03a3f2941a393c2351e354704ca66a3fc29870282e15")),signature:Buffer.from(l.utils.hexToBuffer("0x86a3ab4c45cfe31cae34c1d06f212434ac71b1be6cfe046c80c162e057614a94a5bc9f1ded1a7029deb0ba4ca7c9b71411e293438691be79c2dbf19d1ca7c3eadb9c756246fc5de5b7b89511c7d7302ae051d9e03d7991138299b5ed6a570a98"))})},AddPermissionlessDelegator:{sortFunction:Ze,unsignedTxBuilder:(e,t,r)=>e.addPermissionlessDelegator({utxoSet:new l.utils.UtxoSet(t),nodeId:at,start:_e(),end:_e()+BigInt(1e3),weight:ot(t,e.getProvider().getContext().baseTxFee),subnetId:it,feeState:r})},ExportP:{sortFunction:tt,unsignedTxBuilder:(e,t,r)=>{const s=e.getProvider().getContext(),n=function({numberIns:e=1},t){const r=l.Common.createDimensions({bandwidth:161*e+254,dbRead:e,dbWrite:2+e,compute:200*e});return l.Common.dimensionsToGas(r,t)}({numberIns:t.length},s.platformFeeConfig.weights),a=r?n*r.price:s.baseTxFee;return e.exportP({amount:ot(t,a),utxoSet:new l.utils.UtxoSet(t),destination:"X",feeState:r})}},ImportP:{sortFunction:tt,unsignedTxBuilder:(e,t,r)=>e.importP({utxoSet:new l.utils.UtxoSet(t),sourceChain:"X",feeState:r})}};function ut(e){return x.validateString(e,!0)&&6===e.split("/").length}const ct=(e,t=!0)=>`${t?"m/":""}44'/9000'/${e}'/0/0`;function lt(e){if("object"!=typeof e||!e)throw new Error("feeState parameter is required post E-upgrade")}const{parse:pt,hexToBuffer:ht}=l.utils;class gt{constructor(e){this.provider=e}setProvider(e){this.provider=e}getProvider(){return this.provider}async getUTXOs(e){const t=this.provider.getApi(e);return Ke(this.getAddresses(e),t)}async getStake(){const e=this.provider.getApiP();return Le(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 Ke(this.getAddresses(e),r,{sourceChain:s,addresses:[]})}exportX(e,t,r,s){s=s||this.getCurrentAddress(r);const n=pt(s)[2],a=this.provider.getAvaxID(),i=l.TransferableOutput.fromNative(a,e,[n]),o=et(t.getUTXOs(),!0),d=this.provider.getChainID(r),u=this.getAddresses("X").map((e=>pt(e)[2])),c=pt(this.getChangeAddress("X"))[2];return l.avm.newExportTx(this.provider.getContext(),d,u,o,[i],{threshold:1,changeAddresses:[c]})}importP({utxoSet:e,sourceChain:t,toAddress:r,threshold:s,feeState:n,locktime:a}){const i=this.provider.getChainID(t),o=this.getAddresses("P").map((e=>pt(e)[2]));pt(this.getChangeAddress("P"))[2],r=r||this.getCurrentAddress("P");const d=pt(r)[2],u=e.getUTXOs();return lt(n),l.pvm.newImportTx({fromAddressesBytes:o,utxos:u,toAddressesBytes:[d],sourceChainId:i,threshold:s,feeState:n,locktime:a},this.provider.getContext())}importX(e,t,r){const s=this.provider.getChainID(t),n=this.getAddresses("X").map((e=>pt(e)[2])),a=pt(this.getChangeAddress("X"))[2];r=r||this.getCurrentAddress("X");const i=pt(r)[2];return l.avm.newImportTx(this.provider.getContext(),s,e.getUTXOs(),[i],n,{changeAddresses:[a]})}importC(e,r,s,n,a){const i=this.provider.getChainID(r),o=this.getAddresses("C").map((e=>pt(e)[2]));a=a||this.getAddressEVM();const d=Buffer.from(t.strip0x(a),"hex");return l.evm.newImportTxFromBaseFee(this.provider.getContext(),d,o,e.getUTXOs(),i,s,n)}exportC(e,t,r,s,n){const a=ht(this.getAddressEVM()),i=this.provider.getChainID(t);n=n||this.getCurrentAddress(t);const o=pt(n)[2],d=s/BigInt(1e9);return l.evm.newExportTxFromBaseFee(this.provider.getContext(),d,e,i,a,[o],r)}exportP({amount:e,utxoSet:t,destination:r,feeState:s,toAddress:n}){n=n||this.getCurrentAddress(r);const a=pt(n)[2],i=this.provider.getAvaxID(),o=l.TransferableOutput.fromNative(i,e,[a]),d=et(t.getUTXOs(),!0),u=this.provider.getChainID(r),c=this.getAddresses("P").map((e=>pt(e)[2])),p=pt(this.getChangeAddress("P"))[2];return lt(s),l.pvm.newExportTx({changeAddressesBytes:[p],fromAddressesBytes:c,utxos:d,outputs:[o],destinationChainId:u,feeState:s},this.provider.getContext())}consolidateP({utxoSet:e,amount:t,feeState:r,toAddress:s,options:n}){const a=rt(e.getUTXOs());s=s??this.getCurrentAddress("P");const i=pt(s)[2],o=this.provider.getContext(),d=[l.TransferableOutput.fromNative(o.avaxAssetID,t,[i])],u=this.getAddresses("P").map((e=>pt(e)[2])),c=pt(this.getChangeAddress("P"))[2],p=n?.changeAddresses??[c];return lt(r),l.pvm.newBaseTx({changeAddressesBytes:p,fromAddressesBytes:u,utxos:a,outputs:d,minIssuanceTime:n?.minIssuanceTime,memo:n?.memo,feeState:r},o)}baseTX({utxoSet:e,chain:t,toAddress:r,amountsPerAsset:s,feeState:n,options:a,fromAddresses:i}){const[o,d,u]=pt(r);if(o!==t||d!==this.provider.getHrp())throw new Error(`Invalid recipient address "${r}"`);const c=Object.entries(s).map((([e,t])=>l.TransferableOutput.fromNative(e,t,[u]))),p=et(e.getUTXOs(),!0),h=(i??this.getAddresses(t)).map((e=>pt(e)[2])),g=pt(this.getChangeAddress("P"))[2],m=a?.changeAddresses??[g];return"X"===t?l.avm.newBaseTx(this.provider.getContext(),h,p,c,a):(lt(n),l.pvm.newBaseTx({changeAddressesBytes:m,fromAddressesBytes:h,utxos:p,outputs:c,minIssuanceTime:a?.minIssuanceTime,memo:a?.memo,feeState:n},this.provider.getContext()))}convertSubnetToL1({utxoSet:e,chainId:t,subnetId:r,subnetAuth:s,feeState:n,address:a,validators:i,options:o,fromAddresses:d}){const u=(d??this.getAddresses("P")).map((e=>pt(e)[2])),c=pt(this.getChangeAddress("P"))[2],p=o?.changeAddresses??[c],h=i.map((({nodeId:e,pubKey:t,signature:r,balance:s,weight:n,deactivationOwner:a,remainingBalanceOwner:i})=>{const o=new l.pvmSerial.ProofOfPossession(Uint8Array.from(l.utils.hexToBuffer(t)),Uint8Array.from(l.utils.hexToBuffer(r))),d=l.PChainOwner.fromNative(i.addresses.map((e=>pt(e)[2])),i.threshold??1),u=l.PChainOwner.fromNative(a.addresses.map((e=>pt(e)[2])),a.threshold??1);return l.L1Validator.fromNative(e,n,s,o,d,u)}));return l.pvm.newConvertSubnetToL1Tx({changeAddressesBytes:p,validators:h,fromAddressesBytes:u,address:pt(a)[2],chainId:t,subnetId:r,subnetAuth:s,feeState:n,utxos:et(e.getUTXOs(),!0)},this.provider.getContext())}registerL1Validator({utxoSet:e,balance:t,signature:r,message:s,feeState:n,fromAddresses:a,options:i}){const o=(a??this.getAddresses("P")).map((e=>pt(e)[2])),d=pt(this.getChangeAddress("P"))[2],u=i?.changeAddresses??[d];return l.pvm.newRegisterL1ValidatorTx({utxos:et(e.getUTXOs(),!0),balance:t,blsSignature:Uint8Array.from(l.utils.hexToBuffer(r)),changeAddressesBytes:u,feeState:n,fromAddressesBytes:o,memo:i?.memo,message:Uint8Array.from(l.utils.hexToBuffer(s)),minIssuanceTime:i?.minIssuanceTime},this.provider.getContext())}setL1ValidatorWeight({utxoSet:e,feeState:t,message:r,options:s,fromAddresses:n}){const a=(n??this.getAddresses("P")).map((e=>pt(e)[2])),i=pt(this.getChangeAddress("P"))[2],o=s?.changeAddresses??[i];return l.pvm.newSetL1ValidatorWeightTx({utxos:et(e.getUTXOs(),!0),changeAddressesBytes:o,feeState:t,fromAddressesBytes:a,memo:s?.memo,message:Uint8Array.from(l.utils.hexToBuffer(r)),minIssuanceTime:s?.minIssuanceTime},this.provider.getContext())}disableL1Validator({utxoSet:e,feeState:t,options:r,fromAddresses:s,disableAuth:n,validationId:a}){const i=(s??this.getAddresses("P")).map((e=>pt(e)[2])),o=pt(this.getChangeAddress("P"))[2],d=r?.changeAddresses??[o];return l.pvm.newDisableL1ValidatorTx({disableAuth:n,validationId:a,utxos:et(e.getUTXOs(),!0),changeAddressesBytes:d,feeState:t,fromAddressesBytes:i,memo:r?.memo,minIssuanceTime:r?.minIssuanceTime},this.provider.getContext())}increaseL1ValidatorBalance({utxoSet:e,feeState:t,options:r,fromAddresses:s,balance:n,validationId:a}){const i=(s??this.getAddresses("P")).map((e=>pt(e)[2])),o=pt(this.getChangeAddress("P"))[2],d=r?.changeAddresses??[o];return l.pvm.newIncreaseL1ValidatorBalanceTx({balance:n,validationId:a,utxos:et(e.getUTXOs(),!0),changeAddressesBytes:d,feeState:t,fromAddressesBytes:i,memo:r?.memo,minIssuanceTime:r?.minIssuanceTime},this.provider.getContext())}addAutoRenewedValidator({utxoSet:e,nodeId:t,weight:r,shares:s,feeState:n,fromAddresses:a,rewardAddresses:i,delegatorRewardAddresses:o,ownerAddresses:d,publicKey:u,signature:c,autoCompoundRewardShares:p,period:h,options:g,locktime:m,threshold:f}){const x=Ze(e.getUTXOs()),v=(a??this.getAddresses("P")).map((e=>pt(e)[2])),w=(i??[this.getCurrentAddress("P")]).map((e=>pt(e)[2])),y=(o??[this.getCurrentAddress("P")]).map((e=>pt(e)[2])),A=(d??[this.getCurrentAddress("P")]).map((e=>pt(e)[2])),b=pt(this.getChangeAddress("P"))[2],T=g?.changeAddresses??[b];return l.pvm.newAddAutoRenewedValidatorTx({fromAddressesBytes:v,delegatorRewardsOwner:y,utxos:x,minIssuanceTime:g?.minIssuanceTime,memo:g?.memo,changeAddressesBytes:T,nodeId:t,weight:r,shares:s,feeState:n,publicKey:u,rewardAddresses:w,signature:c,locktime:m,threshold:f,ownerAddresses:A,autoCompoundRewardShares:p,period:h},this.provider.getContext())}setAutoRenewedValidatorConfig({utxoSet:e,feeState:t,validatorTxId:r,auth:s,autoCompoundRewardShares:n,period:a,fromAddresses:i,options:o}){const d=(i??this.getAddresses("P")).map((e=>pt(e)[2])),u=pt(this.getChangeAddress("P"))[2],c=o?.changeAddresses??[u];return l.pvm.newSetAutoRenewedValidatorConfigTx({utxos:et(e.getUTXOs(),!0),changeAddressesBytes:c,feeState:t,fromAddressesBytes:d,memo:o?.memo,minIssuanceTime:o?.minIssuanceTime,validatorTxId:r,auth:s,autoCompoundRewardShares:n,period:a},this.provider.getContext())}createBlockchain({utxoSet:e,subnetId:t,chainName:r,vmID:s,fxIds:n,genesisData:a,subnetAuth:i,feeState:o,options:d,fromAddresses:u}){const c=et(e.getUTXOs(),!0),p=(u??this.getAddresses("P")).map((e=>pt(e)[2])),h=pt(this.getChangeAddress("P"))[2],g=d?.changeAddresses??[h];return lt(o),l.pvm.newCreateChainTx({chainName:r,feeState:o,fromAddressesBytes:p,fxIds:n,genesisData:a,subnetAuth:i,subnetId:t,utxos:c,vmId:s,changeAddressesBytes:g},this.provider.getContext())}createSubnet({utxoSet:e,rewardAddresses:t,feeState:r,fromAddresses:s,options:n,threshold:a,locktime:i}){const o=et(e.getUTXOs(),!0),d=(s??this.getAddresses("P")).map((e=>pt(e)[2])),u=pt(this.getChangeAddress("P"))[2],c=n?.changeAddresses??[u],p=t.map((e=>pt(e)[2]));return lt(r),l.pvm.newCreateSubnetTx({fromAddressesBytes:d,changeAddressesBytes:c,utxos:o,minIssuanceTime:n?.minIssuanceTime,memo:n?.memo,feeState:r,threshold:a,locktime:i,subnetOwners:p},this.provider.getContext())}addSubnetValidator({utxoSet:e,nodeId:t,start:r,end:s,weight:n,subnetId:a,subnetAuth:i,feeState:o,fromAddresses:d,options:u}){const c=et(e.getUTXOs(),!0),p=(d??this.getAddresses("P")).map((e=>pt(e)[2])),h=pt(this.getChangeAddress("P"))[2],g=u?.changeAddresses??[h];return lt(o),l.pvm.newAddSubnetValidatorTx({changeAddressesBytes:g,fromAddressesBytes:p,utxos:c,minIssuanceTime:u?.minIssuanceTime,memo:u?.memo,nodeId:t,start:r,end:s,weight:n,subnetId:a,subnetAuth:i,feeState:o},this.provider.getContext())}addPermissionlessValidator({utxoSet:e,nodeId:t,start:r,end:s,weight:n,subnetId:a,shares:i,feeState:o,fromAddresses:d,rewardAddresses:u,delegatorRewardAddresses:c,publicKey:p,signature:h,options:g,threshold:m,locktime:f,stakingAssetId:x}){const v=Ze(e.getUTXOs()),w=(d??this.getAddresses("P")).map((e=>pt(e)[2])),y=(u??[this.getCurrentAddress("P")]).map((e=>pt(e)[2])),A=(c??[this.getCurrentAddress("P")]).map((e=>pt(e)[2]));if(!(a!==l.networkIDs.PrimaryNetworkID.toString()||p&&h))throw new Error("Must provide public key and signature for primary subnet.");const b=pt(this.getChangeAddress("P"))[2],T=g?.changeAddresses??[b];return lt(o),l.pvm.newAddPermissionlessValidatorTx({fromAddressesBytes:w,delegatorRewardsOwner:A,utxos:v,minIssuanceTime:g?.minIssuanceTime,memo:g?.memo,changeAddressesBytes:T,nodeId:t,start:r,end:s,weight:n,subnetId:a,shares:i,feeState:o,publicKey:p,rewardAddresses:y,signature:h,locktime:f,threshold:m,stakingAssetId:x},this.provider.getContext())}addPermissionlessDelegator({utxoSet:e,nodeId:t,start:r,end:s,weight:n,subnetId:a,fromAddresses:i,rewardAddresses:o,options:d,locktime:u,feeState:c,threshold:p,stakingAssetId:h}){const g=Ze(e.getUTXOs()),m=(i??this.getAddresses("P")).map((e=>pt(e)[2])),f=(o??[this.getCurrentAddress("P")]).map((e=>pt(e)[2])),x=pt(this.getChangeAddress("P"))[2],v=d?.changeAddresses??[x];return lt(c),l.pvm.newAddPermissionlessDelegatorTx({fromAddressesBytes:m,utxos:g,minIssuanceTime:d?.minIssuanceTime,memo:d?.memo,changeAddressesBytes:v,nodeId:t,start:r,end:s,weight:n,subnetId:a,rewardAddresses:f,locktime:u,stakingAssetId:h,threshold:p,feeState:c},this.provider.getContext())}removeSubnetValidator({utxoSet:e,nodeId:t,subnetId:r,subnetAuth:s,fromAddresses:n,feeState:a,options:i}){const o=et(e.getUTXOs(),!0),d=(n??this.getAddresses("P")).map((e=>pt(e)[2])),u=pt(this.getChangeAddress("P"))[2],c=i?.changeAddresses??[u];return lt(a),l.pvm.newRemoveSubnetValidatorTx({changeAddressesBytes:c,fromAddressesBytes:d,utxos:o,minIssuanceTime:i?.minIssuanceTime,memo:i?.memo,nodeId:t,subnetId:r,subnetAuth:s,feeState:a},this.provider.getContext())}transferSubnetOwnershipTx({utxoSet:e,subnetId:t,subnetAuth:r,subnetOwners:s,feeState:n,fromAddresses:a,options:i,threshold:o,locktime:d}){const u=et(e.getUTXOs(),!0),c=(a??this.getAddresses("P")).map((e=>pt(e)[2])),p=pt(this.getChangeAddress("P"))[2],h=i?.changeAddresses??[p],g=s.map((e=>pt(e)[2]));return lt(n),l.pvm.newTransferSubnetOwnershipTx({changeAddressesBytes:h,fromAddressesBytes:c,utxos:u,minIssuanceTime:i?.minIssuanceTime,memo:i?.memo,subnetId:t,subnetAuth:r,subnetOwners:g,feeState:n,threshold:o,locktime:d},this.provider.getContext())}}class mt extends gt{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 mt(o,d,s)}static fromMnemonic(e,t,r,s){if(!i.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");if(!ut(r)||!ut(t))throw new Error("Not valid derivation path. Make sure it is a valid BIP44 path starting with m/");const n=i.mnemonicToSeedSync(e),o=a.fromSeed(n),d=o.derivePath(r),u=o.derivePath(t);return mt.fromPublicKey(u.publicKey,d.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 ft={type:"zondax",getApp:e=>new v(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 xt(e){return!(await ft.getVersion(e)>="0.6.0")}const{parse:vt}=l.utils;class wt extends gt{constructor(e,t,r){super(r),this.avmXpub=e,this.accountNode=a.fromBase58(e),this.evmWallet=new mt(t,t,r)}accountNode;evmWallet;externalIndex=0;internalIndex=0;pubkeyCache={};static fromMnemonic(e,t){if(!i.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");const r=i.mnemonicToSeedSync(e),s=a.fromSeed(r),n=s.derivePath("m/44'/9000'/0'").neutered(),o=s.derivePath(R(0,L.BIP44)).neutered();return new wt(n.toBase58(),o.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(vt(e)[2])))}getExternalRawAddresses(){return this.getExternalAddresses("X").map((e=>Buffer.from(vt(e)[2])))}getRawAddressC(){return Buffer.from(vt(this.getCurrentAddress("C"))[2])}}const{isTransferOut:yt,isStakeableLockOut:At}=l.utils;function bt(e){const t=e.output;return yt(t)||At(t)?t.getOwners():[]}function Tt(e){const t=e.getTx();return l.avmSerial.isExportTx(t)||l.pvmSerial.isExportTx(t)?new Set(t.outs.map(bt).flat()):l.evmSerial.isExportTx(t)?new Set(t.exportedOutputs.map(bt).flat()):new Set((t.baseTx?.outputs??[]).map(bt).flat())}const{parse:St}=l.utils;class It extends wt{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]=St(s);return Buffer.from(n).toString("hex")}))}static async fromTransport(e,r){if(await xt(e))throw new Error("Unsupported ledger app version. Must be >= 0.6.0");const s=U(e),i=await ft.getXPUB(e,It.getAccountPath("X")),o=a.fromPublicKey(i.pubKey,i.chainCode),d=qt(0,"EVM",{pathSpec:L.BIP44}),u=await s.getAddress(d,!1),c=n.SigningKey.computePublicKey(Buffer.from(u.publicKey,"hex"),!0),l=Buffer.from(t.strip0x(c),"hex");return new It(o.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=>x.fromString(e))),l=[...Tt(t)].map((e=>Buffer.from(e))),p=[...this.filterOwnedAddresses(l).values()].map((e=>x.fromString(e)));return(await this.signTxBuffer({buffer:a,chain:i,transport:e.transport,signers:c,change:p})).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=x.fromString(It.getAccountPath(e.chain));return[...(await ft.signTx(e.transport,e.buffer,r,e.signers,t)).signatures.values()]}}const{strip0x:Pt}=l.utils;class Bt extends wt{constructor(e,t,r){const s=a.fromBase58(e).neutered(),i=new n.SigningKey(t),o=Buffer.from(Pt(i.compressedPublicKey),"hex");super(s.toBase58(),o,r),this.evmPrivKey=t,this.accountNode=a.fromBase58(e)}accountNode;static fromMnemonic(e,t){if(!i.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");const r=i.mnemonicToSeedSync(e),s=a.fromSeed(r),n=s.derivePath("m/44'/9000'/0'"),o=s.derivePath(qt(0,"EVM",{pathSpec:L.BIP44}));if(!o.privateKey)throw new Error("Unable to derive EVM private key.");return new Bt(n.toBase58(),o.privateKey,t)}async signTx(e){const t=this.getSigningKeys(e);return await l.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;return"EVM"===t.getVM()?[this.evmPrivKey]:[...this.getInternalPrivateKeys(s),...this.getExternalPrivateKeys(r)]}async signTxBuffer(e){throw new Error("not implemented")}async signMessage(e){throw new Error("not implemented")}}const{getPublicKey:Ct,sign:kt,signHash:Et}=l.secp256k1,{addChecksum:Vt}=l.utils;class Dt extends mt{privKeyXP;privKeyC;constructor(e,t,r){super(Buffer.from(Ct(e)),Buffer.from(Ct(t)),r),this.privKeyXP=e,this.privKeyC=t}static fromMnemonic(e,t,r,s){if(!i.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");if(!ut(r)||!ut(t))throw new Error("Not valid derivation path. Make sure it is a valid BIP44 path starting with m/");const n=i.mnemonicToSeedSync(e),o=a.fromSeed(n),d=o.derivePath(t),u=o.derivePath(r);if(!d.privateKey||!u.privateKey)throw new Error("Failed to generate private keys.");return new Dt(d.privateKey,u.privateKey,s)}async signMessage(e){const t=De(e.message),r=this.getSigningKey(e.chain);return Buffer.from(Vt(await Et(t,r)))}getSigningKey(e){return"C"===e?this.privKeyC:this.privKeyXP}async signTx(e){return await l.addTxSignatures({unsignedTx:e.tx,privateKeys:[this.privKeyC,this.privKeyXP]}),e.tx}async signTxBuffer(e){const t=this.getSigningKey(e.chain);return[Buffer.from(await kt(e.buffer,t))]}}const{strip0x:Mt}=l.utils;class Ot extends mt{constructor(e,t,r,s,a){const i=l.utils.strip0x(n.SigningKey.computePublicKey(e,!0)),o=l.utils.strip0x(n.SigningKey.computePublicKey(r,!0));if(super(Buffer.from(i,"hex"),Buffer.from(o,"hex"),a),this.pathXP=t,this.pathC=s,!ut(t)||!ut(s))throw new Error("Invalid path configuration.")}static async fromTransport(e,t,r,a){if(await xt(e))throw new Error("Ledger app not supported. Must be version >= 0.6.0");if(!ut(t)||!ut(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(Mt(o.publicKey),"hex"),c=Buffer.from(Mt(d.publicKey),"hex"),l=Buffer.from(Mt(n.SigningKey.computePublicKey(u,!0)),"hex"),p=Buffer.from(Mt(n.SigningKey.computePublicKey(c,!0)),"hex");return new Ot(p,t,l,r,a)}async signMessage(e){if(!e.transport||!e.message)throw new Error("Unable to sign message. Incomplete or invalid request.");const t=x.fromString(this.getAccountPath(e.chain)),r=x.fromString(this.getPartialSignerPath(e.chain)),s=De(e.message),n=(await ft.signHash(e.transport,s,t,[r])).signatures.get(r.toString(!0));if(!n)throw new Error("Failed to sign message.");return n}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=x.fromString(this.getAccountPath(e.chain)),r=x.fromString(this.getPartialSignerPath(e.chain));return[...(await ft.signTx(e.transport,e.buffer,t,[r],[r])).signatures.values()]}}const{parse:Kt}=l.utils;const Ut={C:60,X:9e3,P:9e3};var _t=Object.freeze({__proto__:null,AbstractProvider:fe,AddressWallet:class extends gt{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=>!He(e,!1))))throw new Error("Given addresses must be valid avalanche bech32 addresses without the chain alias prefix");if(!He(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(!He(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:ye,FujiContext:we,JsonRpcProvider:Ae,LedgerLiveSigner:class{constructor(e){this.accountIndices=e}#r(e){return`m/44'/${Ut[e]}'`}#s(e,t){return`${this.#r(e)}/${t}'`}async signMessage(e){if(!e.transport||!e.message)throw new Error("Unable to sign message. Incomplete or invalid request.");if(!this.accountIndices.length)throw new Error("No account indices provided. At least one account index is required to sign a message.");const t=x.fromString(this.#s(e.chain,this.accountIndices[0])),r=x.fromString("0/0"),s=De(e.message),n=(await ft.signHash(e.transport,s,t,[r])).signatures.get(r.toString(!0));if(!n)throw new Error("Failed to sign message.");return n}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":"AVM"===r?"X":"P",a=new Set(e.externalIndices??this.accountIndices);for(const r of a){const a=x.fromString(this.#s(n,r));(await this.#n(a,{buffer:s,chain:n,transport:e.transport})).forEach((e=>{t.addSignature(e)}))}return t}async#n(e,t){if(!t.transport)throw new Error("Ledger transport not provided");return[...(await ft.signTx(t.transport,t.buffer,e,t.signers??[x.fromString("0/0")],t.change??[x.fromString("0/0")])).signatures.values()]}async signTxBuffer(e){if(!this.accountIndices.length)throw new Error("No account indices provided. At least one account index is required to sign a tx buffer.");const t=x.fromString(this.#s(e.chain,this.accountIndices[0]));return this.#n(t,e)}},LedgerSigner:Ot,LedgerWallet:It,MainnetContext:ve,MnemonicWallet:Bt,MnemonicWalletVoid:wt,P_CHAIN_TX_SIZE_LIMIT:65536,SimpleLedgerSigner:class{constructor(e,t,r,s=L.BIP44){this.activeAccountIndex=e,this.provider=t,this.pathSpec=s,r&&(this.accountNode=a.fromBase58(r))}accountNode;reSerializeTx(e,t){return e instanceof l.EVMUnsignedTx||"C"===t?l.EVMUnsignedTx.fromJSON(JSON.stringify(e.toJSON())):l.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'/${this.activeAccountIndex}'`;case"C":return`m/44'/60'/${this.pathSpec===L.LedgerLive?this.activeAccountIndex: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="EVM"===e.tx.getVM()?`0/${this.pathSpec===L.LedgerLive?0:this.activeAccountIndex}`:"0/0",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,r){return 0===t.size?[x.fromString("C"===r?`0/${this.pathSpec===L.LedgerLive?0:this.activeAccountIndex}`:"0/0")]:e.reduce(((e,r)=>{const s=t.get(Buffer.from(r).toString("hex"));return s&&e.push(x.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,t),i=this.getAddressBipPaths([...Tt(r)],n,t);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=x.fromString(this.getAccountPath(e.chain));return[...(await ft.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="C"===e.chain?this.activeAccountIndex:0,r=e.signer||x.fromString(`0/${t}`);if(2!=r.toPathArray().length)throw new Error("Given signer path must have a depth of 2. Ex. 0/0, 0/1");const s=De(e.message),n=(await ft.signHash(e.transport,s,x.fromString(this.getAccountPath(e.chain)),[r])).signatures.get(r.toString(!0));if(!n)throw new Error("Failed to sign message.");return n}},SimpleSigner:class{accountNodeXP;signerNodeEVM;activeAccountIndex;constructor(e,t){if(!i.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");if(t<0||t%1!=0)throw new Error("Invalid account index.");const r=i.mnemonicToSeedSync(e),s=a.fromSeed(r);this.accountNodeXP=s.derivePath(`m/44'/9000'/${t}'`);const n=s.derivePath(qt(t,"EVM",{pathSpec:L.BIP44}));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/0");if(!s.privateKey)throw new Error("Unable to derive X/P private key.");const n=this.getAdditionalKeys(t,!1),a=this.getAdditionalKeys(r,!0);return[s.privateKey,...n,...a]}async signTx(e){const{tx:t,externalIndices:r,internalIndices:s}=e,n=t.getVM(),a=this.getSigningKeys(n,r,s);if(!a?.length)throw new Error("Unable to sign transaction: signing keys are missing.");return await l.addTxSignatures({unsignedTx:t,privateKeys:a}),e.tx}async signTxBuffer(e){throw new Error("Not implemented")}getActiveAccountNode(e){switch(e){case"X":case"P":return this.accountNodeXP.derivePath("0/0");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=De(e.message),s=await l.secp256k1.signHash(r,t.privateKey);return Buffer.from(s)}},SizeSupportedTx:nt,StaticSigner:Dt,TxType:Y,WalletAbstract:gt,WalletVoid:mt,addSignaturesToAvalancheTx:async({transactionHex:e,signatures:t,chainAlias:r,provider:s,utxos:n})=>{if(!t.length)throw new Error("signatures were not provided");const a=await pe({transactionHex:e,chainAlias:r,provider:s,utxos:n});await Promise.all(t.map((e=>a.addSignature(e))));const i=a.getCredentials(),o=a.getSigIndices().reduce(((e,t,r)=>{const s=t.map((e=>{const t=i[r]?.toJSON()[e];if(!t)throw new Error(`Failed to sign [${r}, ${e}]`);return t}));return e.push(new l.Credential(s)),e}),[]),d=new l.UnsignedTx(a.getTx(),a.getInputUtxos(),a.addressMaps,o);return{signedTxHex:de(new l.avaxSerial.SignedTx(a.getTx(),o)),hasAllSignatures:d.hasAllSignatures()}},convertGlacierUtxo:Pe,createAvalancheEvmUnsignedTx:async({txBytes:e,fromAddress:t,vm:r,credentials:s,utxos:n})=>{const a=Be(r,e),i=Ce(t)[2],o=ke(i);if(l.evmSerial.isExportTx(a))return new l.EVMUnsignedTx(a,[],new Ee([Ve.fromJSON([[o,0]])]),s);if(l.evmSerial.isImportTx(a)){const e=Ee.fromTransferableInputs(a.importedInputs,n,BigInt(Math.floor((new Date).getTime()/1e3)),[i]);return new l.UnsignedTx(a,n,e,s)}throw new Error("Unsupported transaction type")},createAvalancheUnsignedTx:te,digestMessage:De,emptySignature:ie,getAddressFromXpub:function(e,t,r,s,n=!1){if(t<0)throw new Error("Account index must be >= 0");const i=n?"1":"0",o=a.fromBase58(e).derivePath(`${i}/${t}`).publicKey;return r.getAddress(o,s)},getAddressPublicKeyFromXpub:function(e,t){if(t<0)throw new Error("Account index must be >= 0");return a.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=_e();return n.forEach((e=>{const t=Ne(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},getAvalancheDerivationPath:ct,getLedgerProvider:async function(e){return ft},getMaximumUtxoSet:function({wallet:e,utxos:t,sizeSupportedTx:r,limit:s=65536,feeState:n}){const{sortFunction:a,unsignedTxBuilder:i}=dt[r],o=_e(),d=a(t.filter((e=>{const{locktime:t,stakeableLocktime:s}=st(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*st(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(st)}),s+1}}),s);return-1===u?[]:d.slice(0,u+1)},getPaginatedUTXOs:Ue,getPchainUnixNow:async function(e){const t=await e.getApiP().getTimestamp(),r=new Date(t.timestamp),s=Math.floor(r.getTime()/1e3);return BigInt(s)},getStakeForAddresses:Le,getStakedAssetBalance:function(e){const{stakedOutputs:t}=e,r={unlockedStaked:BigInt(0),lockedStaked:BigInt(0),total:BigInt(0)};return t.forEach((e=>{r[l.utils.isStakeableLockOut(e)?"lockedStaked":"unlockedStaked"]+=e.amount()})),r.total=r.lockedStaked+r.unlockedStaked,r},getUTXOsForAddresses:Ke,getUnixNow:_e,getUtxosByTxFromGlacier:async({transactionHex:e,chainAlias:t,network:r,url:s,token:n,headers:a})=>{const i=Q(t),o=Xe(e),d=Fe(i,o);if(l.evmSerial.isExportTx(d))return[];const u=(e=>{if(l.evmSerial.isImportTx(e)||l.avmSerial.isImportTx(e)||l.pvmSerial.isImportTx(e))return e.sourceChain.toString();const t=e.getVM();switch(t){case l.EVM:return h.BlockchainId.C_CHAIN;case l.AVM:return h.BlockchainId.X_CHAIN;case l.PVM:return h.BlockchainId.P_CHAIN;default:throw new Error(`Unable to get chain for VM type "${t}"`)}})(d),c=Re(d),p=new h.Glacier({BASE:s,TOKEN:n,HEADERS:a}),g=[...new Set(c.map((e=>e.utxoID.txID.toString())))],m=await Promise.all(g.map((e=>p.primaryNetworkTransactions.getTxByHash({blockchainId:u,network:r,txHash:e}))));return c.reduce(((e,t)=>{const s=m.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=Pe(n,r);return e.push(a),e}),[])},getVmByChainAlias:Q,getXpubFromMnemonic:function(e,t){if(!i.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");const r=i.mnemonicToSeedSync(e);return a.fromSeed(r).derivePath(`44'/9000'/${t}'`).neutered().toBase58()},isAddAutoRenewedValidatorTx:function(e){return"add_auto_renewed_validator"===e.type},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:He,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:xt,isRegisterL1ValidatorTx:function(e){return"register_l1_validator"===e.type},isRemoveSubnetValidatorTx:function(e){return"remove_subnet_validator"===e.type},isSetAutoRenewedValidatorConfigTx:function(e){return"set_auto_renewed_validator_config"===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,baseFee:n}={}){const a=t.getContext(),i=e.getTx(),o=(e=>{for(const t of Object.values(je)){const r=t(e);if(null!==r)return r}throw new Error("no parser found for tx")})(i),d=Ge(i,a),u=Je(i),c=ze(i).get(a.avaxAssetID)??BigInt(0),p=d.get(a.avaxAssetID)??BigInt(0),h=u.get(a.avaxAssetID)??BigInt(0);let g=n;void 0===g&&(g=0n,l.evmSerial.isImportExportTx(i)?(g=await t.getApiC().getBaseFee()/BigInt(1e9),0n===g&&(g=1n)):"PVM"===i.vm&&(g=await t.getApiP().getFeeState().then((e=>e.price)).catch((()=>BigInt(0)))));const{isValid:m,txFee:f}=Ye({unsignedTx:e,context:a,burnedAmount:p,baseFee:g,feeTolerance:s});return await o({feeData:{totalAvaxBurned:p,totalAvaxOutput:h,totalAvaxInput:c,isValidAvaxBurnedAmount:m,txFee:f,baseFee:g},assetId:a.avaxAssetID,provider:t,currentAddress:r})},populateCredential:oe,signedTxToHex:de,sortUTXOsByAmount:et,sortUTXOsByAmountAscending:rt,sortUTXOsByAmountDescending:tt,sortUTXOsStaking:Ze,verifyDerivationPath:ut});const Nt=(e,t)=>{const r=y.getTransactionDecoder().decode(y.getBase64Encoder().encode(e)),s=y.getCompiledTransactionMessageDecoder().decode(r.messageBytes);return y.decompileTransactionMessageFetchingLookupTables(s,t)},Lt=Symbol(),Rt=(e,t)=>String(e)===String(t),Xt=async({mint:e,provider:t})=>{const r=y.address(e),{value:s}=await t.getAccountInfo(r,{encoding:"base64"}).send();if(!s)throw new Error(`Mint account not found: ${e}`);const n=s.owner;if(Rt(n,b.TOKEN_PROGRAM_ADDRESS))return b.TOKEN_PROGRAM_ADDRESS;if(Rt(n,T.TOKEN_2022_PROGRAM_ADDRESS))return T.TOKEN_2022_PROGRAM_ADDRESS;throw new Error(`Unsupported token program for mint ${e}: ${String(n)}`)},Ft=async({mint:e,owner:t,provider:r,tokenProgram:s})=>{const n=s??await Xt({mint:e,provider:r}),[a]=await b.findAssociatedTokenPda({mint:y.address(e),owner:y.address(t),tokenProgram:n}),i=await r.getAccountInfo(a,{encoding:"base64"}).send();return{address:a,exists:Boolean(i.value),info:i}},Ht=(e,t=!0)=>`${t?"m/":""}44'/501'/${e}'/0'`;class $t{#a;#i;constructor(e){this.#a=Uint8Array.from(e),this.#i=y.address(P.base58.encode(I.ed25519.getPublicKey(this.#a)))}static fromMnemonic(e,t){const r=i.mnemonicToSeedSync(e),s=B.fromMasterSeed(Uint8Array.from(r)).derive(`m/44'/501'/${t}'/0'`);return new $t(Buffer.from(s.privateKey))}#o(e){try{return y.getCompiledTransactionMessageDecoder().decode(e),!0}catch{return!1}}async signMessage(e){const t=P.base64.decode(e);if(this.#o(t))throw new Error("Cannot use signMessage() to sign transactions!");return P.base64.encode(I.ed25519.sign(t,this.#a))}async signTx(e,t){const r=await Nt(e,t),{signatures:s,messageBytes:n,...a}=y.compileTransaction(r);if(!this.#d(s))return e;const i=P.base58.encode(I.ed25519.sign(Uint8Array.from(n),this.#a));return y.assertIsSignature(i),y.getBase64EncodedWireTransaction({...a,messageBytes:n,signatures:{...s,[this.#i]:P.base58.decode(i)}})}#d(e){return this.#i in e&&!e[this.#i]}}function qt(e,t,r={withRoot:!0}){if(e<0)throw new Error("Account index can not be less than 0.");switch(t){case"EVM":if(!r.pathSpec)throw new Error("Path spec is required for EVM: either BIP44 or Ledger Live");return R(e,r.pathSpec,r.withRoot);case"AVM":case"PVM":return ct(e,r.withRoot);case"SVM":return Ht(e,r.withRoot);default:throw new Error(`Unknown derivation path for VM: ${t}`)}}class Wt extends z{keypair;constructor(t,r){const s=e.ECPair.fromPrivateKey(t);super(s.publicKey,r),this.keypair=s}static async fromMnemonic(e,t,r,s=L.BIP44){if(t<0)throw new Error("Account index must be >= 0");if(!i.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");const n=await i.mnemonicToSeed(e),o=a.fromSeed(n),d=qt(t,"EVM",{pathSpec:s}),u=o.derivePath(d);if(!u.privateKey)throw new Error("Unable to derive private key from the given mnemonic.");return new Wt(u.privateKey,r)}signTx(e,t){const r=V(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 Wt(s,t)}signPsbt(e){return e.signAllInputs(this.keypair),e.validateSignaturesOfAllInputs(),e.finalizeAllInputs(),e.extractTransaction()}}const jt=e.networks;exports.Avalanche=_t,exports.BitcoinLedgerWallet=class extends z{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 u.AppClient(e)}(this.transport),s=this.ecPair.publicKey,n=this.provider.getNetwork(),a=await r.getMasterFingerprint(),i=G(e,t,n,Buffer.from(a,"hex"),s,this.derivationPath),{policy:o,hmac:d}=this.walletPolicyDetails,c=await r.signPsbt(i,o,d),l=J(i,n,s,this.derivationPath);if(c.forEach((e=>{const[t,r]=e;l.updateInput(t,{partialSig:[{signature:r.signature,pubkey:r.pubkey}]})})),!l.validateSignaturesOfAllInputs())throw new Error("Failed to validate signatures");return l.finalizeAllInputs(),l.extractTransaction()}},exports.BitcoinProvider=class extends E{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.#u=new t.HttpClient(s||o,i);const d=e?"https://btc.nownodes.io":"https://btc-testnet.nownodes.io";this.#c=new t.HttpClient(n||d,i)}#u;#c;async#l(e,t){return this.isMainnet||t?(await Promise.all(e.map((e=>this.#c.post("",e,{},this.extraParams))))).flat():this.#c.post("",e,{},this.extraParams)}async getTxHex(e){return(await this.#u.post(`/api/v2/tx/${e}`,{},{},this.extraParams)).hex}async getUTXOs(e,t=!0,r){const s=await this.#u.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.#c.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.#l(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.#u.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.#c.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.#l([{...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.#c.post("",{jsonrpc:"2.0",id:"nownodes",method:"sendrawtransaction",params:[e]},{},this.extraParams).then((e=>e.result))}async getTransaction(e){const t=await this.#u.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.#u.post(`/api/v2/address/${e}`,{},{},this.extraParams),r=t.txids?.slice(0,25)??[];return await Promise.allSettled(r.map((async t=>{try{const r=await this.#u.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(),p=d?l:c,h=p.filter(((e,t)=>p.indexOf(e)===t)),g=s.filter((e=>(e.addresses?.length||0)>1)).length>0;return{addresses:h,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=E,exports.BitcoinWallet=Wt,exports.BitcoinWalletAbstract=z,exports.BitcoinWalletVoid=class extends z{constructor(e,t){super(e,t)}signTx(e){throw new Error("Void wallets can not sign.")}},exports.BtcNetworks=jt,exports.DerivationPath=L,exports.ETH_ACCOUNT_PATH=N,exports.ETH_COIN_PATH=_,exports.JsonRpcBatchInternal=q,exports.LedgerSigner=j,exports.SolanaLedgerSigner=class{#p;#h;constructor(e,t){this.#p=Ht(e,!1),this.#h=t}async signTx(e,t){const r=await Nt(e,t),{signatures:s,messageBytes:n,...a}=y.compileTransaction(r),i=new S(this.#h),{address:o}=await i.getAddress(this.#p),d=y.address(P.base58.encode(Uint8Array.from(o)));if(!this.#d(d,s))return e;const{signature:u}=await i.signTransaction(this.#p,Buffer.from(n)),c=P.base58.encode(Uint8Array.from(u));return y.assertIsSignature(c),y.getBase64EncodedWireTransaction({...a,messageBytes:n,signatures:{...s,[d]:P.base58.decode(c)}})}#d(e,t){return e in t&&!t[e]}},exports.SolanaSigner=$t,exports.addEncodedSigToPsbt=function(e,t,r,s){const n=[{pubkey:t,signature:e}];r.updateInput(s,{partialSig:n})},exports.compileSolanaTx=e=>y.compileTransaction(e),exports.createPSBTV2=G,exports.createPsbt=V,exports.createTransferTx=O,exports.createWalletPolicy=function(e,t,r,s){const n=new u.DefaultWalletPolicy("wpkh(@0/**)",`[${e}/44'/60'/${t}']${r}`);return new u.WalletPolicy(s,"wpkh(@0/**)",n.keys)},exports.deserializeTransactionMessage=Nt,exports.formatAddressForNetworkBech32=function(t,r){const s=e.address.fromBech32(t);return e.address.toBech32(s.data,s.version,r.bech32)},exports.getAddressDerivationPath=qt,exports.getAddressFromXPub=function(e,t){const r=W(e,t);return n.computeAddress(`0x${r.toString("hex")}`)},exports.getAddressPrivateKeyFromXPriv=function(e,t){const r=a.fromBase58(e).derivePath(`0/${t}`);if(!r.privateKey)throw new Error("Unable to derive private key.");return r.privateKey},exports.getAddressPublicKeyFromXPub=W,exports.getAppEth=U,exports.getBech32Address=K,exports.getBech32AddressFromXPub=function(e,t,r){return K(W(e,t),r)},exports.getBtcAddressFromPubKey=function(e,r){const s=t.strip0x(n.SigningKey.computePublicKey(e,!0));return K(Buffer.from(s,"hex"),r)},exports.getEVMDerivationPath=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=U(e),n=await s.getAddress(r??N,t,!0),a=new w;return a.publicKey=C.Buffer.from(n.publicKey,"hex"),a.chainCode=C.Buffer.from(n.chainCode,"hex"),a.publicExtendedKey},exports.getMaxTransferAmount=function(e,t,r,s){const n=k(e);if(!n)return 0;const{fee:a}=D(t,r,n,s,e);return n-a},exports.getPubKeyFromTransport=async function(e,t,r,s="EVM"){const n=U(e),a="EVM"===s?qt(t,s,{pathSpec:r}):qt(t,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(l.secp256k1.getPublicKey(t))}finally{t.fill(0)}},exports.getSolanaDerivationPath=Ht,exports.getSolanaProvider=({isTestnet:e,rpcUrl:t})=>{const r=y.createSolanaRpc(e?y.devnet(t):y.mainnet(t));return new Proxy(r,{get:(e,t,r)=>t===Lt||("then"===t||"catch"===t||"finally"===t?e:Reflect.get(e,t,r))})},exports.getSolanaPublicKeyFromLedger=async(e,t)=>{const r=new S(t),{address:s}=await r.getAddress(Ht(e,!1));return s},exports.getTransferTxDetails=function(e,t,r,s,n){const a=D(e,t,r,s,M(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),R(t,r))},exports.getXpubFromMnemonic=async function(e){if(!i.validateMnemonic(e))throw new Error("Invalid mnemonic phrase.");const t=await i.mnemonicToSeed(e);return a.fromSeed(t).derivePath(N).neutered().toBase58()},exports.isERC20Transfer=H,exports.isNativeTxn=F,exports.isSolanaProvider=e=>!(!e||"object"!=typeof e)&&!0===e[Lt],exports.maybeGetAssociatedTokenAccount=Ft,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())&&H(e,n)?s(e,{type:"erc20",contractAddress:e.to}):F(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=J,exports.quitLedgerApp=async function(e){return await e.send(176,167,0,0)},exports.resolveTokenProgramForMint=Xt,exports.selectUtxos=D,exports.serializeSolanaTx=e=>y.getBase64EncodedWireTransaction(e),exports.transferSol=async({from:e,to:t,amount:r,provider:s})=>{const{value:n}=await s.getLatestBlockhash().send(),a=[A.getTransferSolInstruction({source:y.createNoopSigner(y.address(e)),destination:y.address(t),amount:r})];return y.pipe(y.createTransactionMessage({version:0}),(e=>y.setTransactionMessageLifetimeUsingBlockhash(n,e)),(t=>y.setTransactionMessageFeePayer(y.address(e),t)),(e=>y.appendTransactionMessageInstructions(a,e)))},exports.transferToken=async({from:e,to:t,mint:r,amount:s,decimals:n,provider:a})=>{const i=await Xt({mint:r,provider:a}),o=String(i)===String(T.TOKEN_2022_PROGRAM_ADDRESS);const{address:d}=await Ft({mint:r,owner:e,provider:a,tokenProgram:i}),{address:u,exists:c}=await Ft({mint:r,owner:t,provider:a,tokenProgram:i}),l=[];c||l.push(o?T.getCreateAssociatedTokenIdempotentInstruction({payer:y.createNoopSigner(y.address(e)),mint:y.address(r),owner:y.address(t),ata:u,tokenProgram:T.TOKEN_2022_PROGRAM_ADDRESS}):b.getCreateAssociatedTokenIdempotentInstruction({payer:y.createNoopSigner(y.address(e)),mint:y.address(r),owner:y.address(t),ata:u})),l.push(o?T.getTransferCheckedInstruction({amount:s,authority:y.createNoopSigner(y.address(e)),decimals:n,mint:y.address(r),destination:u,source:d}):b.getTransferCheckedInstruction({amount:s,authority:y.createNoopSigner(y.address(e)),decimals:n,mint:y.address(r),destination:u,source:d}));const{value:p}=await a.getLatestBlockhash().send();return y.pipe(y.createTransactionMessage({version:0}),(e=>y.setTransactionMessageLifetimeUsingBlockhash(p,e)),(t=>y.setTransactionMessageFeePayer(y.address(e),t)),(e=>y.appendTransactionMessageInstructions(l,e)))};
package/dist/index.d.ts CHANGED
@@ -567,7 +567,7 @@ type ChainIDAlias = 'X' | 'P' | 'C';
567
567
  /**
568
568
  * Types for parsed transaction
569
569
  */
570
- type Tx = AddValidatorTx | AddDelegatorTx | ExportTx | ImportTx | BaseTx$1 | CreateSubnetTx | CreateChainTx | AddSubnetValidatorTx | RemoveSubnetValidatorTx | AddPermissionlessValidatorTx | AddPermissionlessDelegatorTx | TransformSubnetTx | TransferSubnetOwnershipTx$1 | ConvertSubnetToL1Tx | RegisterL1ValidatorTx | SetL1ValidatorWeightTx | DisableL1ValidatorTx | IncreaseL1ValidatorBalanceTx | UnknownTx;
570
+ type Tx = AddValidatorTx | AddDelegatorTx | ExportTx | ImportTx | BaseTx$1 | CreateSubnetTx | CreateChainTx | AddSubnetValidatorTx | RemoveSubnetValidatorTx | AddPermissionlessValidatorTx | AddPermissionlessDelegatorTx | TransformSubnetTx | TransferSubnetOwnershipTx$1 | ConvertSubnetToL1Tx | RegisterL1ValidatorTx | SetL1ValidatorWeightTx | DisableL1ValidatorTx | IncreaseL1ValidatorBalanceTx | AddAutoRenewedValidatorTx | SetAutoRenewedValidatorConfigTx | UnknownTx;
571
571
  interface FeeData {
572
572
  totalAvaxBurned: bigint;
573
573
  totalAvaxOutput: bigint;
@@ -593,6 +593,8 @@ declare enum TxType {
593
593
  SetL1ValidatorWeight = "set_l1_validator_weight",
594
594
  IncreaseL1ValidatorBalance = "increase_l1_validator_balance",
595
595
  DisableL1Validator = "disable_l1_validator",
596
+ AddAutoRenewedValidator = "add_auto_renewed_validator",
597
+ SetAutoRenewedValidatorConfig = "set_auto_renewed_validator_config",
596
598
  AddSubnetValidator = "add_subnet_validator",
597
599
  RemoveSubnetValidator = "remove_subnet_validator",
598
600
  AddPermissionlessValidator = "add_permissionless_validator",
@@ -700,6 +702,28 @@ interface DisableL1ValidatorTx extends TxBase {
700
702
  type: TxType.DisableL1Validator;
701
703
  validationId: string;
702
704
  }
705
+ interface AddAutoRenewedValidatorTx extends TxBase {
706
+ type: TxType.AddAutoRenewedValidator;
707
+ nodeID: string;
708
+ stake: bigint;
709
+ stakeOuts: readonly TransferableOutput[];
710
+ rewardOwner: OutputOwners;
711
+ delegationRewardOwner: OutputOwners;
712
+ owner: OutputOwners;
713
+ delegationFee: number;
714
+ weight: bigint;
715
+ autoCompoundRewardShares: number;
716
+ period: bigint;
717
+ signer: pvmSerial.Signer | pvmSerial.SignerEmpty;
718
+ publicKey: undefined | string;
719
+ signature: undefined | string;
720
+ }
721
+ interface SetAutoRenewedValidatorConfigTx extends TxBase {
722
+ type: TxType.SetAutoRenewedValidatorConfig;
723
+ txId: string;
724
+ autoCompoundRewardShares: number;
725
+ period: bigint;
726
+ }
703
727
  interface AddPermissionlessValidatorTx extends TxBase {
704
728
  type: TxType.AddPermissionlessValidator;
705
729
  nodeID: string;
@@ -772,6 +796,8 @@ declare function isAddPermissionlessValidatorTx(tx: Tx): tx is AddPermissionless
772
796
  declare function isAddPermissionlessDelegatorTx(tx: Tx): tx is AddPermissionlessDelegatorTx;
773
797
  declare function isTransformSubnetTx(tx: Tx): tx is TransformSubnetTx;
774
798
  declare function isTransferSubnetOwnershipTx(tx: Tx): tx is TransferSubnetOwnershipTx$1;
799
+ declare function isAddAutoRenewedValidatorTx(tx: Tx): tx is AddAutoRenewedValidatorTx;
800
+ declare function isSetAutoRenewedValidatorConfigTx(tx: Tx): tx is SetAutoRenewedValidatorConfigTx;
775
801
 
776
802
  declare class AbstractProvider {
777
803
  protected baseUrl: string;
@@ -987,6 +1013,34 @@ type RemoveSubnetValidator = {
987
1013
  fromAddresses?: string[];
988
1014
  options?: Common.SpendOptions;
989
1015
  };
1016
+ type AddAutoRenewedValidator = {
1017
+ utxoSet: utils.UtxoSet;
1018
+ nodeId: string;
1019
+ weight: bigint;
1020
+ shares: number;
1021
+ feeState: pvm.FeeState;
1022
+ fromAddresses?: string[];
1023
+ rewardAddresses?: string[];
1024
+ delegatorRewardAddresses?: string[];
1025
+ ownerAddresses?: string[];
1026
+ publicKey: Buffer;
1027
+ signature: Buffer;
1028
+ autoCompoundRewardShares: number;
1029
+ period: bigint;
1030
+ options?: Common.SpendOptions;
1031
+ locktime?: bigint;
1032
+ threshold?: number;
1033
+ };
1034
+ type SetAutoRenewedValidatorConfig = {
1035
+ utxoSet: utils.UtxoSet;
1036
+ feeState: pvm.FeeState;
1037
+ validatorTxId: string;
1038
+ auth: number[];
1039
+ autoCompoundRewardShares: number;
1040
+ period: bigint;
1041
+ fromAddresses?: string[];
1042
+ options?: Common.SpendOptions;
1043
+ };
990
1044
  type TransferSubnetOwnershipTx = {
991
1045
  utxoSet: utils.UtxoSet;
992
1046
  subnetId: string;
@@ -1080,6 +1134,8 @@ declare abstract class WalletAbstract {
1080
1134
  setL1ValidatorWeight({ utxoSet, feeState, message, options, fromAddresses, }: SetL1ValidatorWeight): Common.UnsignedTx;
1081
1135
  disableL1Validator({ utxoSet, feeState, options, fromAddresses, disableAuth, validationId, }: DisableL1Validator): Common.UnsignedTx;
1082
1136
  increaseL1ValidatorBalance({ utxoSet, feeState, options, fromAddresses, balance, validationId, }: IncreaseL1ValidatorBalance): Common.UnsignedTx;
1137
+ addAutoRenewedValidator({ utxoSet, nodeId, weight, shares, feeState, fromAddresses, rewardAddresses, delegatorRewardAddresses, ownerAddresses, publicKey, signature, autoCompoundRewardShares, period, options, locktime, threshold, }: AddAutoRenewedValidator): Common.UnsignedTx;
1138
+ setAutoRenewedValidatorConfig({ utxoSet, feeState, validatorTxId, auth, autoCompoundRewardShares, period, fromAddresses, options, }: SetAutoRenewedValidatorConfig): Common.UnsignedTx;
1083
1139
  createBlockchain({ utxoSet, subnetId, chainName, vmID, fxIds, genesisData, subnetAuth, feeState, options, fromAddresses, }: CreateChain): Common.UnsignedTx;
1084
1140
  createSubnet({ utxoSet, rewardAddresses, feeState, fromAddresses, options, threshold, locktime, }: CreateSubnet): Common.UnsignedTx;
1085
1141
  addSubnetValidator({ utxoSet, nodeId, start, end, weight, subnetId, subnetAuth, feeState, fromAddresses, options, }: AddSubnetValidator): Common.UnsignedTx;
@@ -1788,6 +1844,7 @@ declare const getAvalancheDerivationPath: (accountIndex: number, withRoot?: bool
1788
1844
 
1789
1845
  type index_AbstractProvider = AbstractProvider;
1790
1846
  declare const index_AbstractProvider: typeof AbstractProvider;
1847
+ type index_AddAutoRenewedValidatorTx = AddAutoRenewedValidatorTx;
1791
1848
  type index_AddDelegatorTx = AddDelegatorTx;
1792
1849
  type index_AddPermissionlessDelegatorTx = AddPermissionlessDelegatorTx;
1793
1850
  type index_AddPermissionlessValidatorTx = AddPermissionlessValidatorTx;
@@ -1827,6 +1884,7 @@ declare const index_P_CHAIN_TX_SIZE_LIMIT: typeof P_CHAIN_TX_SIZE_LIMIT;
1827
1884
  type index_ParseOptions = ParseOptions;
1828
1885
  type index_RegisterL1ValidatorTx = RegisterL1ValidatorTx;
1829
1886
  type index_RemoveSubnetValidatorTx = RemoveSubnetValidatorTx;
1887
+ type index_SetAutoRenewedValidatorConfigTx = SetAutoRenewedValidatorConfigTx;
1830
1888
  type index_SetL1ValidatorWeightTx = SetL1ValidatorWeightTx;
1831
1889
  type index_SignMessageRequest = SignMessageRequest;
1832
1890
  type index_SignTxBufferRequest = SignTxBufferRequest;
@@ -1871,6 +1929,7 @@ declare const index_getUnixNow: typeof getUnixNow;
1871
1929
  declare const index_getUtxosByTxFromGlacier: typeof getUtxosByTxFromGlacier;
1872
1930
  declare const index_getVmByChainAlias: typeof getVmByChainAlias;
1873
1931
  declare const index_getXpubFromMnemonic: typeof getXpubFromMnemonic;
1932
+ declare const index_isAddAutoRenewedValidatorTx: typeof isAddAutoRenewedValidatorTx;
1874
1933
  declare const index_isAddDelegatorTx: typeof isAddDelegatorTx;
1875
1934
  declare const index_isAddPermissionlessDelegatorTx: typeof isAddPermissionlessDelegatorTx;
1876
1935
  declare const index_isAddPermissionlessValidatorTx: typeof isAddPermissionlessValidatorTx;
@@ -1888,6 +1947,7 @@ declare const index_isIncreaseL1ValidatorBalance: typeof isIncreaseL1ValidatorBa
1888
1947
  declare const index_isObsidianApp: typeof isObsidianApp;
1889
1948
  declare const index_isRegisterL1ValidatorTx: typeof isRegisterL1ValidatorTx;
1890
1949
  declare const index_isRemoveSubnetValidatorTx: typeof isRemoveSubnetValidatorTx;
1950
+ declare const index_isSetAutoRenewedValidatorConfigTx: typeof isSetAutoRenewedValidatorConfigTx;
1891
1951
  declare const index_isSetL1ValidatorWeightTx: typeof isSetL1ValidatorWeightTx;
1892
1952
  declare const index_isTransferSubnetOwnershipTx: typeof isTransferSubnetOwnershipTx;
1893
1953
  declare const index_isTransformSubnetTx: typeof isTransformSubnetTx;
@@ -1900,8 +1960,8 @@ declare const index_sortUTXOsByAmountDescending: typeof sortUTXOsByAmountDescend
1900
1960
  declare const index_sortUTXOsStaking: typeof sortUTXOsStaking;
1901
1961
  declare const index_verifyDerivationPath: typeof verifyDerivationPath;
1902
1962
  declare namespace index {
1903
- export { index_AbstractProvider as AbstractProvider, index_AddressWallet as AddressWallet, index_DevnetContext as DevnetContext, index_FujiContext as FujiContext, index_JsonRpcProvider as JsonRpcProvider, index_LedgerLiveSigner as LedgerLiveSigner, index_LedgerSigner as LedgerSigner, index_LedgerWallet as LedgerWallet, index_MainnetContext as MainnetContext, index_MnemonicWallet as MnemonicWallet, index_MnemonicWalletVoid as MnemonicWalletVoid, index_P_CHAIN_TX_SIZE_LIMIT as P_CHAIN_TX_SIZE_LIMIT, index_SimpleLedgerSigner as SimpleLedgerSigner, index_SimpleSigner as SimpleSigner, index_SizeSupportedTx as SizeSupportedTx, index_StaticSigner as StaticSigner, index_TxType as TxType, index_WalletAbstract as WalletAbstract, index_WalletVoid as WalletVoid, index_addSignaturesToAvalancheTx as addSignaturesToAvalancheTx, index_convertGlacierUtxo as convertGlacierUtxo, index_createAvalancheEvmUnsignedTx as createAvalancheEvmUnsignedTx, index_createAvalancheUnsignedTx as createAvalancheUnsignedTx, index_digestMessage as digestMessage, index_emptySignature as emptySignature, index_getAddressFromXpub as getAddressFromXpub, index_getAddressPublicKeyFromXpub as getAddressPublicKeyFromXpub, index_getAssetBalance as getAssetBalance, index_getAvalancheDerivationPath as getAvalancheDerivationPath, index_getLedgerProvider as getLedgerProvider, index_getMaximumUtxoSet as getMaximumUtxoSet, index_getPaginatedUTXOs as getPaginatedUTXOs, index_getPchainUnixNow as getPchainUnixNow, index_getStakeForAddresses as getStakeForAddresses, index_getStakedAssetBalance as getStakedAssetBalance, index_getUTXOsForAddresses as getUTXOsForAddresses, index_getUnixNow as getUnixNow, index_getUtxosByTxFromGlacier as getUtxosByTxFromGlacier, index_getVmByChainAlias as getVmByChainAlias, index_getXpubFromMnemonic as getXpubFromMnemonic, index_isAddDelegatorTx as isAddDelegatorTx, index_isAddPermissionlessDelegatorTx as isAddPermissionlessDelegatorTx, index_isAddPermissionlessValidatorTx as isAddPermissionlessValidatorTx, index_isAddSubnetValidatorTx as isAddSubnetValidatorTx, index_isAddValidatorTx as isAddValidatorTx, index_isBaseTx as isBaseTx, index_isBech32Address as isBech32Address, index_isConvertSubnetToL1Tx as isConvertSubnetToL1Tx, index_isCreateChainTx as isCreateChainTx, index_isCreateSubnetTx as isCreateSubnetTx, index_isDisableL1ValidatorTx as isDisableL1ValidatorTx, index_isExportTx as isExportTx, index_isImportTx as isImportTx, index_isIncreaseL1ValidatorBalance as isIncreaseL1ValidatorBalance, index_isObsidianApp as isObsidianApp, index_isRegisterL1ValidatorTx as isRegisterL1ValidatorTx, index_isRemoveSubnetValidatorTx as isRemoveSubnetValidatorTx, index_isSetL1ValidatorWeightTx as isSetL1ValidatorWeightTx, index_isTransferSubnetOwnershipTx as isTransferSubnetOwnershipTx, index_isTransformSubnetTx as isTransformSubnetTx, index_parseAvalancheTx as parseAvalancheTx, index_populateCredential as populateCredential, index_signedTxToHex as signedTxToHex, index_sortUTXOsByAmount as sortUTXOsByAmount, index_sortUTXOsByAmountAscending as sortUTXOsByAmountAscending, index_sortUTXOsByAmountDescending as sortUTXOsByAmountDescending, index_sortUTXOsStaking as sortUTXOsStaking, index_verifyDerivationPath as verifyDerivationPath };
1904
- export type { index_AddDelegatorTx as AddDelegatorTx, index_AddPermissionlessDelegatorTx as AddPermissionlessDelegatorTx, index_AddPermissionlessValidatorTx as AddPermissionlessValidatorTx, index_AddSubnetValidatorTx as AddSubnetValidatorTx, index_AddValidatorTx as AddValidatorTx, BaseTx$1 as BaseTx, index_ChainIDAlias as ChainIDAlias, index_ConvertSubnetToL1Tx as ConvertSubnetToL1Tx, index_CreateChainTx as CreateChainTx, index_CreateSubnetTx as CreateSubnetTx, index_DisableL1ValidatorTx as DisableL1ValidatorTx, index_ExportTx as ExportTx, index_FeeData as FeeData, index_GetAvaxBalanceDict as GetAvaxBalanceDict, index_GetStakedAvaxBalanceDict as GetStakedAvaxBalanceDict, index_GlacierOutput as GlacierOutput, index_ImportTx as ImportTx, index_IncreaseL1ValidatorBalanceTx as IncreaseL1ValidatorBalanceTx, index_LedgerGetXpubResponse as LedgerGetXpubResponse, index_ParseOptions as ParseOptions, index_RegisterL1ValidatorTx as RegisterL1ValidatorTx, index_RemoveSubnetValidatorTx as RemoveSubnetValidatorTx, index_SetL1ValidatorWeightTx as SetL1ValidatorWeightTx, index_SignMessageRequest as SignMessageRequest, index_SignTxBufferRequest as SignTxBufferRequest, index_SignTxRequest as SignTxRequest, index_Signer as Signer, TransferSubnetOwnershipTx$1 as TransferSubnetOwnershipTx, index_TransformSubnetTx as TransformSubnetTx, index_Tx as Tx, index_TxBase as TxBase, index_UnknownTx as UnknownTx };
1963
+ export { index_AbstractProvider as AbstractProvider, index_AddressWallet as AddressWallet, index_DevnetContext as DevnetContext, index_FujiContext as FujiContext, index_JsonRpcProvider as JsonRpcProvider, index_LedgerLiveSigner as LedgerLiveSigner, index_LedgerSigner as LedgerSigner, index_LedgerWallet as LedgerWallet, index_MainnetContext as MainnetContext, index_MnemonicWallet as MnemonicWallet, index_MnemonicWalletVoid as MnemonicWalletVoid, index_P_CHAIN_TX_SIZE_LIMIT as P_CHAIN_TX_SIZE_LIMIT, index_SimpleLedgerSigner as SimpleLedgerSigner, index_SimpleSigner as SimpleSigner, index_SizeSupportedTx as SizeSupportedTx, index_StaticSigner as StaticSigner, index_TxType as TxType, index_WalletAbstract as WalletAbstract, index_WalletVoid as WalletVoid, index_addSignaturesToAvalancheTx as addSignaturesToAvalancheTx, index_convertGlacierUtxo as convertGlacierUtxo, index_createAvalancheEvmUnsignedTx as createAvalancheEvmUnsignedTx, index_createAvalancheUnsignedTx as createAvalancheUnsignedTx, index_digestMessage as digestMessage, index_emptySignature as emptySignature, index_getAddressFromXpub as getAddressFromXpub, index_getAddressPublicKeyFromXpub as getAddressPublicKeyFromXpub, index_getAssetBalance as getAssetBalance, index_getAvalancheDerivationPath as getAvalancheDerivationPath, index_getLedgerProvider as getLedgerProvider, index_getMaximumUtxoSet as getMaximumUtxoSet, index_getPaginatedUTXOs as getPaginatedUTXOs, index_getPchainUnixNow as getPchainUnixNow, index_getStakeForAddresses as getStakeForAddresses, index_getStakedAssetBalance as getStakedAssetBalance, index_getUTXOsForAddresses as getUTXOsForAddresses, index_getUnixNow as getUnixNow, index_getUtxosByTxFromGlacier as getUtxosByTxFromGlacier, index_getVmByChainAlias as getVmByChainAlias, index_getXpubFromMnemonic as getXpubFromMnemonic, index_isAddAutoRenewedValidatorTx as isAddAutoRenewedValidatorTx, index_isAddDelegatorTx as isAddDelegatorTx, index_isAddPermissionlessDelegatorTx as isAddPermissionlessDelegatorTx, index_isAddPermissionlessValidatorTx as isAddPermissionlessValidatorTx, index_isAddSubnetValidatorTx as isAddSubnetValidatorTx, index_isAddValidatorTx as isAddValidatorTx, index_isBaseTx as isBaseTx, index_isBech32Address as isBech32Address, index_isConvertSubnetToL1Tx as isConvertSubnetToL1Tx, index_isCreateChainTx as isCreateChainTx, index_isCreateSubnetTx as isCreateSubnetTx, index_isDisableL1ValidatorTx as isDisableL1ValidatorTx, index_isExportTx as isExportTx, index_isImportTx as isImportTx, index_isIncreaseL1ValidatorBalance as isIncreaseL1ValidatorBalance, index_isObsidianApp as isObsidianApp, index_isRegisterL1ValidatorTx as isRegisterL1ValidatorTx, index_isRemoveSubnetValidatorTx as isRemoveSubnetValidatorTx, index_isSetAutoRenewedValidatorConfigTx as isSetAutoRenewedValidatorConfigTx, index_isSetL1ValidatorWeightTx as isSetL1ValidatorWeightTx, index_isTransferSubnetOwnershipTx as isTransferSubnetOwnershipTx, index_isTransformSubnetTx as isTransformSubnetTx, index_parseAvalancheTx as parseAvalancheTx, index_populateCredential as populateCredential, index_signedTxToHex as signedTxToHex, index_sortUTXOsByAmount as sortUTXOsByAmount, index_sortUTXOsByAmountAscending as sortUTXOsByAmountAscending, index_sortUTXOsByAmountDescending as sortUTXOsByAmountDescending, index_sortUTXOsStaking as sortUTXOsStaking, index_verifyDerivationPath as verifyDerivationPath };
1964
+ export type { index_AddAutoRenewedValidatorTx as AddAutoRenewedValidatorTx, index_AddDelegatorTx as AddDelegatorTx, index_AddPermissionlessDelegatorTx as AddPermissionlessDelegatorTx, index_AddPermissionlessValidatorTx as AddPermissionlessValidatorTx, index_AddSubnetValidatorTx as AddSubnetValidatorTx, index_AddValidatorTx as AddValidatorTx, BaseTx$1 as BaseTx, index_ChainIDAlias as ChainIDAlias, index_ConvertSubnetToL1Tx as ConvertSubnetToL1Tx, index_CreateChainTx as CreateChainTx, index_CreateSubnetTx as CreateSubnetTx, index_DisableL1ValidatorTx as DisableL1ValidatorTx, index_ExportTx as ExportTx, index_FeeData as FeeData, index_GetAvaxBalanceDict as GetAvaxBalanceDict, index_GetStakedAvaxBalanceDict as GetStakedAvaxBalanceDict, index_GlacierOutput as GlacierOutput, index_ImportTx as ImportTx, index_IncreaseL1ValidatorBalanceTx as IncreaseL1ValidatorBalanceTx, index_LedgerGetXpubResponse as LedgerGetXpubResponse, index_ParseOptions as ParseOptions, index_RegisterL1ValidatorTx as RegisterL1ValidatorTx, index_RemoveSubnetValidatorTx as RemoveSubnetValidatorTx, index_SetAutoRenewedValidatorConfigTx as SetAutoRenewedValidatorConfigTx, index_SetL1ValidatorWeightTx as SetL1ValidatorWeightTx, index_SignMessageRequest as SignMessageRequest, index_SignTxBufferRequest as SignTxBufferRequest, index_SignTxRequest as SignTxRequest, index_Signer as Signer, TransferSubnetOwnershipTx$1 as TransferSubnetOwnershipTx, index_TransformSubnetTx as TransformSubnetTx, index_Tx as Tx, index_TxBase as TxBase, index_UnknownTx as UnknownTx };
1905
1965
  }
1906
1966
 
1907
1967
  type DerivationPathOptions = {
@@ -1,4 +1,4 @@
1
- export { AddDelegatorTx, AddPermissionlessDelegatorTx, AddPermissionlessValidatorTx, AddSubnetValidatorTx, AddValidatorTx, BaseTx, ChainIDAlias, ConvertSubnetToL1Tx, CreateChainTx, CreateSubnetTx, DisableL1ValidatorTx, ExportTx, FeeData, ImportTx, IncreaseL1ValidatorBalanceTx, RegisterL1ValidatorTx, RemoveSubnetValidatorTx, SetL1ValidatorWeightTx, TransferSubnetOwnershipTx, TransformSubnetTx, Tx, TxBase, TxType, UnknownTx, isAddDelegatorTx, isAddPermissionlessDelegatorTx, isAddPermissionlessValidatorTx, isAddSubnetValidatorTx, isAddValidatorTx, isBaseTx, isConvertSubnetToL1Tx, isCreateChainTx, isCreateSubnetTx, isDisableL1ValidatorTx, isExportTx, isImportTx, isIncreaseL1ValidatorBalance, isRegisterL1ValidatorTx, isRemoveSubnetValidatorTx, isSetL1ValidatorWeightTx, isTransferSubnetOwnershipTx, isTransformSubnetTx } from './models.js';
1
+ export { AddAutoRenewedValidatorTx, AddDelegatorTx, AddPermissionlessDelegatorTx, AddPermissionlessValidatorTx, AddSubnetValidatorTx, AddValidatorTx, BaseTx, ChainIDAlias, ConvertSubnetToL1Tx, CreateChainTx, CreateSubnetTx, DisableL1ValidatorTx, ExportTx, FeeData, ImportTx, IncreaseL1ValidatorBalanceTx, RegisterL1ValidatorTx, RemoveSubnetValidatorTx, SetAutoRenewedValidatorConfigTx, SetL1ValidatorWeightTx, TransferSubnetOwnershipTx, TransformSubnetTx, Tx, TxBase, TxType, UnknownTx, isAddAutoRenewedValidatorTx, isAddDelegatorTx, isAddPermissionlessDelegatorTx, isAddPermissionlessValidatorTx, isAddSubnetValidatorTx, isAddValidatorTx, isBaseTx, isConvertSubnetToL1Tx, isCreateChainTx, isCreateSubnetTx, isDisableL1ValidatorTx, isExportTx, isImportTx, isIncreaseL1ValidatorBalance, isRegisterL1ValidatorTx, isRemoveSubnetValidatorTx, isSetAutoRenewedValidatorConfigTx, isSetL1ValidatorWeightTx, isTransferSubnetOwnershipTx, isTransformSubnetTx } from './models.js';
2
2
  export { WalletAbstract } from './wallets/WalletAbstract.js';
3
3
  export { WalletVoid } from './wallets/WalletVoid.js';
4
4
  export { isObsidianApp } from './wallets/ledger/isObsidianApp.js';
@@ -1 +1 @@
1
- export{TxType,isAddDelegatorTx,isAddPermissionlessDelegatorTx,isAddPermissionlessValidatorTx,isAddSubnetValidatorTx,isAddValidatorTx,isBaseTx,isConvertSubnetToL1Tx,isCreateChainTx,isCreateSubnetTx,isDisableL1ValidatorTx,isExportTx,isImportTx,isIncreaseL1ValidatorBalance,isRegisterL1ValidatorTx,isRemoveSubnetValidatorTx,isSetL1ValidatorWeightTx,isTransferSubnetOwnershipTx,isTransformSubnetTx}from"./models.js";export{WalletAbstract}from"./wallets/WalletAbstract.js";export{WalletVoid}from"./wallets/WalletVoid.js";export{isObsidianApp}from"./wallets/ledger/isObsidianApp.js";export{getLedgerProvider}from"./wallets/ledger/getLedgerProvider.js";export{AddressWallet}from"./wallets/AddressWallet.js";export{MnemonicWalletVoid}from"./wallets/legacy/MnemonicWalletVoid.js";export{LedgerWallet}from"./wallets/legacy/LedgerWallet.js";export{MnemonicWallet}from"./wallets/legacy/MnemonicWallet.js";export{StaticSigner}from"./wallets/StaticSigner.js";export{SimpleSigner}from"./wallets/SimpleSigner.js";export{LedgerSigner}from"./wallets/ledger/LedgerSigner.js";export{SimpleLedgerSigner}from"./wallets/ledger/SimpleLedgerSigner.js";export{LedgerLiveSigner}from"./wallets/ledger/LedgerLiveSigner.js";export{AbstractProvider}from"./providers/AbstractProvider.js";export{JsonRpcProvider}from"./providers/JsonRpcProvider.js";export{DevnetContext,FujiContext,MainnetContext}from"./providers/constants.js";export{addSignaturesToAvalancheTx}from"./utils/addSignaturesToAvalancheTx.js";export{convertGlacierUtxo}from"./utils/convertGlacierUtxo.js";export{createAvalancheEvmUnsignedTx}from"./utils/createAvalancheEvmUnsignedTx.js";export{createAvalancheUnsignedTx}from"./utils/createAvalancheUnsignedTx.js";export{digestMessage}from"./utils/digestMessage.js";export{getAddressFromXpub}from"./utils/getAddressFromXpub.js";export{getAddressPublicKeyFromXpub}from"./utils/getAddressPublicKeyFromXpub.js";export{getPaginatedUTXOs,getUTXOsForAddresses}from"./utils/getAllUTXOs.js";export{getAssetBalance}from"./utils/getAssetBalance.js";export{getPchainUnixNow}from"./utils/getPchainUnixNow.js";export{getStakedAssetBalance}from"./utils/getStakedAssetBalance.js";export{getStakeForAddresses}from"./utils/getStakeForAddresses.js";export{getUnixNow}from"./utils/getUnixNow.js";export{getUtxosByTxFromGlacier}from"./utils/getUtxosByTxFromGlacier.js";export{getVmByChainAlias}from"./utils/getVmByChainAlias.js";export{getXpubFromMnemonic}from"./utils/getXpubFromMnemonic.js";export{isBech32Address}from"./utils/isBech32Address.js";export{parseAvalancheTx}from"./utils/parseAvalancheTx.js";export{emptySignature,populateCredential}from"./utils/populateCredential.js";export{signedTxToHex}from"./utils/signedTxToHex.js";export{sortUTXOsByAmount,sortUTXOsByAmountAscending,sortUTXOsByAmountDescending,sortUTXOsStaking}from"./utils/sortUTXOs.js";export{P_CHAIN_TX_SIZE_LIMIT,SizeSupportedTx,getMaximumUtxoSet}from"./utils/txSizeLimits.js";export{verifyDerivationPath}from"./utils/verifyDerivationPath.js";export{getAvalancheDerivationPath}from"./utils/getAvalancheDerivationPath.js";
1
+ export{TxType,isAddAutoRenewedValidatorTx,isAddDelegatorTx,isAddPermissionlessDelegatorTx,isAddPermissionlessValidatorTx,isAddSubnetValidatorTx,isAddValidatorTx,isBaseTx,isConvertSubnetToL1Tx,isCreateChainTx,isCreateSubnetTx,isDisableL1ValidatorTx,isExportTx,isImportTx,isIncreaseL1ValidatorBalance,isRegisterL1ValidatorTx,isRemoveSubnetValidatorTx,isSetAutoRenewedValidatorConfigTx,isSetL1ValidatorWeightTx,isTransferSubnetOwnershipTx,isTransformSubnetTx}from"./models.js";export{WalletAbstract}from"./wallets/WalletAbstract.js";export{WalletVoid}from"./wallets/WalletVoid.js";export{isObsidianApp}from"./wallets/ledger/isObsidianApp.js";export{getLedgerProvider}from"./wallets/ledger/getLedgerProvider.js";export{AddressWallet}from"./wallets/AddressWallet.js";export{MnemonicWalletVoid}from"./wallets/legacy/MnemonicWalletVoid.js";export{LedgerWallet}from"./wallets/legacy/LedgerWallet.js";export{MnemonicWallet}from"./wallets/legacy/MnemonicWallet.js";export{StaticSigner}from"./wallets/StaticSigner.js";export{SimpleSigner}from"./wallets/SimpleSigner.js";export{LedgerSigner}from"./wallets/ledger/LedgerSigner.js";export{SimpleLedgerSigner}from"./wallets/ledger/SimpleLedgerSigner.js";export{LedgerLiveSigner}from"./wallets/ledger/LedgerLiveSigner.js";export{AbstractProvider}from"./providers/AbstractProvider.js";export{JsonRpcProvider}from"./providers/JsonRpcProvider.js";export{DevnetContext,FujiContext,MainnetContext}from"./providers/constants.js";export{addSignaturesToAvalancheTx}from"./utils/addSignaturesToAvalancheTx.js";export{convertGlacierUtxo}from"./utils/convertGlacierUtxo.js";export{createAvalancheEvmUnsignedTx}from"./utils/createAvalancheEvmUnsignedTx.js";export{createAvalancheUnsignedTx}from"./utils/createAvalancheUnsignedTx.js";export{digestMessage}from"./utils/digestMessage.js";export{getAddressFromXpub}from"./utils/getAddressFromXpub.js";export{getAddressPublicKeyFromXpub}from"./utils/getAddressPublicKeyFromXpub.js";export{getPaginatedUTXOs,getUTXOsForAddresses}from"./utils/getAllUTXOs.js";export{getAssetBalance}from"./utils/getAssetBalance.js";export{getPchainUnixNow}from"./utils/getPchainUnixNow.js";export{getStakedAssetBalance}from"./utils/getStakedAssetBalance.js";export{getStakeForAddresses}from"./utils/getStakeForAddresses.js";export{getUnixNow}from"./utils/getUnixNow.js";export{getUtxosByTxFromGlacier}from"./utils/getUtxosByTxFromGlacier.js";export{getVmByChainAlias}from"./utils/getVmByChainAlias.js";export{getXpubFromMnemonic}from"./utils/getXpubFromMnemonic.js";export{isBech32Address}from"./utils/isBech32Address.js";export{parseAvalancheTx}from"./utils/parseAvalancheTx.js";export{emptySignature,populateCredential}from"./utils/populateCredential.js";export{signedTxToHex}from"./utils/signedTxToHex.js";export{sortUTXOsByAmount,sortUTXOsByAmountAscending,sortUTXOsByAmountDescending,sortUTXOsStaking}from"./utils/sortUTXOs.js";export{P_CHAIN_TX_SIZE_LIMIT,SizeSupportedTx,getMaximumUtxoSet}from"./utils/txSizeLimits.js";export{verifyDerivationPath}from"./utils/verifyDerivationPath.js";export{getAvalancheDerivationPath}from"./utils/getAvalancheDerivationPath.js";
@@ -4,7 +4,7 @@ type ChainIDAlias = 'X' | 'P' | 'C';
4
4
  /**
5
5
  * Types for parsed transaction
6
6
  */
7
- type Tx = AddValidatorTx | AddDelegatorTx | ExportTx | ImportTx | BaseTx | CreateSubnetTx | CreateChainTx | AddSubnetValidatorTx | RemoveSubnetValidatorTx | AddPermissionlessValidatorTx | AddPermissionlessDelegatorTx | TransformSubnetTx | TransferSubnetOwnershipTx | ConvertSubnetToL1Tx | RegisterL1ValidatorTx | SetL1ValidatorWeightTx | DisableL1ValidatorTx | IncreaseL1ValidatorBalanceTx | UnknownTx;
7
+ type Tx = AddValidatorTx | AddDelegatorTx | ExportTx | ImportTx | BaseTx | CreateSubnetTx | CreateChainTx | AddSubnetValidatorTx | RemoveSubnetValidatorTx | AddPermissionlessValidatorTx | AddPermissionlessDelegatorTx | TransformSubnetTx | TransferSubnetOwnershipTx | ConvertSubnetToL1Tx | RegisterL1ValidatorTx | SetL1ValidatorWeightTx | DisableL1ValidatorTx | IncreaseL1ValidatorBalanceTx | AddAutoRenewedValidatorTx | SetAutoRenewedValidatorConfigTx | UnknownTx;
8
8
  interface FeeData {
9
9
  totalAvaxBurned: bigint;
10
10
  totalAvaxOutput: bigint;
@@ -30,6 +30,8 @@ declare enum TxType {
30
30
  SetL1ValidatorWeight = "set_l1_validator_weight",
31
31
  IncreaseL1ValidatorBalance = "increase_l1_validator_balance",
32
32
  DisableL1Validator = "disable_l1_validator",
33
+ AddAutoRenewedValidator = "add_auto_renewed_validator",
34
+ SetAutoRenewedValidatorConfig = "set_auto_renewed_validator_config",
33
35
  AddSubnetValidator = "add_subnet_validator",
34
36
  RemoveSubnetValidator = "remove_subnet_validator",
35
37
  AddPermissionlessValidator = "add_permissionless_validator",
@@ -137,6 +139,28 @@ interface DisableL1ValidatorTx extends TxBase {
137
139
  type: TxType.DisableL1Validator;
138
140
  validationId: string;
139
141
  }
142
+ interface AddAutoRenewedValidatorTx extends TxBase {
143
+ type: TxType.AddAutoRenewedValidator;
144
+ nodeID: string;
145
+ stake: bigint;
146
+ stakeOuts: readonly TransferableOutput[];
147
+ rewardOwner: OutputOwners;
148
+ delegationRewardOwner: OutputOwners;
149
+ owner: OutputOwners;
150
+ delegationFee: number;
151
+ weight: bigint;
152
+ autoCompoundRewardShares: number;
153
+ period: bigint;
154
+ signer: pvmSerial.Signer | pvmSerial.SignerEmpty;
155
+ publicKey: undefined | string;
156
+ signature: undefined | string;
157
+ }
158
+ interface SetAutoRenewedValidatorConfigTx extends TxBase {
159
+ type: TxType.SetAutoRenewedValidatorConfig;
160
+ txId: string;
161
+ autoCompoundRewardShares: number;
162
+ period: bigint;
163
+ }
140
164
  interface AddPermissionlessValidatorTx extends TxBase {
141
165
  type: TxType.AddPermissionlessValidator;
142
166
  nodeID: string;
@@ -209,6 +233,8 @@ declare function isAddPermissionlessValidatorTx(tx: Tx): tx is AddPermissionless
209
233
  declare function isAddPermissionlessDelegatorTx(tx: Tx): tx is AddPermissionlessDelegatorTx;
210
234
  declare function isTransformSubnetTx(tx: Tx): tx is TransformSubnetTx;
211
235
  declare function isTransferSubnetOwnershipTx(tx: Tx): tx is TransferSubnetOwnershipTx;
236
+ declare function isAddAutoRenewedValidatorTx(tx: Tx): tx is AddAutoRenewedValidatorTx;
237
+ declare function isSetAutoRenewedValidatorConfigTx(tx: Tx): tx is SetAutoRenewedValidatorConfigTx;
212
238
 
213
- export { TxType, isAddDelegatorTx, isAddPermissionlessDelegatorTx, isAddPermissionlessValidatorTx, isAddSubnetValidatorTx, isAddValidatorTx, isBaseTx, isConvertSubnetToL1Tx, isCreateChainTx, isCreateSubnetTx, isDisableL1ValidatorTx, isExportTx, isImportTx, isIncreaseL1ValidatorBalance, isRegisterL1ValidatorTx, isRemoveSubnetValidatorTx, isSetL1ValidatorWeightTx, isTransferSubnetOwnershipTx, isTransformSubnetTx };
214
- export type { AddDelegatorTx, AddPermissionlessDelegatorTx, AddPermissionlessValidatorTx, AddSubnetValidatorTx, AddValidatorTx, BaseTx, ChainIDAlias, ConvertSubnetToL1Tx, CreateChainTx, CreateSubnetTx, DisableL1ValidatorTx, ExportTx, FeeData, ImportTx, IncreaseL1ValidatorBalanceTx, RegisterL1ValidatorTx, RemoveSubnetValidatorTx, SetL1ValidatorWeightTx, TransferSubnetOwnershipTx, TransformSubnetTx, Tx, TxBase, UnknownTx };
239
+ export { TxType, isAddAutoRenewedValidatorTx, isAddDelegatorTx, isAddPermissionlessDelegatorTx, isAddPermissionlessValidatorTx, isAddSubnetValidatorTx, isAddValidatorTx, isBaseTx, isConvertSubnetToL1Tx, isCreateChainTx, isCreateSubnetTx, isDisableL1ValidatorTx, isExportTx, isImportTx, isIncreaseL1ValidatorBalance, isRegisterL1ValidatorTx, isRemoveSubnetValidatorTx, isSetAutoRenewedValidatorConfigTx, isSetL1ValidatorWeightTx, isTransferSubnetOwnershipTx, isTransformSubnetTx };
240
+ export type { AddAutoRenewedValidatorTx, AddDelegatorTx, AddPermissionlessDelegatorTx, AddPermissionlessValidatorTx, AddSubnetValidatorTx, AddValidatorTx, BaseTx, ChainIDAlias, ConvertSubnetToL1Tx, CreateChainTx, CreateSubnetTx, DisableL1ValidatorTx, ExportTx, FeeData, ImportTx, IncreaseL1ValidatorBalanceTx, RegisterL1ValidatorTx, RemoveSubnetValidatorTx, SetAutoRenewedValidatorConfigTx, SetL1ValidatorWeightTx, TransferSubnetOwnershipTx, TransformSubnetTx, Tx, TxBase, UnknownTx };
@@ -1 +1 @@
1
- var e=(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))(e||{});function t(e){return"add_validator"===e.type}function r(e){return"add_delegator"===e.type}function n(e){return"export"===e.type}function a(e){return"import"===e.type}function o(e){return"base"===e.type}function i(e){return"convert_subnet_to_l1"===e.type}function d(e){return"register_l1_validator"===e.type}function s(e){return"set_l1_validator_weight"===e.type}function _(e){return"disable_l1_validator"===e.type}function u(e){return"increase_l1_validator_balance"===e.type}function l(e){return"create_subnet"===e.type}function c(e){return"create_chain"===e.type}function p(e){return"add_subnet_validator"===e.type}function b(e){return"remove_subnet_validator"===e.type}function f(e){return"add_permissionless_validator"===e.type}function v(e){return"add_permissionless_delegator"===e.type}function y(e){return"transform_subnet"===e.type}function m(e){return"transfer_subnet_ownership"===e.type}export{e as TxType,r as isAddDelegatorTx,v as isAddPermissionlessDelegatorTx,f as isAddPermissionlessValidatorTx,p as isAddSubnetValidatorTx,t as isAddValidatorTx,o as isBaseTx,i as isConvertSubnetToL1Tx,c as isCreateChainTx,l as isCreateSubnetTx,_ as isDisableL1ValidatorTx,n as isExportTx,a as isImportTx,u as isIncreaseL1ValidatorBalance,d as isRegisterL1ValidatorTx,b as isRemoveSubnetValidatorTx,s as isSetL1ValidatorWeightTx,m as isTransferSubnetOwnershipTx,y as isTransformSubnetTx};
1
+ var e=(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.AddAutoRenewedValidator="add_auto_renewed_validator",e.SetAutoRenewedValidatorConfig="set_auto_renewed_validator_config",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))(e||{});function t(e){return"add_validator"===e.type}function r(e){return"add_delegator"===e.type}function n(e){return"export"===e.type}function a(e){return"import"===e.type}function o(e){return"base"===e.type}function i(e){return"convert_subnet_to_l1"===e.type}function d(e){return"register_l1_validator"===e.type}function _(e){return"set_l1_validator_weight"===e.type}function u(e){return"disable_l1_validator"===e.type}function s(e){return"increase_l1_validator_balance"===e.type}function l(e){return"create_subnet"===e.type}function c(e){return"create_chain"===e.type}function p(e){return"add_subnet_validator"===e.type}function f(e){return"remove_subnet_validator"===e.type}function v(e){return"add_permissionless_validator"===e.type}function b(e){return"add_permissionless_delegator"===e.type}function y(e){return"transform_subnet"===e.type}function g(e){return"transfer_subnet_ownership"===e.type}function m(e){return"add_auto_renewed_validator"===e.type}function w(e){return"set_auto_renewed_validator_config"===e.type}export{e as TxType,m as isAddAutoRenewedValidatorTx,r as isAddDelegatorTx,b as isAddPermissionlessDelegatorTx,v as isAddPermissionlessValidatorTx,p as isAddSubnetValidatorTx,t as isAddValidatorTx,o as isBaseTx,i as isConvertSubnetToL1Tx,c as isCreateChainTx,l as isCreateSubnetTx,u as isDisableL1ValidatorTx,n as isExportTx,a as isImportTx,s as isIncreaseL1ValidatorBalance,d as isRegisterL1ValidatorTx,f as isRemoveSubnetValidatorTx,w as isSetAutoRenewedValidatorConfigTx,_ as isSetL1ValidatorWeightTx,g as isTransferSubnetOwnershipTx,y as isTransformSubnetTx};
@@ -0,0 +1 @@
1
+ import{pvmSerial as e,utils as a}from"@avalabs/avalanchejs";async function r(r,t,n){try{const d=(await n.getApiP().getTx({txID:t.txId.value()})).unsignedTx;if(!e.isAddAutoRenewedValidatorTx(d))throw new Error("Referenced validator transaction is not an AddAutoRenewedValidatorTx");const o=d.getOwner().addrs,s=t.getAuth().values(),i=o.reduce(((e,a,r)=>(s.includes(r)&&e.push([a,r]),e)),[]);return r.push(new a.AddressMap(i)),r}catch(e){throw new Error(`Error while preparing auto-renewed validator config auth data: ${e.message}`)}}export{r as appendAutoRenewedValidatorConfigAddressMaps};
@@ -1 +1 @@
1
- import{utils as e,UnsignedTx as r,pvmSerial as a}from"@avalabs/avalanchejs";import{isSubnetTx as t,handleSubnetAuth as s}from"./handleSubnetAuth.js";import{appendDisableAuthAddressMaps as n}from"./appendDisableAuthAddressMaps.js";const{getTransferableInputsByTx:o,AddressMaps:i}=e,d=async({tx:e,fromAddressBytes:d,provider:p,credentials:l,utxos:u})=>{const f=o(e);let m=i.fromTransferableInputs(f,u,BigInt(Math.floor((new Date).getTime()/1e3)),d);if(t(e))try{const a=await s({tx:e,provider:p,addressMaps:m});return new r(e,u,a,l)}catch(e){throw new Error(`Error while preparing subnet authorization data: ${e.message}`)}else a.isDisableL1ValidatorTx(e)&&(m=await n(m,e,p));return new r(e,u,m,l)};var p=d;export{d as createAvalancheUnsignedTx,p as default};
1
+ import{utils as e,UnsignedTx as a,pvmSerial as r}from"@avalabs/avalanchejs";import{isSubnetTx as t,handleSubnetAuth as s}from"./handleSubnetAuth.js";import{appendDisableAuthAddressMaps as o}from"./appendDisableAuthAddressMaps.js";import{appendAutoRenewedValidatorConfigAddressMaps as n}from"./appendAutoRenewedValidatorConfigAddressMaps.js";const{getTransferableInputsByTx:i,AddressMaps:d}=e,p=async({tx:e,fromAddressBytes:p,provider:l,credentials:f,utxos:u})=>{const m=i(e);let w=d.fromTransferableInputs(m,u,BigInt(Math.floor((new Date).getTime()/1e3)),p);if(t(e))try{const r=await s({tx:e,provider:l,addressMaps:w});return new a(e,u,r,f)}catch(e){throw new Error(`Error while preparing subnet authorization data: ${e.message}`)}else r.isDisableL1ValidatorTx(e)?w=await o(w,e,l):r.isSetAutoRenewedValidatorConfigTx(e)&&(w=await n(w,e,l));return new a(e,u,w,f)};var l=p;export{p as createAvalancheUnsignedTx,l as default};
@@ -1 +1 @@
1
- import r from"./parseCreateSubnetTx.js";import e from"./parseCreateChainTx.js";import a from"./parseAddSubnetValidorTx.js";import s from"./parseImportTx.js";import o from"./parseExportTx.js";import t from"./parseBaseTx.js";import p from"./parseAddPermissionlessValidatorTx.js";import i from"./parseAddPermissionlessDelegatorTx.js";import m from"./parseRemoveSubnetValidatorTx.js";import x from"./parseTransferSubnetOwnershipTx.js";import T from"./parseConvertSubnetToL1Tx.js";import d from"./parseRegisterL1ValidatorTx.js";import n from"./parseSetL1ValidatorWeightTx.js";import l from"./parseDisableL1ValidatorTx.js";import f from"./parseIncreaseL1ValidatorBalanceTx.js";var j={parseCreateSubnetTx:r,parseCreateChainTx:e,parseAddSubnetValidatorTx:a,parseRemoveSubnetValidatorTx:m,parseImportTx:s,parseExportTx:o,parseBaseTx:t,parseAddPermissionlessValidatorTx:p,parseAddPermissionlessDelegatorTx:i,parseTransferSubnetOwnershipTx:x,parseConvertSubnetTx:T,parseRegisterL1ValidatorTx:d,parseIncreaseL1ValidatorBalanceTx:f,parseSetL1ValidatorWeightTx:n,parseDisableL1ValidatorTx:l};export{j as default};
1
+ import r from"./parseCreateSubnetTx.js";import e from"./parseCreateChainTx.js";import a from"./parseAddSubnetValidorTx.js";import s from"./parseImportTx.js";import o from"./parseExportTx.js";import t from"./parseBaseTx.js";import p from"./parseAddPermissionlessValidatorTx.js";import i from"./parseAddPermissionlessDelegatorTx.js";import m from"./parseRemoveSubnetValidatorTx.js";import d from"./parseTransferSubnetOwnershipTx.js";import x from"./parseConvertSubnetToL1Tx.js";import T from"./parseRegisterL1ValidatorTx.js";import n from"./parseSetL1ValidatorWeightTx.js";import l from"./parseDisableL1ValidatorTx.js";import f from"./parseIncreaseL1ValidatorBalanceTx.js";import V from"./parseAddAutoRenewedValidatorTx.js";import j from"./parseSetAutoRenewedValidatorConfigTx.js";var u={parseCreateSubnetTx:r,parseCreateChainTx:e,parseAddSubnetValidatorTx:a,parseRemoveSubnetValidatorTx:m,parseImportTx:s,parseExportTx:o,parseBaseTx:t,parseAddPermissionlessValidatorTx:p,parseAddPermissionlessDelegatorTx:i,parseTransferSubnetOwnershipTx:d,parseConvertSubnetTx:x,parseRegisterL1ValidatorTx:T,parseIncreaseL1ValidatorBalanceTx:f,parseSetL1ValidatorWeightTx:n,parseDisableL1ValidatorTx:l,parseAddAutoRenewedValidatorTx:V,parseSetAutoRenewedValidatorConfigTx:j};export{u as default};
@@ -0,0 +1 @@
1
+ import{pvmSerial as e,utils as r}from"@avalabs/avalanchejs";import{TxType as a}from"../../models.js";var t=t=>{if(!e.isAddAutoRenewedValidatorTx(t))return null;let o,n;return e.isSigner(t.signer)&&(n=r.bufferToHex(t.signer.proof.publicKey),o=r.bufferToHex(t.signer.proof.signature)),({feeData:e})=>({type:a.AddAutoRenewedValidator,chain:t.getVM(),nodeID:t.nodeId.value(),stake:t.weight.value(),stakeOuts:t.stake,rewardOwner:t.getValidatorRewardsOwner(),delegationRewardOwner:t.getDelegatorRewardsOwner(),owner:t.getOwner(),delegationFee:t.shares.value(),weight:t.weight.value(),autoCompoundRewardShares:t.autoCompoundRewardShares.value(),period:t.period.value(),signer:t.signer,publicKey:n,signature:o,...e})};export{t as default};
@@ -0,0 +1 @@
1
+ import{pvmSerial as a}from"@avalabs/avalanchejs";import{TxType as e}from"../../models.js";var o=o=>a.isSetAutoRenewedValidatorConfigTx(o)?({feeData:a})=>({type:e.SetAutoRenewedValidatorConfig,chain:o.getVM(),txId:o.txId.value(),autoCompoundRewardShares:o.autoCompoundRewardShares.value(),period:o.period.value(),...a}):null;export{o as default};
@@ -164,6 +164,34 @@ type RemoveSubnetValidator = {
164
164
  fromAddresses?: string[];
165
165
  options?: Common.SpendOptions;
166
166
  };
167
+ type AddAutoRenewedValidator = {
168
+ utxoSet: utils.UtxoSet;
169
+ nodeId: string;
170
+ weight: bigint;
171
+ shares: number;
172
+ feeState: pvm.FeeState;
173
+ fromAddresses?: string[];
174
+ rewardAddresses?: string[];
175
+ delegatorRewardAddresses?: string[];
176
+ ownerAddresses?: string[];
177
+ publicKey: Buffer;
178
+ signature: Buffer;
179
+ autoCompoundRewardShares: number;
180
+ period: bigint;
181
+ options?: Common.SpendOptions;
182
+ locktime?: bigint;
183
+ threshold?: number;
184
+ };
185
+ type SetAutoRenewedValidatorConfig = {
186
+ utxoSet: utils.UtxoSet;
187
+ feeState: pvm.FeeState;
188
+ validatorTxId: string;
189
+ auth: number[];
190
+ autoCompoundRewardShares: number;
191
+ period: bigint;
192
+ fromAddresses?: string[];
193
+ options?: Common.SpendOptions;
194
+ };
167
195
  type TransferSubnetOwnershipTx = {
168
196
  utxoSet: utils.UtxoSet;
169
197
  subnetId: string;
@@ -176,4 +204,4 @@ type TransferSubnetOwnershipTx = {
176
204
  locktime?: bigint;
177
205
  };
178
206
 
179
- export type { AddPermissionlessDelegator, AddPermissionlessValidator, AddSubnetValidator, BaseTx, ConsolidateP, ConvertSubnetToL1, CreateChain, CreateSubnet, DisableL1Validator, ExportP, ImportP, IncreaseL1ValidatorBalance, RegisterL1Validator, RemoveSubnetValidator, SetL1ValidatorWeight, TransferSubnetOwnershipTx };
207
+ export type { AddAutoRenewedValidator, AddPermissionlessDelegator, AddPermissionlessValidator, AddSubnetValidator, BaseTx, ConsolidateP, ConvertSubnetToL1, CreateChain, CreateSubnet, DisableL1Validator, ExportP, ImportP, IncreaseL1ValidatorBalance, RegisterL1Validator, RemoveSubnetValidator, SetAutoRenewedValidatorConfig, SetL1ValidatorWeight, TransferSubnetOwnershipTx };
@@ -2,7 +2,7 @@ import * as _avalabs_avalanchejs from '@avalabs/avalanchejs';
2
2
  import { utils, pvm, Common } from '@avalabs/avalanchejs';
3
3
  import { AbstractProvider } from '../providers/AbstractProvider.js';
4
4
  import { ChainIDAlias } from '../models.js';
5
- import { ImportP, ExportP, ConsolidateP, BaseTx, ConvertSubnetToL1, RegisterL1Validator, SetL1ValidatorWeight, DisableL1Validator, IncreaseL1ValidatorBalance, CreateChain, CreateSubnet, AddSubnetValidator, AddPermissionlessValidator, AddPermissionlessDelegator, RemoveSubnetValidator, TransferSubnetOwnershipTx } from './TxBuilderTypes.js';
5
+ import { ImportP, ExportP, ConsolidateP, BaseTx, ConvertSubnetToL1, RegisterL1Validator, SetL1ValidatorWeight, DisableL1Validator, IncreaseL1ValidatorBalance, AddAutoRenewedValidator, SetAutoRenewedValidatorConfig, CreateChain, CreateSubnet, AddSubnetValidator, AddPermissionlessValidator, AddPermissionlessDelegator, RemoveSubnetValidator, TransferSubnetOwnershipTx } from './TxBuilderTypes.js';
6
6
 
7
7
  /**
8
8
  * An abstract class that that is shared by all wallet classes.
@@ -85,6 +85,8 @@ declare abstract class WalletAbstract {
85
85
  setL1ValidatorWeight({ utxoSet, feeState, message, options, fromAddresses, }: SetL1ValidatorWeight): Common.UnsignedTx;
86
86
  disableL1Validator({ utxoSet, feeState, options, fromAddresses, disableAuth, validationId, }: DisableL1Validator): Common.UnsignedTx;
87
87
  increaseL1ValidatorBalance({ utxoSet, feeState, options, fromAddresses, balance, validationId, }: IncreaseL1ValidatorBalance): Common.UnsignedTx;
88
+ addAutoRenewedValidator({ utxoSet, nodeId, weight, shares, feeState, fromAddresses, rewardAddresses, delegatorRewardAddresses, ownerAddresses, publicKey, signature, autoCompoundRewardShares, period, options, locktime, threshold, }: AddAutoRenewedValidator): Common.UnsignedTx;
89
+ setAutoRenewedValidatorConfig({ utxoSet, feeState, validatorTxId, auth, autoCompoundRewardShares, period, fromAddresses, options, }: SetAutoRenewedValidatorConfig): Common.UnsignedTx;
88
90
  createBlockchain({ utxoSet, subnetId, chainName, vmID, fxIds, genesisData, subnetAuth, feeState, options, fromAddresses, }: CreateChain): Common.UnsignedTx;
89
91
  createSubnet({ utxoSet, rewardAddresses, feeState, fromAddresses, options, threshold, locktime, }: CreateSubnet): Common.UnsignedTx;
90
92
  addSubnetValidator({ utxoSet, nodeId, start, end, weight, subnetId, subnetAuth, feeState, fromAddresses, options, }: AddSubnetValidator): Common.UnsignedTx;
@@ -1 +1 @@
1
- import"../utils/addSignaturesToAvalancheTx.js";import"../utils/convertGlacierUtxo.js";import"../utils/createAvalancheEvmUnsignedTx.js";import"../utils/createAvalancheUnsignedTx.js";import"create-hash";import"bip32";import{getUTXOsForAddresses as e}from"../utils/getAllUTXOs.js";import"../utils/getAssetBalance.js";import{utils as s,TransferableOutput as t,avm as r,pvm as d,evm as n,pvmSerial as o,PChainOwner as i,L1Validator as a,networkIDs as m}from"@avalabs/avalanchejs";import{getStakeForAddresses as h}from"../utils/getStakeForAddresses.js";import"../utils/getUtxosByTxFromGlacier.js";import"bip39";import"../utils/parseAvalancheTx.js";import"../utils/populateCredential.js";import{sortUTXOsByAmount as g,sortUTXOsByAmountAscending as u,sortUTXOsStaking as A}from"../utils/sortUTXOs.js";import"../utils/txSizeLimits.js";import"bip32-path";import{strip0x as c}from"@avalabs/core-utils-sdk";import{assertFeeStateProvided as p}from"../../utils/assertFeeStateProvided.js";const{parse:f,hexToBuffer:x}=s;class l{constructor(e){this.provider=e}setProvider(e){this.provider=e}getProvider(){return this.provider}async getUTXOs(s){const t=this.provider.getApi(s);return e(this.getAddresses(s),t)}async getStake(){const e=this.provider.getApiP();return h(this.getAddresses("P"),e)}async getAtomicUTXOs(s,t){if(s===t)throw new Error("Chain can not be the same as source chain.");const r=this.provider.getApi(s),d=this.provider.getChainID(t);return e(this.getAddresses(s),r,{sourceChain:d,addresses:[]})}exportX(e,s,d,n){n=n||this.getCurrentAddress(d);const o=f(n)[2],i=this.provider.getAvaxID(),a=t.fromNative(i,e,[o]),m=g(s.getUTXOs(),!0),h=this.provider.getChainID(d),u=this.getAddresses("X").map((e=>f(e)[2])),A=f(this.getChangeAddress("X"))[2];return r.newExportTx(this.provider.getContext(),h,u,m,[a],{threshold:1,changeAddresses:[A]})}importP({utxoSet:e,sourceChain:s,toAddress:t,threshold:r,feeState:n,locktime:o}){const i=this.provider.getChainID(s),a=this.getAddresses("P").map((e=>f(e)[2]));f(this.getChangeAddress("P"))[2],t=t||this.getCurrentAddress("P");const m=f(t)[2],h=e.getUTXOs();return p(n),d.newImportTx({fromAddressesBytes:a,utxos:h,toAddressesBytes:[m],sourceChainId:i,threshold:r,feeState:n,locktime:o},this.provider.getContext())}importX(e,s,t){const d=this.provider.getChainID(s),n=this.getAddresses("X").map((e=>f(e)[2])),o=f(this.getChangeAddress("X"))[2];t=t||this.getCurrentAddress("X");const i=f(t)[2];return r.newImportTx(this.provider.getContext(),d,e.getUTXOs(),[i],n,{changeAddresses:[o]})}importC(e,s,t,r,d){const o=this.provider.getChainID(s),i=this.getAddresses("C").map((e=>f(e)[2]));d=d||this.getAddressEVM();const a=Buffer.from(c(d),"hex");return n.newImportTxFromBaseFee(this.provider.getContext(),a,i,e.getUTXOs(),o,t,r)}exportC(e,s,t,r,d){const o=x(this.getAddressEVM()),i=this.provider.getChainID(s);d=d||this.getCurrentAddress(s);const a=f(d)[2],m=r/BigInt(1e9);return n.newExportTxFromBaseFee(this.provider.getContext(),m,e,i,o,[a],t)}exportP({amount:e,utxoSet:s,destination:r,feeState:n,toAddress:o}){o=o||this.getCurrentAddress(r);const i=f(o)[2],a=this.provider.getAvaxID(),m=t.fromNative(a,e,[i]),h=g(s.getUTXOs(),!0),u=this.provider.getChainID(r),A=this.getAddresses("P").map((e=>f(e)[2])),c=f(this.getChangeAddress("P"))[2];return p(n),d.newExportTx({changeAddressesBytes:[c],fromAddressesBytes:A,utxos:h,outputs:[m],destinationChainId:u,feeState:n},this.provider.getContext())}consolidateP({utxoSet:e,amount:s,feeState:r,toAddress:n,options:o}){const i=u(e.getUTXOs());n=n??this.getCurrentAddress("P");const a=f(n)[2],m=this.provider.getContext(),h=[t.fromNative(m.avaxAssetID,s,[a])],g=this.getAddresses("P").map((e=>f(e)[2])),A=f(this.getChangeAddress("P"))[2],c=o?.changeAddresses??[A];return p(r),d.newBaseTx({changeAddressesBytes:c,fromAddressesBytes:g,utxos:i,outputs:h,minIssuanceTime:o?.minIssuanceTime,memo:o?.memo,feeState:r},m)}baseTX({utxoSet:e,chain:s,toAddress:n,amountsPerAsset:o,feeState:i,options:a,fromAddresses:m}){const[h,u,A]=f(n);if(h!==s||u!==this.provider.getHrp())throw new Error(`Invalid recipient address "${n}"`);const c=Object.entries(o).map((([e,s])=>t.fromNative(e,s,[A]))),x=g(e.getUTXOs(),!0),l=(m??this.getAddresses(s)).map((e=>f(e)[2])),T=f(this.getChangeAddress("P"))[2],I=a?.changeAddresses??[T];return"X"===s?r.newBaseTx(this.provider.getContext(),l,x,c,a):(p(i),d.newBaseTx({changeAddressesBytes:I,fromAddressesBytes:l,utxos:x,outputs:c,minIssuanceTime:a?.minIssuanceTime,memo:a?.memo,feeState:i},this.provider.getContext()))}convertSubnetToL1({utxoSet:e,chainId:t,subnetId:r,subnetAuth:n,feeState:m,address:h,validators:u,options:A,fromAddresses:c}){const p=(c??this.getAddresses("P")).map((e=>f(e)[2])),x=f(this.getChangeAddress("P"))[2],l=A?.changeAddresses??[x],T=u.map((({nodeId:e,pubKey:t,signature:r,balance:d,weight:n,deactivationOwner:m,remainingBalanceOwner:h})=>{const g=new o.ProofOfPossession(Uint8Array.from(s.hexToBuffer(t)),Uint8Array.from(s.hexToBuffer(r))),u=i.fromNative(h.addresses.map((e=>f(e)[2])),h.threshold??1),A=i.fromNative(m.addresses.map((e=>f(e)[2])),m.threshold??1);return a.fromNative(e,n,d,g,u,A)}));return d.newConvertSubnetToL1Tx({changeAddressesBytes:l,validators:T,fromAddressesBytes:p,address:f(h)[2],chainId:t,subnetId:r,subnetAuth:n,feeState:m,utxos:g(e.getUTXOs(),!0)},this.provider.getContext())}registerL1Validator({utxoSet:e,balance:t,signature:r,message:n,feeState:o,fromAddresses:i,options:a}){const m=(i??this.getAddresses("P")).map((e=>f(e)[2])),h=f(this.getChangeAddress("P"))[2],u=a?.changeAddresses??[h];return d.newRegisterL1ValidatorTx({utxos:g(e.getUTXOs(),!0),balance:t,blsSignature:Uint8Array.from(s.hexToBuffer(r)),changeAddressesBytes:u,feeState:o,fromAddressesBytes:m,memo:a?.memo,message:Uint8Array.from(s.hexToBuffer(n)),minIssuanceTime:a?.minIssuanceTime},this.provider.getContext())}setL1ValidatorWeight({utxoSet:e,feeState:t,message:r,options:n,fromAddresses:o}){const i=(o??this.getAddresses("P")).map((e=>f(e)[2])),a=f(this.getChangeAddress("P"))[2],m=n?.changeAddresses??[a];return d.newSetL1ValidatorWeightTx({utxos:g(e.getUTXOs(),!0),changeAddressesBytes:m,feeState:t,fromAddressesBytes:i,memo:n?.memo,message:Uint8Array.from(s.hexToBuffer(r)),minIssuanceTime:n?.minIssuanceTime},this.provider.getContext())}disableL1Validator({utxoSet:e,feeState:s,options:t,fromAddresses:r,disableAuth:n,validationId:o}){const i=(r??this.getAddresses("P")).map((e=>f(e)[2])),a=f(this.getChangeAddress("P"))[2],m=t?.changeAddresses??[a];return d.newDisableL1ValidatorTx({disableAuth:n,validationId:o,utxos:g(e.getUTXOs(),!0),changeAddressesBytes:m,feeState:s,fromAddressesBytes:i,memo:t?.memo,minIssuanceTime:t?.minIssuanceTime},this.provider.getContext())}increaseL1ValidatorBalance({utxoSet:e,feeState:s,options:t,fromAddresses:r,balance:n,validationId:o}){const i=(r??this.getAddresses("P")).map((e=>f(e)[2])),a=f(this.getChangeAddress("P"))[2],m=t?.changeAddresses??[a];return d.newIncreaseL1ValidatorBalanceTx({balance:n,validationId:o,utxos:g(e.getUTXOs(),!0),changeAddressesBytes:m,feeState:s,fromAddressesBytes:i,memo:t?.memo,minIssuanceTime:t?.minIssuanceTime},this.provider.getContext())}createBlockchain({utxoSet:e,subnetId:s,chainName:t,vmID:r,fxIds:n,genesisData:o,subnetAuth:i,feeState:a,options:m,fromAddresses:h}){const u=g(e.getUTXOs(),!0),A=(h??this.getAddresses("P")).map((e=>f(e)[2])),c=f(this.getChangeAddress("P"))[2],x=m?.changeAddresses??[c];return p(a),d.newCreateChainTx({chainName:t,feeState:a,fromAddressesBytes:A,fxIds:n,genesisData:o,subnetAuth:i,subnetId:s,utxos:u,vmId:r,changeAddressesBytes:x},this.provider.getContext())}createSubnet({utxoSet:e,rewardAddresses:s,feeState:t,fromAddresses:r,options:n,threshold:o,locktime:i}){const a=g(e.getUTXOs(),!0),m=(r??this.getAddresses("P")).map((e=>f(e)[2])),h=f(this.getChangeAddress("P"))[2],u=n?.changeAddresses??[h],A=s.map((e=>f(e)[2]));return p(t),d.newCreateSubnetTx({fromAddressesBytes:m,changeAddressesBytes:u,utxos:a,minIssuanceTime:n?.minIssuanceTime,memo:n?.memo,feeState:t,threshold:o,locktime:i,subnetOwners:A},this.provider.getContext())}addSubnetValidator({utxoSet:e,nodeId:s,start:t,end:r,weight:n,subnetId:o,subnetAuth:i,feeState:a,fromAddresses:m,options:h}){const u=g(e.getUTXOs(),!0),A=(m??this.getAddresses("P")).map((e=>f(e)[2])),c=f(this.getChangeAddress("P"))[2],x=h?.changeAddresses??[c];return p(a),d.newAddSubnetValidatorTx({changeAddressesBytes:x,fromAddressesBytes:A,utxos:u,minIssuanceTime:h?.minIssuanceTime,memo:h?.memo,nodeId:s,start:t,end:r,weight:n,subnetId:o,subnetAuth:i,feeState:a},this.provider.getContext())}addPermissionlessValidator({utxoSet:e,nodeId:s,start:t,end:r,weight:n,subnetId:o,shares:i,feeState:a,fromAddresses:h,rewardAddresses:g,delegatorRewardAddresses:u,publicKey:c,signature:x,options:l,threshold:T,locktime:I,stakingAssetId:v}){const C=A(e.getUTXOs()),S=(h??this.getAddresses("P")).map((e=>f(e)[2])),b=(g??[this.getCurrentAddress("P")]).map((e=>f(e)[2])),P=(u??[this.getCurrentAddress("P")]).map((e=>f(e)[2]));if(!(o!==m.PrimaryNetworkID.toString()||c&&x))throw new Error("Must provide public key and signature for primary subnet.");const w=f(this.getChangeAddress("P"))[2],B=l?.changeAddresses??[w];return p(a),d.newAddPermissionlessValidatorTx({fromAddressesBytes:S,delegatorRewardsOwner:P,utxos:C,minIssuanceTime:l?.minIssuanceTime,memo:l?.memo,changeAddressesBytes:B,nodeId:s,start:t,end:r,weight:n,subnetId:o,shares:i,feeState:a,publicKey:c,rewardAddresses:b,signature:x,locktime:I,threshold:T,stakingAssetId:v},this.provider.getContext())}addPermissionlessDelegator({utxoSet:e,nodeId:s,start:t,end:r,weight:n,subnetId:o,fromAddresses:i,rewardAddresses:a,options:m,locktime:h,feeState:g,threshold:u,stakingAssetId:c}){const x=A(e.getUTXOs()),l=(i??this.getAddresses("P")).map((e=>f(e)[2])),T=(a??[this.getCurrentAddress("P")]).map((e=>f(e)[2])),I=f(this.getChangeAddress("P"))[2],v=m?.changeAddresses??[I];return p(g),d.newAddPermissionlessDelegatorTx({fromAddressesBytes:l,utxos:x,minIssuanceTime:m?.minIssuanceTime,memo:m?.memo,changeAddressesBytes:v,nodeId:s,start:t,end:r,weight:n,subnetId:o,rewardAddresses:T,locktime:h,stakingAssetId:c,threshold:u,feeState:g},this.provider.getContext())}removeSubnetValidator({utxoSet:e,nodeId:s,subnetId:t,subnetAuth:r,fromAddresses:n,feeState:o,options:i}){const a=g(e.getUTXOs(),!0),m=(n??this.getAddresses("P")).map((e=>f(e)[2])),h=f(this.getChangeAddress("P"))[2],u=i?.changeAddresses??[h];return p(o),d.newRemoveSubnetValidatorTx({changeAddressesBytes:u,fromAddressesBytes:m,utxos:a,minIssuanceTime:i?.minIssuanceTime,memo:i?.memo,nodeId:s,subnetId:t,subnetAuth:r,feeState:o},this.provider.getContext())}transferSubnetOwnershipTx({utxoSet:e,subnetId:s,subnetAuth:t,subnetOwners:r,feeState:n,fromAddresses:o,options:i,threshold:a,locktime:m}){const h=g(e.getUTXOs(),!0),u=(o??this.getAddresses("P")).map((e=>f(e)[2])),A=f(this.getChangeAddress("P"))[2],c=i?.changeAddresses??[A],x=r.map((e=>f(e)[2]));return p(n),d.newTransferSubnetOwnershipTx({changeAddressesBytes:c,fromAddressesBytes:u,utxos:h,minIssuanceTime:i?.minIssuanceTime,memo:i?.memo,subnetId:s,subnetAuth:t,subnetOwners:x,feeState:n,threshold:a,locktime:m},this.provider.getContext())}}export{l as WalletAbstract};
1
+ import"../utils/addSignaturesToAvalancheTx.js";import"../utils/convertGlacierUtxo.js";import"../utils/createAvalancheEvmUnsignedTx.js";import"../utils/createAvalancheUnsignedTx.js";import"create-hash";import"bip32";import{getUTXOsForAddresses as e}from"../utils/getAllUTXOs.js";import"../utils/getAssetBalance.js";import{utils as s,TransferableOutput as t,avm as r,pvm as d,evm as o,pvmSerial as n,PChainOwner as i,L1Validator as a,networkIDs as m}from"@avalabs/avalanchejs";import{getStakeForAddresses as h}from"../utils/getStakeForAddresses.js";import"../utils/getUtxosByTxFromGlacier.js";import"bip39";import"../utils/parseAvalancheTx.js";import"../utils/populateCredential.js";import{sortUTXOsByAmount as g,sortUTXOsByAmountAscending as u,sortUTXOsStaking as A}from"../utils/sortUTXOs.js";import"../utils/txSizeLimits.js";import"bip32-path";import{strip0x as c}from"@avalabs/core-utils-sdk";import{assertFeeStateProvided as p}from"../../utils/assertFeeStateProvided.js";const{parse:f,hexToBuffer:l}=s;class x{constructor(e){this.provider=e}setProvider(e){this.provider=e}getProvider(){return this.provider}async getUTXOs(s){const t=this.provider.getApi(s);return e(this.getAddresses(s),t)}async getStake(){const e=this.provider.getApiP();return h(this.getAddresses("P"),e)}async getAtomicUTXOs(s,t){if(s===t)throw new Error("Chain can not be the same as source chain.");const r=this.provider.getApi(s),d=this.provider.getChainID(t);return e(this.getAddresses(s),r,{sourceChain:d,addresses:[]})}exportX(e,s,d,o){o=o||this.getCurrentAddress(d);const n=f(o)[2],i=this.provider.getAvaxID(),a=t.fromNative(i,e,[n]),m=g(s.getUTXOs(),!0),h=this.provider.getChainID(d),u=this.getAddresses("X").map((e=>f(e)[2])),A=f(this.getChangeAddress("X"))[2];return r.newExportTx(this.provider.getContext(),h,u,m,[a],{threshold:1,changeAddresses:[A]})}importP({utxoSet:e,sourceChain:s,toAddress:t,threshold:r,feeState:o,locktime:n}){const i=this.provider.getChainID(s),a=this.getAddresses("P").map((e=>f(e)[2]));f(this.getChangeAddress("P"))[2],t=t||this.getCurrentAddress("P");const m=f(t)[2],h=e.getUTXOs();return p(o),d.newImportTx({fromAddressesBytes:a,utxos:h,toAddressesBytes:[m],sourceChainId:i,threshold:r,feeState:o,locktime:n},this.provider.getContext())}importX(e,s,t){const d=this.provider.getChainID(s),o=this.getAddresses("X").map((e=>f(e)[2])),n=f(this.getChangeAddress("X"))[2];t=t||this.getCurrentAddress("X");const i=f(t)[2];return r.newImportTx(this.provider.getContext(),d,e.getUTXOs(),[i],o,{changeAddresses:[n]})}importC(e,s,t,r,d){const n=this.provider.getChainID(s),i=this.getAddresses("C").map((e=>f(e)[2]));d=d||this.getAddressEVM();const a=Buffer.from(c(d),"hex");return o.newImportTxFromBaseFee(this.provider.getContext(),a,i,e.getUTXOs(),n,t,r)}exportC(e,s,t,r,d){const n=l(this.getAddressEVM()),i=this.provider.getChainID(s);d=d||this.getCurrentAddress(s);const a=f(d)[2],m=r/BigInt(1e9);return o.newExportTxFromBaseFee(this.provider.getContext(),m,e,i,n,[a],t)}exportP({amount:e,utxoSet:s,destination:r,feeState:o,toAddress:n}){n=n||this.getCurrentAddress(r);const i=f(n)[2],a=this.provider.getAvaxID(),m=t.fromNative(a,e,[i]),h=g(s.getUTXOs(),!0),u=this.provider.getChainID(r),A=this.getAddresses("P").map((e=>f(e)[2])),c=f(this.getChangeAddress("P"))[2];return p(o),d.newExportTx({changeAddressesBytes:[c],fromAddressesBytes:A,utxos:h,outputs:[m],destinationChainId:u,feeState:o},this.provider.getContext())}consolidateP({utxoSet:e,amount:s,feeState:r,toAddress:o,options:n}){const i=u(e.getUTXOs());o=o??this.getCurrentAddress("P");const a=f(o)[2],m=this.provider.getContext(),h=[t.fromNative(m.avaxAssetID,s,[a])],g=this.getAddresses("P").map((e=>f(e)[2])),A=f(this.getChangeAddress("P"))[2],c=n?.changeAddresses??[A];return p(r),d.newBaseTx({changeAddressesBytes:c,fromAddressesBytes:g,utxos:i,outputs:h,minIssuanceTime:n?.minIssuanceTime,memo:n?.memo,feeState:r},m)}baseTX({utxoSet:e,chain:s,toAddress:o,amountsPerAsset:n,feeState:i,options:a,fromAddresses:m}){const[h,u,A]=f(o);if(h!==s||u!==this.provider.getHrp())throw new Error(`Invalid recipient address "${o}"`);const c=Object.entries(n).map((([e,s])=>t.fromNative(e,s,[A]))),l=g(e.getUTXOs(),!0),x=(m??this.getAddresses(s)).map((e=>f(e)[2])),T=f(this.getChangeAddress("P"))[2],I=a?.changeAddresses??[T];return"X"===s?r.newBaseTx(this.provider.getContext(),x,l,c,a):(p(i),d.newBaseTx({changeAddressesBytes:I,fromAddressesBytes:x,utxos:l,outputs:c,minIssuanceTime:a?.minIssuanceTime,memo:a?.memo,feeState:i},this.provider.getContext()))}convertSubnetToL1({utxoSet:e,chainId:t,subnetId:r,subnetAuth:o,feeState:m,address:h,validators:u,options:A,fromAddresses:c}){const p=(c??this.getAddresses("P")).map((e=>f(e)[2])),l=f(this.getChangeAddress("P"))[2],x=A?.changeAddresses??[l],T=u.map((({nodeId:e,pubKey:t,signature:r,balance:d,weight:o,deactivationOwner:m,remainingBalanceOwner:h})=>{const g=new n.ProofOfPossession(Uint8Array.from(s.hexToBuffer(t)),Uint8Array.from(s.hexToBuffer(r))),u=i.fromNative(h.addresses.map((e=>f(e)[2])),h.threshold??1),A=i.fromNative(m.addresses.map((e=>f(e)[2])),m.threshold??1);return a.fromNative(e,o,d,g,u,A)}));return d.newConvertSubnetToL1Tx({changeAddressesBytes:x,validators:T,fromAddressesBytes:p,address:f(h)[2],chainId:t,subnetId:r,subnetAuth:o,feeState:m,utxos:g(e.getUTXOs(),!0)},this.provider.getContext())}registerL1Validator({utxoSet:e,balance:t,signature:r,message:o,feeState:n,fromAddresses:i,options:a}){const m=(i??this.getAddresses("P")).map((e=>f(e)[2])),h=f(this.getChangeAddress("P"))[2],u=a?.changeAddresses??[h];return d.newRegisterL1ValidatorTx({utxos:g(e.getUTXOs(),!0),balance:t,blsSignature:Uint8Array.from(s.hexToBuffer(r)),changeAddressesBytes:u,feeState:n,fromAddressesBytes:m,memo:a?.memo,message:Uint8Array.from(s.hexToBuffer(o)),minIssuanceTime:a?.minIssuanceTime},this.provider.getContext())}setL1ValidatorWeight({utxoSet:e,feeState:t,message:r,options:o,fromAddresses:n}){const i=(n??this.getAddresses("P")).map((e=>f(e)[2])),a=f(this.getChangeAddress("P"))[2],m=o?.changeAddresses??[a];return d.newSetL1ValidatorWeightTx({utxos:g(e.getUTXOs(),!0),changeAddressesBytes:m,feeState:t,fromAddressesBytes:i,memo:o?.memo,message:Uint8Array.from(s.hexToBuffer(r)),minIssuanceTime:o?.minIssuanceTime},this.provider.getContext())}disableL1Validator({utxoSet:e,feeState:s,options:t,fromAddresses:r,disableAuth:o,validationId:n}){const i=(r??this.getAddresses("P")).map((e=>f(e)[2])),a=f(this.getChangeAddress("P"))[2],m=t?.changeAddresses??[a];return d.newDisableL1ValidatorTx({disableAuth:o,validationId:n,utxos:g(e.getUTXOs(),!0),changeAddressesBytes:m,feeState:s,fromAddressesBytes:i,memo:t?.memo,minIssuanceTime:t?.minIssuanceTime},this.provider.getContext())}increaseL1ValidatorBalance({utxoSet:e,feeState:s,options:t,fromAddresses:r,balance:o,validationId:n}){const i=(r??this.getAddresses("P")).map((e=>f(e)[2])),a=f(this.getChangeAddress("P"))[2],m=t?.changeAddresses??[a];return d.newIncreaseL1ValidatorBalanceTx({balance:o,validationId:n,utxos:g(e.getUTXOs(),!0),changeAddressesBytes:m,feeState:s,fromAddressesBytes:i,memo:t?.memo,minIssuanceTime:t?.minIssuanceTime},this.provider.getContext())}addAutoRenewedValidator({utxoSet:e,nodeId:s,weight:t,shares:r,feeState:o,fromAddresses:n,rewardAddresses:i,delegatorRewardAddresses:a,ownerAddresses:m,publicKey:h,signature:g,autoCompoundRewardShares:u,period:c,options:p,locktime:l,threshold:x}){const T=A(e.getUTXOs()),I=(n??this.getAddresses("P")).map((e=>f(e)[2])),C=(i??[this.getCurrentAddress("P")]).map((e=>f(e)[2])),v=(a??[this.getCurrentAddress("P")]).map((e=>f(e)[2])),S=(m??[this.getCurrentAddress("P")]).map((e=>f(e)[2])),w=f(this.getChangeAddress("P"))[2],b=p?.changeAddresses??[w];return d.newAddAutoRenewedValidatorTx({fromAddressesBytes:I,delegatorRewardsOwner:v,utxos:T,minIssuanceTime:p?.minIssuanceTime,memo:p?.memo,changeAddressesBytes:b,nodeId:s,weight:t,shares:r,feeState:o,publicKey:h,rewardAddresses:C,signature:g,locktime:l,threshold:x,ownerAddresses:S,autoCompoundRewardShares:u,period:c},this.provider.getContext())}setAutoRenewedValidatorConfig({utxoSet:e,feeState:s,validatorTxId:t,auth:r,autoCompoundRewardShares:o,period:n,fromAddresses:i,options:a}){const m=(i??this.getAddresses("P")).map((e=>f(e)[2])),h=f(this.getChangeAddress("P"))[2],u=a?.changeAddresses??[h];return d.newSetAutoRenewedValidatorConfigTx({utxos:g(e.getUTXOs(),!0),changeAddressesBytes:u,feeState:s,fromAddressesBytes:m,memo:a?.memo,minIssuanceTime:a?.minIssuanceTime,validatorTxId:t,auth:r,autoCompoundRewardShares:o,period:n},this.provider.getContext())}createBlockchain({utxoSet:e,subnetId:s,chainName:t,vmID:r,fxIds:o,genesisData:n,subnetAuth:i,feeState:a,options:m,fromAddresses:h}){const u=g(e.getUTXOs(),!0),A=(h??this.getAddresses("P")).map((e=>f(e)[2])),c=f(this.getChangeAddress("P"))[2],l=m?.changeAddresses??[c];return p(a),d.newCreateChainTx({chainName:t,feeState:a,fromAddressesBytes:A,fxIds:o,genesisData:n,subnetAuth:i,subnetId:s,utxos:u,vmId:r,changeAddressesBytes:l},this.provider.getContext())}createSubnet({utxoSet:e,rewardAddresses:s,feeState:t,fromAddresses:r,options:o,threshold:n,locktime:i}){const a=g(e.getUTXOs(),!0),m=(r??this.getAddresses("P")).map((e=>f(e)[2])),h=f(this.getChangeAddress("P"))[2],u=o?.changeAddresses??[h],A=s.map((e=>f(e)[2]));return p(t),d.newCreateSubnetTx({fromAddressesBytes:m,changeAddressesBytes:u,utxos:a,minIssuanceTime:o?.minIssuanceTime,memo:o?.memo,feeState:t,threshold:n,locktime:i,subnetOwners:A},this.provider.getContext())}addSubnetValidator({utxoSet:e,nodeId:s,start:t,end:r,weight:o,subnetId:n,subnetAuth:i,feeState:a,fromAddresses:m,options:h}){const u=g(e.getUTXOs(),!0),A=(m??this.getAddresses("P")).map((e=>f(e)[2])),c=f(this.getChangeAddress("P"))[2],l=h?.changeAddresses??[c];return p(a),d.newAddSubnetValidatorTx({changeAddressesBytes:l,fromAddressesBytes:A,utxos:u,minIssuanceTime:h?.minIssuanceTime,memo:h?.memo,nodeId:s,start:t,end:r,weight:o,subnetId:n,subnetAuth:i,feeState:a},this.provider.getContext())}addPermissionlessValidator({utxoSet:e,nodeId:s,start:t,end:r,weight:o,subnetId:n,shares:i,feeState:a,fromAddresses:h,rewardAddresses:g,delegatorRewardAddresses:u,publicKey:c,signature:l,options:x,threshold:T,locktime:I,stakingAssetId:C}){const v=A(e.getUTXOs()),S=(h??this.getAddresses("P")).map((e=>f(e)[2])),w=(g??[this.getCurrentAddress("P")]).map((e=>f(e)[2])),b=(u??[this.getCurrentAddress("P")]).map((e=>f(e)[2]));if(!(n!==m.PrimaryNetworkID.toString()||c&&l))throw new Error("Must provide public key and signature for primary subnet.");const P=f(this.getChangeAddress("P"))[2],B=x?.changeAddresses??[P];return p(a),d.newAddPermissionlessValidatorTx({fromAddressesBytes:S,delegatorRewardsOwner:b,utxos:v,minIssuanceTime:x?.minIssuanceTime,memo:x?.memo,changeAddressesBytes:B,nodeId:s,start:t,end:r,weight:o,subnetId:n,shares:i,feeState:a,publicKey:c,rewardAddresses:w,signature:l,locktime:I,threshold:T,stakingAssetId:C},this.provider.getContext())}addPermissionlessDelegator({utxoSet:e,nodeId:s,start:t,end:r,weight:o,subnetId:n,fromAddresses:i,rewardAddresses:a,options:m,locktime:h,feeState:g,threshold:u,stakingAssetId:c}){const l=A(e.getUTXOs()),x=(i??this.getAddresses("P")).map((e=>f(e)[2])),T=(a??[this.getCurrentAddress("P")]).map((e=>f(e)[2])),I=f(this.getChangeAddress("P"))[2],C=m?.changeAddresses??[I];return p(g),d.newAddPermissionlessDelegatorTx({fromAddressesBytes:x,utxos:l,minIssuanceTime:m?.minIssuanceTime,memo:m?.memo,changeAddressesBytes:C,nodeId:s,start:t,end:r,weight:o,subnetId:n,rewardAddresses:T,locktime:h,stakingAssetId:c,threshold:u,feeState:g},this.provider.getContext())}removeSubnetValidator({utxoSet:e,nodeId:s,subnetId:t,subnetAuth:r,fromAddresses:o,feeState:n,options:i}){const a=g(e.getUTXOs(),!0),m=(o??this.getAddresses("P")).map((e=>f(e)[2])),h=f(this.getChangeAddress("P"))[2],u=i?.changeAddresses??[h];return p(n),d.newRemoveSubnetValidatorTx({changeAddressesBytes:u,fromAddressesBytes:m,utxos:a,minIssuanceTime:i?.minIssuanceTime,memo:i?.memo,nodeId:s,subnetId:t,subnetAuth:r,feeState:n},this.provider.getContext())}transferSubnetOwnershipTx({utxoSet:e,subnetId:s,subnetAuth:t,subnetOwners:r,feeState:o,fromAddresses:n,options:i,threshold:a,locktime:m}){const h=g(e.getUTXOs(),!0),u=(n??this.getAddresses("P")).map((e=>f(e)[2])),A=f(this.getChangeAddress("P"))[2],c=i?.changeAddresses??[A],l=r.map((e=>f(e)[2]));return p(o),d.newTransferSubnetOwnershipTx({changeAddressesBytes:c,fromAddressesBytes:u,utxos:h,minIssuanceTime:i?.minIssuanceTime,memo:i?.memo,subnetId:s,subnetAuth:t,subnetOwners:l,feeState:o,threshold:a,locktime:m},this.provider.getContext())}}export{x as WalletAbstract};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@avalabs/core-wallets-sdk",
3
- "version": "3.1.0-alpha.86",
3
+ "version": "3.1.0-alpha.87",
4
4
  "license": "Limited Ecosystem License",
5
5
  "private": false,
6
6
  "type": "module",
@@ -39,7 +39,7 @@
39
39
  "ts-jest": "29.1.2"
40
40
  },
41
41
  "dependencies": {
42
- "@avalabs/avalanchejs": "5.1.0-alpha.3",
42
+ "@avalabs/avalanchejs": "5.1.0-alpha.4",
43
43
  "@avalabs/core-chains-sdk": "3.1.0-alpha.61",
44
44
  "@avalabs/core-utils-sdk": "3.1.0-alpha.61",
45
45
  "@avalabs/glacier-sdk": "3.1.0-alpha.61",
@@ -71,5 +71,5 @@
71
71
  "peerDependencies": {
72
72
  "ethers": "^6.7.1"
73
73
  },
74
- "gitHead": "f80967db1c7b67c3dbb7e2f83d4c19f0ec4c3159"
74
+ "gitHead": "357ec75fdab377407cb79fe484a49cb5083b2bb4"
75
75
  }