@swapkit/toolboxes 4.14.5 → 4.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- var c2=Object.create;var{getPrototypeOf:u2,defineProperty:WX,getOwnPropertyNames:q2,getOwnPropertyDescriptor:o2}=Object,L2=Object.prototype.hasOwnProperty;function z2(X){return this[X]}var p2,n2,m0=(X,$,J)=>{var Z=X!=null&&typeof X==="object";if(Z){var j=$?p2??=new WeakMap:n2??=new WeakMap,G=j.get(X);if(G)return G}J=X!=null?c2(u2(X)):{};let Q=$||!X||!X.__esModule?WX(J,"default",{value:X,enumerable:!0}):J;for(let q of q2(X))if(!L2.call(Q,q))WX(Q,q,{get:z2.bind(X,q),enumerable:!0});if(Z)j.set(X,Q);return Q},d2=(X)=>{var $=(Y2??=new WeakMap).get(X),J;if($)return $;if($=WX({},"__esModule",{value:!0}),X&&typeof X==="object"||typeof X==="function"){for(var Z of q2(X))if(!L2.call($,Z))WX($,Z,{get:z2.bind(X,Z),enumerable:!(J=o2(X,Z))||J.enumerable})}return Y2.set(X,$),$},Y2;var r2=(X)=>X;function i2(X,$){this[X]=r2.bind(null,$)}var s2=(X,$)=>{for(var J in $)WX(X,J,{get:$[J],enumerable:!0,configurable:!0,set:i2.bind($,J)})};var R=(X,$)=>()=>(X&&($=X(X=0)),$);function W2({deriveAddress:X,getBalance:$,getUtxos:J}){async function Z(q){let{count:Y,startIndex:z=0,change:L=!1}=q,W=[];for(let B=0;B<Y;B++){let _=await X({change:L,index:z+B});if(_)W.push(_)}return W}async function j(q){let{gapLimit:Y=20,change:z=!1}=q??{},L=[],W=0,B=0;while(W<Y){let _=await X({change:z,index:B});if(!_)break;if((await $(_.address)).some((P)=>P.getValue("number")>0))L.push(_),W=0;else W++;B++}return L}async function G(q=20){let[Y,z]=await Promise.all([j({change:!1,gapLimit:q}),j({change:!0,gapLimit:q})]),L=[...Y,...z],W=await Promise.all(L.map(async(_)=>{let I=(await $(_.address)).reduce((P,a)=>P+a.getValue("number"),0);return{..._,balance:I}})),B=W.reduce((_,C)=>_+C.balance,0);return{addresses:W,total:B}}async function Q(q=20){let[Y,z]=await Promise.all([j({change:!1,gapLimit:q}),j({change:!0,gapLimit:q})]),L=[...Y,...z];return(await Promise.all(L.map(async(B)=>{return(await J(B.address)).map((C)=>({...C,address:B.address,derivationIndex:B.index,isChange:B.change}))}))).flat()}return{deriveAddresses:Z,getAggregatedBalance:G,getAggregatedUtxos:Q,scanForAddresses:j}}function B2(){function X(){let $=Date.now(),J=cX||$;return cX=J,$>cX?$:J+1}return a2+X().toString(36)}function _2(X){return async function(J,Z=!0){let j=await U2.SwapKitApi.getChainBalance({address:J,chain:X,scamFilter:Z}),{baseDecimal:G}=BX.getChainConfig(X),Q=j.map(({identifier:Y,value:z,decimal:L})=>{return new BX.AssetValue({decimal:L||G,identifier:Y,value:z})});if(!Q.some((Y)=>Y.isGasAsset))return[BX.AssetValue.from({chain:X}),...Q];return Q}}var BX,U2,a2,cX=0;var uX=R(()=>{BX=require("@swapkit/helpers"),U2=require("@swapkit/helpers/api"),a2=typeof process<"u"&&process.pid?process.pid.toString(36):""});async function t2({chain:X,txHash:$}){let J=`${_X(X)}/push/transaction`,Z=JSON.stringify({data:$});try{let j=await N.RequestClient.post(J,{body:Z,headers:{"Content-Type":"application/json"}});if(j.context.code!==200)throw new N.SwapKitError("toolbox_utxo_broadcast_failed",{error:j.context.error||"Transaction broadcast failed"});return j.data?.transaction_hash||$}catch(j){let G=await N.getRPCUrl(X);if(G){let Q=JSON.stringify({id:B2(),jsonrpc:"2.0",method:"sendrawtransaction",params:[$]}),q=await N.RequestClient.post(G,{body:Q,headers:{"Content-Type":"application/json"}});if(q.error)throw new N.SwapKitError("toolbox_utxo_broadcast_failed",{error:q.error?.message});if(q.result.includes('"code":-26'))throw new N.SwapKitError("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return q.result}throw j}}function _X(X){return`https://api.blockchair.com/${e2(X)}`}function M2(X){switch(X){case N.Chain.Bitcoin:return 5;case N.Chain.Dogecoin:return 1e4;case N.Chain.Litecoin:return 1;case N.Chain.Zcash:return 1;default:return 2}}function e2(X){switch(X){case N.Chain.BitcoinCash:return"bitcoin-cash";case N.Chain.Litecoin:return"litecoin";case N.Chain.Dash:return"dash";case N.Chain.Dogecoin:return"dogecoin";case N.Chain.Zcash:return"zcash";case N.Chain.Polkadot:return"polkadot";default:return"bitcoin"}}async function X0(X){try{let{feePerKb:$}=await N.RequestClient.get(`https://app.bitgo.com/api/v2/${X.toLowerCase()}/tx/fee`),J=$/1000;return Math.max(J,M2(X))}catch{return M2(X)}}async function FX(X,$){let J=await N.RequestClient.get(`${X}${$?`${X.includes("?")?"&":"?"}key=${$}`:""}`);if(!J||J.context.code!==200)throw new N.SwapKitError("toolbox_utxo_api_error",{error:`Failed to query ${X}`});return J.data}async function D2({address:X,chain:$,apiKey:J}){if(!X)throw new N.SwapKitError("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await FX(`${_X($)}/dashboards/address/${X}?transaction_details=true`,J))[X]}catch{return{address:{balance:0,transaction_count:0},utxo:[]}}}async function $0({address:X,chain:$,apiKey:J}){return(await D2({address:X,apiKey:J,chain:$}))?.address.balance||0}async function C2({chain:X,apiKey:$,txHash:J}){if(!J)throw new N.SwapKitError("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await FX(`${_X(X)}/raw/transaction/${J}`,$))?.[J]?.raw_transaction||""}catch(Z){let j=Z instanceof Error?Z.message:String(Z);return console.error(`Failed to fetch raw transaction: ${j}`),""}}async function Z0({chain:X,apiKey:$,txHash:J}){if(!J)throw new N.SwapKitError("toolbox_utxo_invalid_params",{error:"TxHash is required"});let j=(await FX(`${_X(X)}/dashboards/transaction/${J}`,$))?.[J];if(!j)throw new N.SwapKitError("toolbox_utxo_tx_not_found",{txHash:J});let{transaction:G,inputs:Q,outputs:q}=j,Y=Q.map((L)=>L.spending_sequence),z=G.is_rbf===!0||Y.some((L)=>L<J0);return{blockId:G.block_id,confirmed:G.block_id!==-1,fee:G.fee,inputs:Q,isRBF:z,outputs:q,sequences:Y,size:G.size,txid:G.hash,weight:G.weight}}async function j0({chain:X,address:$,apiKey:J,offset:Z=0,limit:j=30}){return(await FX(`${_X(X)}/outputs?q=recipient(${$}),is_spent(false)&s=value(desc)&fields=is_spent,transaction_hash,index,value,script_hex,block_id,spending_signature_hex&limit=${j}&offset=${Z}`,J)).map(({is_spent:Y,script_hex:z,block_id:L,transaction_hash:W,index:B,value:_,spending_signature_hex:C})=>({hash:W,index:B,is_confirmed:L!==-1,is_spent:Y,script_hex:z,txHex:C,value:_}))}function Q0(X){return X.reduce(($,J)=>$+J.value,0)}function N2(X,$){let J=[...X].sort((Z,j)=>j.value-Z.value);if($){let Z=[],j=0;for(let G of J)if(Z.push(G),j+=G.value,j>=$)break;return Z}return J}async function H2({chain:X,address:$,apiKey:J,targetValue:Z,accumulativeValue:j=0,offset:G=0,limit:Q=30}){if(!$)throw new N.SwapKitError("toolbox_utxo_invalid_params",{error:"Address is required"});try{let q=await j0({address:$,apiKey:J,chain:X,limit:Q,offset:G,targetValue:Z}),z=q.length<Q,L=q.filter(({is_spent:P})=>!P),W=Q0(L),B=j+W,_=Z&&B>=Z;if(z||_)return N2(L,Z);let C=await H2({accumulativeValue:B,address:$,apiKey:J,chain:X,limit:Q,offset:G+Q,targetValue:Z}),I=[...L,...C];return N2(I,Z)}catch(q){let Y=q instanceof Error?q.message:String(q);return console.error(`Failed to fetch unspent UTXOs: ${Y}`),[]}}async function G0({address:X,chain:$,apiKey:J,fetchTxHex:Z=!0,targetValue:j}){let G=await H2({address:X,apiKey:J,chain:$,targetValue:j}),Q=[];for(let{hash:q,index:Y,script_hex:z,value:L}of G){let W;if(Z)W=await C2({apiKey:J,chain:$,txHash:q});Q.push({address:X,hash:q,index:Y,txHex:W,value:L,witnessUtxo:{script:Buffer.from(z,"hex"),value:L}})}return Q}function f(X){let $=N.SKConfig.get("apiKeys").blockchair||"";return N.warnOnce({condition:!$,id:"no_blockchair_api_key_warning",warning:"No Blockchair API key found. Functionality will be limited."}),{broadcastTx:(J)=>t2({chain:X,txHash:J}),getAddressData:(J)=>D2({address:J,apiKey:$,chain:X}),getBalance:(J)=>$0({address:J,apiKey:$,chain:X}),getRawTx:(J)=>C2({apiKey:$,chain:X,txHash:J}),getSuggestedTxFee:()=>X0(X),getTransactionDetails:(J)=>Z0({apiKey:$,chain:X,txHash:J}),getUtxos:(J)=>G0({...J,apiKey:$,chain:X})}}function Y0(X){return X}function q0(){return function($){switch($){case N.Chain.Bitcoin:return t.NETWORKS.bitcoin;case N.Chain.BitcoinCash:return t.NETWORKS.bitcoinCash;case N.Chain.Dash:return t.NETWORKS.dash;case N.Chain.Litecoin:return t.NETWORKS.litecoin;case N.Chain.Dogecoin:return t.NETWORKS.dogecoin;case N.Chain.Zcash:return t.NETWORKS.zcash;default:throw new N.SwapKitError("toolbox_utxo_not_supported",{chain:$})}}}var N,t,J0=4294967294;var I2=R(()=>{uX();N=require("@swapkit/helpers"),t=require("@swapkit/utxo-signer")});function W0(X,$,J){return l.encodeCashAddr({hash:J,prefix:X,type:L0[$]})}function U0(X){let $=l.decodeCashAddr(X),J=z0[$.type];if(!J)throw Error(`Unknown CashAddr type: ${$.type}`);return{hash:$.hash,prefix:$.prefix,type:J}}var l,L0,z0,oX;var O2=R(()=>{l=require("@swapkit/utxo-signer"),L0={P2PKH:l.CashAddrType.P2PKH,P2SH:l.CashAddrType.P2SH},z0={[l.CashAddrType.P2PKH]:"P2PKH",[l.CashAddrType.P2SH]:"P2SH"};oX={decode:U0,encode:W0}});function dX(X){try{return fX(X),!0}catch{return!1}}function rX(X){return fX(X)?.network}function h(X){let $=fX(X);if($?.format==="legacy")return X;return M0($)}function MX(X){let $=fX(X);return N0($)}function fX(X){try{let $=B0(X);if($)return $}catch{}try{let $=_0(X);if($)return $}catch{}throw new pX.SwapKitError("toolbox_utxo_invalid_address",{address:X})}function B0(X){try{let $=P2.decode(X);if($.length!==21)throw new pX.SwapKitError("toolbox_utxo_invalid_address",{address:X});let J=$[0],Z=Array.prototype.slice.call($,1);switch(J){case e.legacy.mainnet.p2pkh:return{format:"legacy",hash:Z,network:"mainnet",type:"p2pkh"};case e.legacy.mainnet.p2sh:return{format:"legacy",hash:Z,network:"mainnet",type:"p2sh"};case e.legacy.testnet.p2pkh:return{format:"legacy",hash:Z,network:"testnet",type:"p2pkh"};case e.legacy.testnet.p2sh:return{format:"legacy",hash:Z,network:"testnet",type:"p2sh"};case e.bitpay.mainnet.p2pkh:return{format:"bitpay",hash:Z,network:"mainnet",type:"p2pkh"};case e.bitpay.mainnet.p2sh:return{format:"bitpay",hash:Z,network:"mainnet",type:"p2sh"};default:return}}catch{return}}function _0(X){if(X.indexOf(":")!==-1)try{return T2(X)}catch{}else{let $=["bitcoincash","bchtest","bchreg"];for(let J of $)try{return T2(`${J}:${X}`)}catch{}}return}function T2(X){try{let{hash:$,prefix:J,type:Z}=oX.decode(X);return{format:"cashaddr",hash:Array.prototype.slice.call($,0),network:J==="bitcoincash"?"mainnet":"testnet",type:Z==="P2PKH"?"p2pkh":"p2sh"}}catch{return}}function M0(X){let $=e.legacy[X.network][X.type],J=Buffer.alloc(1+X.hash.length);return J[0]=$,J.set(X.hash,1),P2.encode(J)}function N0(X){let $=X.network==="mainnet"?"bitcoincash":"bchtest",J=X.type==="p2pkh"?"P2PKH":"P2SH",Z=new Uint8Array(X.hash);return oX.encode($,J,Z)}var V2,k2,pX,P2,nX,e;var b2=R(()=>{O2();V2=require("@noble/hashes/sha2.js"),k2=require("@scure/base"),pX=require("@swapkit/helpers"),P2=k2.createBase58check(V2.sha256);((J)=>{J.Mainnet="mainnet";J.Testnet="testnet"})(nX||={});e={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}}});function y(X){let $=new Uint8Array(Buffer.from(X,"utf8"));return F2.Script.encode(["RETURN",$])}var E2,F2,D0=1000,RX=10,yX=2,f2=10,C0=41,H0=107,wX,vX,NX,jX=(X)=>{if(X.startsWith("bc1")||X.startsWith("tb1")||X.startsWith("ltc1")||X.startsWith("tltc1"))return"P2WPKH";if(X.startsWith("1")||X.startsWith("m")||X.startsWith("n")||X.startsWith("bitcoincash:q")||X.startsWith("bitcoincash:p")||X.startsWith("q")||X.startsWith("p")||X.startsWith("L")||X.startsWith("M")||X.startsWith("3")||X.startsWith("D")||X.startsWith("A")||X.startsWith("9")||X.startsWith("X")||X.startsWith("7")||X.startsWith("y")||X.startsWith("t1")||X.startsWith("t3")||X.startsWith("tm"))return"P2PKH";throw new E2.SwapKitError("toolbox_utxo_invalid_address",{address:X})},XX=({inputs:X,outputs:$,feeRate:J})=>{let Z=X[0]&&"address"in X[0]&&X[0].address?jX(X[0].address):"P2PKH",G=(J?X.filter((z)=>z.value>=vX["type"in z&&z.type?z.type:"P2PKH"]*Math.ceil(J)):X).reduce((z,L)=>z+n(L),0),Q=$?.reduce((z,L)=>z+DX(L),0)||NX[Z],q=RX+G+Q;return Z==="P2WPKH"?Math.ceil(q+yX/4):q},n=(X)=>{if("type"in X&&X.type)return vX[X.type];if("address"in X&&X.address)return vX[jX(X.address)];return C0+H0},DX=(X,$)=>{if(X?.script)return f2+X.script.length+(X.script.length>=74?2:1);if($)return NX[$];if("address"in X&&X.address)return NX[jX(X.address)];return NX.P2PKH};var iX=R(()=>{E2=require("@swapkit/helpers"),F2=require("@swapkit/utxo-signer");((J)=>{J.P2PKH="P2PKH";J.P2WPKH="P2WPKH"})(wX||={});vX={["P2PKH"]:148,["P2WPKH"]:68},NX={["P2PKH"]:34,["P2WPKH"]:31}});function CX(X){switch(X){case g.Chain.Bitcoin:case g.Chain.BitcoinCash:return 550;case g.Chain.Dash:case g.Chain.Litecoin:return 5500;case g.Chain.Dogecoin:return 1e5;case g.Chain.Zcash:return 546;default:throw new g.SwapKitError("toolbox_utxo_not_supported",{chain:X})}}function S({inputs:X,outputs:$,feeRate:J=1,chain:Z=g.Chain.Bitcoin,changeAddress:j=""}){let G=X[0]&&"address"in X[0]&&X[0].address?jX(X[0].address):"P2PKH",Q=X.filter((C)=>n(C)*J<=C.value),Y=G==="P2WPKH"?Math.ceil(yX/4):0,z=RX+Y+$.reduce((C,I)=>C+DX(I),0),L=$.reduce((C,I)=>C+I.value,0),W=z*J,B=0,_=[];for(let C of Q){let I=n(C),P=J*I;W+=P,B+=C.value,_.push(C);let a=W+L;if(B<a)continue;let xX=B-a,VX=J*DX({address:j,value:0});if(xX>VX){let M=VX+W,H=B-(L+Math.ceil(M));if(H>Math.max(n({value:0})*J,CX(Z)))return{fee:Math.ceil(M),inputs:_,outputs:$.concat({address:j,value:H})}}return{fee:Math.ceil(W),inputs:_,outputs:$}}return{fee:Math.ceil(J*XX({inputs:X,outputs:$}))}}var g;var v2=R(()=>{iX();g=require("@swapkit/helpers")});var QX=R(()=>{I2();b2();v2();iX()});function $X(X){return X.replace(/(bchtest:|bitcoincash:)/,"")}function d(X){let $=$X(X);return dX($)&&rX($)==="mainnet"}function GX(X){try{if(X.startsWith("z"))return console.warn("Shielded Zcash addresses (z-addresses) are not supported. Use transparent addresses (t1/t3) only."),!1;let J=AX.Address(AX.ZCASH_NETWORK).decode(X);return J.type==="pkh"||J.type==="sh"}catch{return!1}}var AX;var HX=R(()=>{QX();AX=require("@swapkit/utxo-signer")});function tX({address:X,chain:$}){return aX.match($).with(U.Chain.BitcoinCash,()=>d(X)).with(U.Chain.Zcash,()=>GX(X)).otherwise(()=>{try{return D.Address(w($)).decode(X),!0}catch{return!1}})}function w(X){return aX.match(X).with(U.Chain.Bitcoin,()=>D.NETWORKS.bitcoin).with(U.Chain.BitcoinCash,()=>D.NETWORKS.bitcoinCash).with(U.Chain.Dash,()=>D.NETWORKS.dash).with(U.Chain.Dogecoin,()=>D.NETWORKS.dogecoin).with(U.Chain.Litecoin,()=>D.NETWORKS.litecoin).with(U.Chain.Zcash,()=>D.NETWORKS.zcash).exhaustive()}function I0({phrase:X,derivationPath:$,network:J,seed:Z}){let j=Z??KX.mnemonicToSeedSync(X),Q=sX.HDKey.fromMasterSeed(j,J.bip32).derive($);if(!Q.privateKey)throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:"Could not derive private key from phrase"});return Q.privateKey}function R2(X){return y2.secp256k1.getPublicKey(X,!0)}function eX({publicKey:X,chain:$,network:J}){if($===U.Chain.BitcoinCash){let G=D.p2pkh(X,J);if(!G.hash)throw new U.SwapKitError("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return D.encodeCashAddr({hash:G.hash,prefix:D.CashAddrPrefix.MAINNET,type:D.CashAddrType.P2PKH}).replace(/^bitcoincash:/,"")}let j=!IX.includes($)?D.p2wpkh(X,J):D.p2pkh(X,J);if(!j.address)throw new U.SwapKitError("toolbox_utxo_invalid_address",{error:"Could not derive address"});return j.address}function YX({phrase:X,derivationPath:$,chain:J,wif:Z,seed:j}){let G=w(J);if(Z){let z=D.WIF(G).decode(Z),L=R2(z);return{privateKey:z,publicKey:L}}if(!X)throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let Q=$||U.derivationPathToString(U.NetworkDerivationPath[J]),q=I0({derivationPath:Q,network:G,phrase:X,seed:j}),Y=R2(q);return{privateKey:q,publicKey:Y}}function O0(X,$){return D.WIF(w($)).encode(X)}function T0({phrase:X,derivationPath:$,chain:J,seed:Z}){let j=$.split("/");if(j.length<4)throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:`Derivation path must have at least 4 levels (got ${j.length}): ${$}`});let G=w(J),Q=Z??KX.mnemonicToSeedSync(X),q=sX.HDKey.fromMasterSeed(Q,G.bip32),Y=j.slice(0,4).join("/");return q.derive(Y)}function i({inputs:X,outputs:$,chain:J,tx:Z,sender:j,compiledMemo:G,enableRBF:Q=!1}){let q=w(J),Y=!IX.includes(J),z=Q?D.RBF_SEQUENCE:void 0,L=new Set;for(let W of X){let B=`${W.hash}:${W.index}`;if(L.has(B))throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:"Duplicate input detected"});L.add(B);let _=typeof W.hash==="string"?r.hex.decode(W.hash):W.hash;if(Y&&W.witnessUtxo)Z.addInput({index:W.index,sequence:z,txid:_,witnessUtxo:{amount:BigInt(W.witnessUtxo.value),script:W.witnessUtxo.script}});else if(W.txHex)Z.addInput({index:W.index,nonWitnessUtxo:r.hex.decode(W.txHex),sequence:z,txid:_,...J===U.Chain.BitcoinCash?{sighashType:D.BCHSigHash.ALL}:{}});else throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:"Input requires either witnessUtxo or txHex for non-segwit chains"})}for(let W of $){let B="address"in W&&W.address?W.address:j;if(J===U.Chain.BitcoinCash)B=h(B);if(W.script){if(G)Z.addOutput({amount:0n,script:G})}else Z.addOutputAddress(B,BigInt(W.value),q)}return{inputs:X,tx:Z}}async function qX(X){let $=await f(X).getSuggestedTxFee();return{[U.FeeOption.Average]:$,[U.FeeOption.Fast]:U.applyFeeMultiplier($,U.FeeOption.Fast),[U.FeeOption.Fastest]:U.applyFeeMultiplier($,U.FeeOption.Fastest)}}async function w2({assetValue:X,recipient:$,memo:J,sender:Z,fetchTxHex:j=!1}){let G=X.chain,Q=(await qX(G))[U.FeeOption.Fastest],q=j||IX.includes(G),Y=X.getBaseValue("number"),z=Math.ceil(Y+Q*5000);return{inputs:await f(G).getUtxos({address:Z,fetchTxHex:q,targetValue:z}),outputs:[{address:$,value:Y},...J?[{address:"",script:y(J),value:0}]:[]]}}async function A2({assetValue:X,recipient:$,memo:J,feeRate:Z,sender:j,fetchTxHex:G=!1,enableRBF:Q=!1}){let q=X.chain,Y=J?y(J):null,z=await w2({assetValue:X,fetchTxHex:G,memo:J,recipient:$,sender:j}),{inputs:L,outputs:W}=S({...z,chain:q,feeRate:Z});if(!(L&&W))throw new U.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:j});let B=new D.Transaction({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!Y,version:1}),{inputs:_,tx:C}=i({chain:q,compiledMemo:Y,enableRBF:Q,inputs:L,outputs:W,sender:j,tx:B});return{inputs:_,tx:C,utxos:z.inputs}}async function S2({assetValue:X,feeOptionKey:$=U.FeeOption.Fast,feeRate:J,memo:Z,sender:j,recipient:G}){let Q=X.chain,q=await w2({assetValue:X,memo:Z,recipient:G,sender:j}),Y=J?Math.floor(J):(await qX(Q))[$];return S({...q,chain:Q,feeRate:Y})}function V0(X){return async function({from:J,memo:Z,feeRate:j,feeOptionKey:G=U.FeeOption.Fast,recipients:Q=1}){let q=await f(X).getAddressData(J),Y=j?Math.ceil(j):(await qX(X))[G],z=q?.utxo.map((I)=>({...I,hash:"",type:"P2PKH"})).filter((I)=>I.value>Math.max(CX(X),n(I)*Y));if(!z?.length)return U.AssetValue.from({chain:X});let L=BigInt(z.reduce((I,P)=>I+P.value,0)),W=U.AssetValue.from({chain:X,value:L}),B=typeof Q==="number"?Array.from({length:Q},()=>({address:J,value:0})):Q;if(Z)B.push({address:J,script:y(Z),value:0});let _=XX({inputs:z,outputs:B}),C=U.AssetValue.from({chain:X,value:BigInt(_*Y)});return W.sub(C)}}function k0(X){return async function(J){let{fee:Z}=await S2(J);return U.AssetValue.from({chain:X,value:U.SwapKitNumber.fromBigInt(BigInt(Z),8).getValue("string")})}}function P0({chain:X,phrase:$,derivationPath:J,seed:Z}){let j=w(X),{privateKey:G,publicKey:Q}=YX({chain:X,derivationPath:J,phrase:$,seed:Z}),q=X===U.Chain.BitcoinCash?[D.BCHSigHash.ALL]:[D.SigHash.ALL];return{getAddress:()=>eX({chain:X,network:j,publicKey:Q}),privateKey:G,publicKey:Q,signTransaction:(Y)=>{return Y.sign(G,q),Y}}}function b0(X,$){return async function({memo:Z,recipient:j,feeOptionKey:G,feeRate:Q,assetValue:q,enableRBF:Y=!1}){let z=$?.getAddress();if(!($&&z))throw new U.SwapKitError("toolbox_utxo_no_signer");if(!j)throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});U.warnOnce({condition:Y&&!SX.includes(X),id:`rbf_not_supported_${X}`,warning:`RBF (Replace-by-Fee) is not reliably supported on ${X}. Transaction will be created without RBF signaling.`});let L=Y&&SX.includes(X),W=Q||(await qX(X))[G||U.FeeOption.Fast],{tx:B}=await A2({assetValue:q,enableRBF:L,feeRate:W,memo:Z,recipient:j,sender:z});return $.signTransaction(B),B.finalize(),f(X).broadcastTx(r.hex.encode(B.extract()))}}function X2(X){return($)=>tX({address:$,chain:X})}function $2(X){let $=w(X);return function(Z){if(!Z)throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:"Keys must be provided"});return eX({chain:X,network:$,publicKey:Z.publicKey})}}function s({chain:X,...$}){let J="phrase"in $?$.phrase:void 0,Z="index"in $?$.index||0:0,j=J?KX.mnemonicToSeedSync(J):void 0,G=U.derivationPathToString("derivationPath"in $&&$.derivationPath?$.derivationPath:U.updateDerivationPath(U.NetworkDerivationPath[X],{index:Z})),Q=J?P0({chain:X,derivationPath:G,phrase:J,seed:j}):void 0,q="signer"in $?$.signer:void 0,Y=J?YX({chain:X,derivationPath:G,phrase:J,seed:j}):void 0;function z(){if(Q)return Promise.resolve(Q.getAddress());if(q)return q.getAddress();return Promise.resolve(void 0)}let L=J?T0({chain:X,derivationPath:G,phrase:J,seed:j}):void 0;function W(){if(!L)return;return L.publicExtendedKey}function B({index:M,change:H=!1}){if(!L)return;if(!Number.isInteger(M)||M<0)throw RangeError(`index must be a non-negative integer, got: ${M}`);let b=w(X),k=L.deriveChild(Number(H)).deriveChild(M);if(!k.publicKey)throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:"Could not derive public key"});let O=eX({chain:X,network:b,publicKey:k.publicKey}),A=r.hex.encode(k.publicKey);return{address:O,change:H,index:M,pubkey:A}}async function _(M){if(!SX.includes(X))return{reason:`RBF is not supported on ${X}`,supported:!1};let H=await f(X).getTransactionDetails(M);return{canReplace:H.isRBF&&!H.confirmed,confirmed:H.confirmed,enabled:H.isRBF,fee:H.fee,sequences:H.sequences,supported:!0}}async function C({txid:M,newFeeRate:H,recipient:b,memo:k}){if(!SX.includes(X))throw new U.SwapKitError("toolbox_utxo_rbf_not_supported",{chain:X});let O=await f(X).getTransactionDetails(M);if(!O.isRBF)throw new U.SwapKitError("toolbox_utxo_tx_not_replaceable",{txid:M});if(O.confirmed)throw new U.SwapKitError("toolbox_utxo_tx_already_confirmed",{blockId:O.blockId,txid:M});let A=O.inputs.reduce((v,p)=>v+p.value,0),K=O.outputs.find((v)=>v.recipient===b)?.value||0;if(K===0)throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:"Could not determine send amount from original transaction"});let ZX=await Promise.all(O.inputs.map(async(v)=>{let p=await f(X).getRawTx(v.transaction_hash);return{hash:v.transaction_hash,index:v.index,txHex:p,value:v.value,witnessUtxo:void 0}})),kX=k?y(k):null,lX=XX({feeRate:H,inputs:ZX.map((v)=>({...v,type:"P2WPKH"})),outputs:[{address:b,value:K}]}),x=Math.ceil(lX*H);if(x<=O.fee)throw new U.SwapKitError("toolbox_utxo_rbf_fee_too_low",{newFee:x,originalFee:O.fee});let zX=x-O.fee,u=K-zX;if(u<=0)throw new U.SwapKitError("toolbox_utxo_rbf_insufficient_change");let PX=new D.Transaction({allowLegacyWitnessUtxo:!0,version:1}),bX=[{address:b,value:u},...k?[{address:"",script:y(k),value:0}]:[]],EX=A-u-x,o=await z();if(EX>CX(X)&&o)bX.push({address:o,value:EX});return i({chain:X,compiledMemo:kX,inputs:ZX,outputs:bX,sender:o||b,tx:PX}),{feeDelta:zX,newFee:x,originalFee:O.fee,tx:PX}}async function I({txid:M,newFeeRate:H,recipient:b,memo:k}){if(!Q)throw new U.SwapKitError("toolbox_utxo_no_signer");let{tx:O,originalFee:A,newFee:JX}=await C({memo:k,newFeeRate:H,recipient:b,txid:M});Q.signTransaction(O),O.finalize();let K=await f(X).broadcastTx(r.hex.encode(O.extract()));return{newFee:JX,originalFee:A,txid:K}}function P({index:M,change:H=!1}){if(!L)return;return L.deriveChild(Number(H)).deriveChild(M).privateKey||void 0}function a({tx:M,inputDerivations:H}){if(!L)throw new U.SwapKitError("toolbox_utxo_no_signer");let b=X===U.Chain.BitcoinCash?[D.BCHSigHash.ALL]:[D.SigHash.ALL];for(let k=0;k<H.length;k++){let O=H[k];if(!O)continue;let{derivationIndex:A,isChange:JX}=O,K=P({change:JX,index:A});if(!K)throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:`Could not derive private key for input ${k} at index ${A}`});M.signIdx(K,k,b)}return M}async function xX({utxos:M,recipient:H,assetValue:b,memo:k,feeRate:O,feeOptionKey:A,changeAddress:JX}){if(!L)throw new U.SwapKitError("toolbox_utxo_no_signer");let K=O||(await qX(X))[A||U.FeeOption.Fast],ZX=k?y(k):null,kX=[{address:H,value:b.getBaseValue("number")}];if(ZX)kX.push({address:"",script:ZX,value:0});let lX=M.map(({hash:o,index:v,value:p,txHex:h2,witnessUtxo:hX})=>({hash:o,index:v,txHex:h2,value:p,witnessUtxo:hX?{script:hX.script,value:hX.value}:void 0})),{inputs:x,outputs:zX}=S({chain:X,feeRate:K,inputs:lX,outputs:kX});if(!(x&&zX))throw new U.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:b,sender:"multiple addresses"});let u=new D.Transaction({allowLegacyWitnessUtxo:!0,version:1}),PX=M[0]?.address,bX=JX||await z()||PX||H;i({chain:X,compiledMemo:ZX,inputs:x,outputs:zX,sender:bX,tx:u});let EX=x.map((o)=>{let v=M.find((p)=>p.hash===o.hash&&p.index===o.index);return v?{derivationIndex:v.derivationIndex,isChange:v.isChange}:{derivationIndex:0,isChange:!1}});return a({inputDerivations:EX,tx:u}),u.finalize(),f(X).broadcastTx(r.hex.encode(u.extract()))}function VX({address:M,gapLimit:H=20}){if(!L)return;for(let b=0;b<H;b++){let k=B({change:!1,index:b}),O=B({change:!0,index:b}),A=k?.address===M?!1:O?.address===M;if(k?.address===M||O?.address===M)return{change:A,index:b}}return}return{accumulative:S,broadcastTx:(M)=>f(X).broadcastTx(M),bumpFee:I,calculateTxSize:XX,createKeysForPath:(M)=>YX({...M,chain:X}),createReplacementTransaction:C,createTransaction:A2,deriveAddressAtIndex:B,derivePrivateKeyAtIndex:P,estimateMaxSendableAmount:V0(X),estimateTransactionFee:k0(X),getAddress:z,getAddressFromKeys:$2(X),getBalance:_2(X),getExtendedPublicKey:W,getFeeRates:()=>qX(X),getInputsOutputsFee:S2,getNetworkForChain:()=>w(X),getPrivateKeyFromMnemonic:(M)=>O0(YX({...M,chain:X}).privateKey,X),isRBFEnabled:_,keys:Y,resolveDerivationIndex:VX,signAndBroadcastTransaction:async(M)=>{if(!Q)throw new U.SwapKitError("toolbox_utxo_no_signer");return Q.signTransaction(M),M.finalize(),await f(X).broadcastTx(r.hex.encode(M.extract()))},signTransactionWithMultipleKeys:a,transfer:b0(X,Q),transferFromMultipleAddresses:xX,validateAddress:X2(X)}}var y2,r,sX,KX,U,D,aX,IX,SX;var OX=R(()=>{uX();QX();HX();y2=require("@noble/curves/secp256k1.js"),r=require("@scure/base"),sX=require("@scure/bip32"),KX=require("@scure/bip39"),U=require("@swapkit/helpers"),D=require("@swapkit/utxo-signer"),aX=require("ts-pattern"),IX=[U.Chain.Dash,U.Chain.Dogecoin,U.Chain.Zcash,U.Chain.BitcoinCash],SX=[U.Chain.Bitcoin]});function TX(X){return $X(MX(X))}function E0(X){let $=w(m);function J(j){return j.sign(X.privateKey,[F.BCHSigHash.ALL]),j}function Z(){let j=F.p2pkh(X.publicKey,$);if(!j.hash)throw new E.SwapKitError("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});let G=F.encodeCashAddr({hash:j.hash,prefix:F.CashAddrPrefix.MAINNET,type:F.CashAddrType.P2PKH});return Promise.resolve(G.replace(/^bitcoincash:/,""))}return{getAddress:Z,signTransaction:J}}function J2(X){let $="phrase"in X?X.phrase:void 0,J="index"in X?X.index||0:0,Z=E.derivationPathToString("derivationPath"in X&&X.derivationPath?X.derivationPath:E.updateDerivationPath(E.NetworkDerivationPath[m],{index:J})),j=$?YX({chain:m,derivationPath:Z,phrase:$}):void 0,G=j?E0(j):("signer"in X)?X.signer:void 0;function Q(){return Promise.resolve(G?.getAddress())}let{getBalance:q,getFeeRates:Y,broadcastTx:z,...L}=s({chain:m});function W(B,_=!0){return q($X(MX(B)))}return{...L,broadcastTx:z,buildTx:f0,createTransaction:g2,getAddress:Q,getAddressFromKeys:v0,getBalance:W,getFeeRates:Y,stripPrefix:$X,stripToCashAddress:TX,transfer:F0({broadcastTx:z,getFeeRates:Y,signer:G}),validateAddress:d}}async function g2({assetValue:X,recipient:$,memo:J,feeRate:Z,sender:j}){if(!d($))throw new E.SwapKitError("toolbox_utxo_invalid_address",{address:$});let G=Math.ceil(X.getBaseValue("number")+Z*7500),Q=await f(m).getUtxos({address:TX(j),fetchTxHex:!0,targetValue:G}),q=J?y(J):null,Y=[],z=h($);if(Y.push({address:z,value:X.getBaseValue("number")}),q)Y.push({script:q,value:0});let{inputs:L,outputs:W}=S({chain:m,feeRate:Z,inputs:Q,outputs:Y});if(!(L&&W))throw new E.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:j});let B=new F.Transaction({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!q,version:1}),_=h(j),{inputs:C,tx:I}=i({chain:m,compiledMemo:q,inputs:L,outputs:W.map((P)=>("address"in P)&&P.address?{...P,address:h(P.address)}:P),sender:_,tx:B});return{inputs:C,tx:I,utxos:L}}function F0({broadcastTx:X,getFeeRates:$,signer:J}){return async function({recipient:j,assetValue:G,feeOptionKey:Q=E.FeeOption.Fast,...q}){let Y=await J?.getAddress();if(!(J&&Y))throw new E.SwapKitError("toolbox_utxo_no_signer");if(!j)throw new E.SwapKitError("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let z=q.feeRate||(await $())[Q],{tx:L}=await g2({...q,assetValue:G,feeRate:z,recipient:j,sender:Y}),W=await J.signTransaction(L);return W.finalize(),X(K2.hex.encode(W.extract()))}}async function f0({assetValue:X,recipient:$,memo:J,feeRate:Z,sender:j}){let G=MX($);if(!d(G))throw new E.SwapKitError("toolbox_utxo_invalid_address",{address:G});let Q=Math.ceil(X.getBaseValue("number")+Z*7500),q=await f(m).getUtxos({address:TX(j),fetchTxHex:!0,targetValue:Q}),Y=Number(Z.toFixed(0)),z=J?y(J):null,L=[];if(L.push({address:h($),value:X.getBaseValue("number")}),z)L.push({script:z,value:0});let{inputs:W,outputs:B}=S({chain:m,feeRate:Y,inputs:q,outputs:L});if(!(W&&B))throw new E.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:j});let _=new F.Transaction({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!z,version:1}),{inputs:C,tx:I}=i({chain:m,compiledMemo:z,inputs:W,outputs:B,sender:h(j),tx:_});return{inputs:C,tx:I,utxos:q}}function v0(X){let $=F.NETWORKS.bitcoinCash,J=F.p2pkh(X.publicKey,$);if(!J.hash)throw new E.SwapKitError("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return F.encodeCashAddr({hash:J.hash,prefix:F.CashAddrPrefix.MAINNET,type:F.CashAddrType.P2PKH}).replace(/^bitcoincash:/,"")}var K2,E,F,m;var gX=R(()=>{QX();OX();HX();K2=require("@scure/base"),E=require("@swapkit/helpers"),F=require("@swapkit/utxo-signer"),m=E.Chain.BitcoinCash});function x2(){let{isStagenet:X}=V.SKConfig.get("envs");return X?T.ZCASH_TEST_NETWORK:T.ZCASH_NETWORK}function y0(X){return R0.encode(X)}function w0({phrase:X,derivationPath:$}){let J=j2.mnemonicToSeedSync(X),j=Z2.HDKey.fromMasterSeed(J).derive($);if(!j.privateKey||!j.publicKey)throw new V.SwapKitError("toolbox_utxo_invalid_params");let{privateKey:G,publicKey:Q}=j,q=T.utils.hash160(Q),{isStagenet:Y}=V.SKConfig.get("envs"),z=Y?new Uint8Array([29,37]):new Uint8Array([28,184]),L=new Uint8Array(z.length+q.length);L.set(z,0),L.set(q,z.length);let W=y0(L);return{getAddress:()=>Promise.resolve(W),signTransaction:(B)=>{if(B instanceof T.PCZT)return B.signAllInputs(G,Q,T.ZcashSigHash.ALL),B.finalizeAllInputs(),Promise.resolve(B.extract());return B.signAllInputs(G,Q,T.ZcashSigHash.ALL),Promise.resolve(B)}}}function A0({inputs:X,outputs:$,tx:J,sender:Z,compiledMemo:j}){let G=x2();for(let Q of X){let q=T.Address(G).decode(Z),Y=T.OutScript.encode(q);J.addInput({index:Q.index,script:Y,sequence:4294967295,txid:mX.hex.decode(Q.hash),value:BigInt(Q.value)})}for(let Q of $){let q="address"in Q&&Q.address?Q.address:Z,Y=Q.script;if(Y&&!j)continue;if(Y&&j)J.addOutput({amount:0n,script:j});else J.addOutputAddress(q,BigInt(Q.value),G)}return{inputs:X,tx:J}}async function m2(X){let{assetValue:$,recipient:J,memo:Z,feeRate:j,sender:G,fetchTxHex:Q}=X,q=Z?y(Z):null,Y=await f(V.Chain.Zcash).getUtxos({address:G,fetchTxHex:Q!==!1}),z=[{address:J,value:Number($.getBaseValue("string"))},...q?[{script:q,value:0}]:[]],{inputs:L,outputs:W}=S({chain:V.Chain.Zcash,changeAddress:G,feeRate:j,inputs:Y,outputs:z});if(!(L&&W))throw new V.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:$,sender:G});let B=T.createZcashTransaction({consensusBranchId:T.ZcashConsensusBranchId.NU6_1,expiryHeight:0,lockTime:0,version:4,versionGroupId:T.ZcashVersionGroupId.SAPLING}),{tx:_,inputs:C}=A0({compiledMemo:q,inputs:L,outputs:W,sender:G,tx:B});return{inputs:C,outputs:W,tx:_}}function Q2(X){let $=LX.match(X).with({signer:LX.P.not(LX.P.nullish)},({signer:Y})=>Y).with({phrase:LX.P.string},({phrase:Y,derivationPath:z,index:L=0})=>{let W=z||V.NetworkDerivationPath[V.Chain.Zcash]||[44,133,0,0,0],B=V.updateDerivationPath(W,{index:L}),_=V.derivationPathToString(B);return w0({derivationPath:_,phrase:Y})}).otherwise(()=>{return}),J=s({chain:V.Chain.Zcash,signer:$});async function Z({recipient:Y,assetValue:z,feeOptionKey:L=V.FeeOption.Fast,...W}){let B=await $?.getAddress();if(!($&&B))throw new V.SwapKitError("toolbox_utxo_no_signer");let _=W.feeRate||(await J.getFeeRates())[L],{tx:C}=await m2({...W,assetValue:z,feeRate:_,recipient:Y,sender:B}),P=(await $.signTransaction(C)).toHex();return J.broadcastTx(P)}function j({phrase:Y,derivationPath:z="m/44'/133'/0'/0/0"}){let L=j2.mnemonicToSeedSync(Y),B=Z2.HDKey.fromMasterSeed(L).derive(z);if(!B.privateKey||!B.publicKey)throw new V.SwapKitError("toolbox_utxo_invalid_params");return{privateKey:B.privateKey,publicKey:B.publicKey}}function G({phrase:Y,derivationPath:z="m/44'/133'/0'/0/0"}){let L=j({derivationPath:z,phrase:Y}),W=x2();return T.WIF(W).encode(L.privateKey)}function Q(Y){return async function(L){if(!Y)throw new V.SwapKitError("toolbox_utxo_no_signer");return await Y.signTransaction(L)}}function q(Y){return async function(L){if(!Y)throw new V.SwapKitError("toolbox_utxo_no_signer");let W=await Y.signTransaction(L);return J.broadcastTx(W.toHex())}}return{...J,createKeysForPath:j,createTransaction:m2,getPrivateKeyFromMnemonic:G,signAndBroadcastTransaction:q($),signTransaction:Q($),transfer:Z,validateAddress:GX}}var mX,Z2,j2,V,T,LX,R0;var G2=R(()=>{QX();OX();HX();mX=require("@scure/base"),Z2=require("@scure/bip32"),j2=require("@scure/bip39"),V=require("@swapkit/helpers"),T=require("@swapkit/utxo-signer"),LX=require("ts-pattern");R0=mX.createBase58check(T.utils.sha256)});function S0(X,$){switch(X){case c.Chain.BitcoinCash:return J2($||{});case c.Chain.Zcash:return Q2($);case c.Chain.Bitcoin:case c.Chain.Dogecoin:case c.Chain.Litecoin:case c.Chain.Dash:return s({chain:X,...$});default:throw new c.SwapKitError("toolbox_utxo_not_supported",{chain:X})}}var c;var l2=R(()=>{gX();OX();G2();gX();HX();c=require("@swapkit/helpers")});var K0={};s2(K0,{validateZcashAddress:()=>GX,validateUtxoAddress:()=>tX,validateBchAddress:()=>d,toLegacyAddress:()=>h,toCashAddress:()=>MX,stripToCashAddress:()=>TX,stripPrefix:()=>$X,nonSegwitChains:()=>IX,isValidAddress:()=>dX,getUtxoToolbox:()=>S0,getUtxoNetwork:()=>q0,getUtxoApi:()=>f,getUTXOAddressValidator:()=>X2,getScriptTypeForAddress:()=>jX,getOutputSize:()=>DX,getNetworkForChain:()=>w,getInputSize:()=>n,getDustThreshold:()=>CX,detectAddressNetwork:()=>rX,createZcashToolbox:()=>Q2,createUTXOToolbox:()=>s,createHDWalletHelpers:()=>W2,createCustomUtxoApi:()=>Y0,createBCHToolbox:()=>J2,compileMemo:()=>y,calculateTxSize:()=>XX,addressFromKeysGetter:()=>$2,addInputsAndOutputs:()=>i,accumulative:()=>S,UtxoNetwork:()=>nX,UTXOScriptType:()=>wX,TX_OVERHEAD:()=>RX,SEGWIT_MARKER_FLAG_WEIGHT:()=>yX,OutputSizes:()=>NX,OP_RETURN_OVERHEAD:()=>f2,MIN_TX_FEE:()=>D0,InputSizes:()=>vX});module.exports=d2(K0);var g0=R(()=>{OX();QX();l2();gX();G2()});g0();
1
+ var J0=Object.create;var{getPrototypeOf:Z0,defineProperty:CX,getOwnPropertyNames:N2,getOwnPropertyDescriptor:j0}=Object,M2=Object.prototype.hasOwnProperty;function D2(X){return this[X]}var Q0,G0,t0=(X,$,J)=>{var Z=X!=null&&typeof X==="object";if(Z){var j=$?Q0??=new WeakMap:G0??=new WeakMap,G=j.get(X);if(G)return G}J=X!=null?J0(Z0(X)):{};let q=$||!X||!X.__esModule?CX(J,"default",{value:X,enumerable:!0}):J;for(let Q of N2(X))if(!M2.call(q,Q))CX(q,Q,{get:D2.bind(X,Q),enumerable:!0});if(Z)j.set(X,q);return q},Y0=(X)=>{var $=(_2??=new WeakMap).get(X),J;if($)return $;if($=CX({},"__esModule",{value:!0}),X&&typeof X==="object"||typeof X==="function"){for(var Z of N2(X))if(!M2.call($,Z))CX($,Z,{get:D2.bind(X,Z),enumerable:!(J=j0(X,Z))||J.enumerable})}return _2.set(X,$),$},_2;var q0=(X)=>X;function L0(X,$){this[X]=q0.bind(null,$)}var z0=(X,$)=>{for(var J in $)CX(X,J,{get:$[J],enumerable:!0,configurable:!0,set:L0.bind($,J)})};var y=(X,$)=>()=>(X&&($=X(X=0)),$);function K(X,$){if(!Number.isInteger($)||$<0)throw RangeError(`${X} must be a non-negative integer, got: ${$}`)}function i({accountIndex:X,chain:$,derivationPath:J}){if(X!==void 0)K("accountIndex",X);let Z=[...J?.slice(0,3)??C2.NetworkDerivationPath[$].slice(0,3)];if(X!==void 0)Z[2]=X;return Z}function YX({accountIndex:X,change:$=!1,chain:J,derivationPath:Z,index:j}){return K("index",j),[...i({accountIndex:X,chain:J,derivationPath:Z}),Number($),j]}function JX(X){return X[2]??0}function H2({deriveAddress:X,getBalance:$,getUtxos:J}){async function Z(Q){let{accountIndex:Y,count:z,startIndex:L=0,change:U=!1}=Q;if(K("count",z),z<1)throw RangeError("count must be at least 1");K("startIndex",L);let B=[];for(let _=0;_<z;_++){let M=await X({accountIndex:Y,change:U,index:L+_});if(M)B.push(M)}return B}async function j(Q){let{gapLimit:Y=20,change:z=!1}=Q??{},L=[],U=0,B=0;while(U<Y){let _=await X({change:z,index:B});if(!_)break;if((await $(_.address)).some((f)=>f.getValue("number")>0))L.push(_),U=0;else U++;B++}return L}async function G(Q=20){let[Y,z]=await Promise.all([j({change:!1,gapLimit:Q}),j({change:!0,gapLimit:Q})]),L=[...Y,...z],U=await Promise.all(L.map(async(_)=>{let O=(await $(_.address)).reduce((f,$X)=>f+$X.getValue("number"),0);return{..._,balance:O}})),B=U.reduce((_,M)=>_+M.balance,0);return{addresses:U,total:B}}async function q(Q=20){let[Y,z]=await Promise.all([j({change:!1,gapLimit:Q}),j({change:!0,gapLimit:Q})]),L=[...Y,...z];return(await Promise.all(L.map(async(B)=>{return(await J(B.address)).map((M)=>({...M,address:B.address,derivationIndex:B.index,isChange:B.change}))}))).flat()}return{deriveAddresses:Z,getAggregatedBalance:G,getAggregatedUtxos:q,scanForAddresses:j}}var C2;var HX=y(()=>{C2=require("@swapkit/helpers")});function T2(){function X(){let $=Date.now(),J=iX||$;return iX=J,$>iX?$:J+1}return U0+X().toString(36)}function b2(X){return async function(J,Z=!0){let j=await O2.SwapKitApi.getChainBalance({address:J,chain:X,scamFilter:Z}),{baseDecimal:G}=OX.getChainConfig(X),q=j.map(({identifier:Y,value:z,decimal:L})=>{return new OX.AssetValue({decimal:L||G,identifier:Y,value:z})});if(!q.some((Y)=>Y.isGasAsset))return[OX.AssetValue.from({chain:X}),...q];return q}}var OX,O2,U0,iX=0;var sX=y(()=>{OX=require("@swapkit/helpers"),O2=require("@swapkit/helpers/api"),U0=typeof process<"u"&&process.pid?process.pid.toString(36):""});async function W0({chain:X,txHash:$}){let J=`${TX(X)}/push/transaction`,Z=JSON.stringify({data:$});try{let j=await D.RequestClient.post(J,{body:Z,headers:{"Content-Type":"application/json"}});if(j.context.code!==200)throw new D.SwapKitError("toolbox_utxo_broadcast_failed",{error:j.context.error||"Transaction broadcast failed"});return j.data?.transaction_hash||$}catch(j){let G=await D.getRPCUrl(X);if(G){let q=JSON.stringify({id:T2(),jsonrpc:"2.0",method:"sendrawtransaction",params:[$]}),Q=await D.RequestClient.post(G,{body:q,headers:{"Content-Type":"application/json"}});if(Q.error)throw new D.SwapKitError("toolbox_utxo_broadcast_failed",{error:Q.error?.message});if(Q.result.includes('"code":-26'))throw new D.SwapKitError("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return Q.result}throw j}}function TX(X){return`https://api.blockchair.com/${B0(X)}`}function V2(X){switch(X){case D.Chain.Bitcoin:return 5;case D.Chain.Dogecoin:return 1e4;case D.Chain.Litecoin:return 1;case D.Chain.Zcash:return 1;default:return 2}}function B0(X){switch(X){case D.Chain.BitcoinCash:return"bitcoin-cash";case D.Chain.Litecoin:return"litecoin";case D.Chain.Dash:return"dash";case D.Chain.Dogecoin:return"dogecoin";case D.Chain.Zcash:return"zcash";case D.Chain.Polkadot:return"polkadot";default:return"bitcoin"}}async function _0(X){try{let{feePerKb:$}=await D.RequestClient.get(`https://app.bitgo.com/api/v2/${X.toLowerCase()}/tx/fee`),J=$/1000;return Math.max(J,V2(X))}catch{return V2(X)}}async function SX(X,$){let J=await D.RequestClient.get(`${X}${$?`${X.includes("?")?"&":"?"}key=${$}`:""}`);if(!J||J.context.code!==200)throw new D.SwapKitError("toolbox_utxo_api_error",{error:`Failed to query ${X}`});return J.data}async function I2({address:X,chain:$,apiKey:J}){if(!X)throw new D.SwapKitError("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await SX(`${TX($)}/dashboards/address/${X}?transaction_details=true`,J))[X]}catch{return{address:{balance:0,transaction_count:0},utxo:[]}}}async function N0({address:X,chain:$,apiKey:J}){return(await I2({address:X,apiKey:J,chain:$}))?.address.balance||0}async function f2({chain:X,apiKey:$,txHash:J}){if(!J)throw new D.SwapKitError("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await SX(`${TX(X)}/raw/transaction/${J}`,$))?.[J]?.raw_transaction||""}catch(Z){let j=Z instanceof Error?Z.message:String(Z);return console.error(`Failed to fetch raw transaction: ${j}`),""}}async function D0({chain:X,apiKey:$,txHash:J}){if(!J)throw new D.SwapKitError("toolbox_utxo_invalid_params",{error:"TxHash is required"});let j=(await SX(`${TX(X)}/dashboards/transaction/${J}`,$))?.[J];if(!j)throw new D.SwapKitError("toolbox_utxo_tx_not_found",{txHash:J});let{transaction:G,inputs:q,outputs:Q}=j,Y=q.map((L)=>L.spending_sequence),z=G.is_rbf===!0||Y.some((L)=>L<M0);return{blockId:G.block_id,confirmed:G.block_id!==-1,fee:G.fee,inputs:q,isRBF:z,outputs:Q,sequences:Y,size:G.size,txid:G.hash,weight:G.weight}}async function C0({chain:X,address:$,apiKey:J,offset:Z=0,limit:j=30}){return(await SX(`${TX(X)}/outputs?q=recipient(${$}),is_spent(false)&s=value(desc)&fields=is_spent,transaction_hash,index,value,script_hex,block_id,spending_signature_hex&limit=${j}&offset=${Z}`,J)).map(({is_spent:Y,script_hex:z,block_id:L,transaction_hash:U,index:B,value:_,spending_signature_hex:M})=>({hash:U,index:B,is_confirmed:L!==-1,is_spent:Y,script_hex:z,txHex:M,value:_}))}function H0(X){return X.reduce(($,J)=>$+J.value,0)}function k2(X,$){let J=[...X].sort((Z,j)=>j.value-Z.value);if($){let Z=[],j=0;for(let G of J)if(Z.push(G),j+=G.value,j>=$)break;return Z}return J}async function F2({chain:X,address:$,apiKey:J,targetValue:Z,accumulativeValue:j=0,offset:G=0,limit:q=30}){if(!$)throw new D.SwapKitError("toolbox_utxo_invalid_params",{error:"Address is required"});try{let Q=await C0({address:$,apiKey:J,chain:X,limit:q,offset:G,targetValue:Z}),z=Q.length<q,L=Q.filter(({is_spent:f})=>!f),U=H0(L),B=j+U,_=Z&&B>=Z;if(z||_)return k2(L,Z);let M=await F2({accumulativeValue:B,address:$,apiKey:J,chain:X,limit:q,offset:G+q,targetValue:Z}),O=[...L,...M];return k2(O,Z)}catch(Q){let Y=Q instanceof Error?Q.message:String(Q);return console.error(`Failed to fetch unspent UTXOs: ${Y}`),[]}}async function O0({address:X,chain:$,apiKey:J,fetchTxHex:Z=!0,targetValue:j}){let G=await F2({address:X,apiKey:J,chain:$,targetValue:j}),q=[];for(let{hash:Q,index:Y,script_hex:z,value:L}of G){let U;if(Z)U=await f2({apiKey:J,chain:$,txHash:Q});q.push({address:X,hash:Q,index:Y,txHex:U,value:L,witnessUtxo:{script:Buffer.from(z,"hex"),value:L}})}return q}function P(X){let $=D.SKConfig.get("apiKeys").blockchair||"";return D.warnOnce({condition:!$,id:"no_blockchair_api_key_warning",warning:"No Blockchair API key found. Functionality will be limited."}),{broadcastTx:(J)=>W0({chain:X,txHash:J}),getAddressData:(J)=>I2({address:J,apiKey:$,chain:X}),getBalance:(J)=>N0({address:J,apiKey:$,chain:X}),getRawTx:(J)=>f2({apiKey:$,chain:X,txHash:J}),getSuggestedTxFee:()=>_0(X),getTransactionDetails:(J)=>D0({apiKey:$,chain:X,txHash:J}),getUtxos:(J)=>O0({...J,apiKey:$,chain:X})}}function T0(X){return X}function b0(){return function($){switch($){case D.Chain.Bitcoin:return ZX.NETWORKS.bitcoin;case D.Chain.BitcoinCash:return ZX.NETWORKS.bitcoinCash;case D.Chain.Dash:return ZX.NETWORKS.dash;case D.Chain.Litecoin:return ZX.NETWORKS.litecoin;case D.Chain.Dogecoin:return ZX.NETWORKS.dogecoin;case D.Chain.Zcash:return ZX.NETWORKS.zcash;default:throw new D.SwapKitError("toolbox_utxo_not_supported",{chain:$})}}}var D,ZX,M0=4294967294;var E2=y(()=>{sX();D=require("@swapkit/helpers"),ZX=require("@swapkit/utxo-signer")});function I0(X,$,J){return p.encodeCashAddr({hash:J,prefix:X,type:V0[$]})}function f0(X){let $=p.decodeCashAddr(X),J=k0[$.type];if(!J)throw Error(`Unknown CashAddr type: ${$.type}`);return{hash:$.hash,prefix:$.prefix,type:J}}var p,V0,k0,aX;var P2=y(()=>{p=require("@swapkit/utxo-signer"),V0={P2PKH:p.CashAddrType.P2PKH,P2SH:p.CashAddrType.P2SH},k0={[p.CashAddrType.P2PKH]:"P2PKH",[p.CashAddrType.P2SH]:"P2SH"};aX={decode:f0,encode:I0}});function X2(X){try{return KX(X),!0}catch{return!1}}function $2(X){return KX(X)?.network}function u(X){let $=KX(X);if($?.format==="legacy")return X;return P0($)}function bX(X){let $=KX(X);return R0($)}function KX(X){try{let $=F0(X);if($)return $}catch{}try{let $=E0(X);if($)return $}catch{}throw new tX.SwapKitError("toolbox_utxo_invalid_address",{address:X})}function F0(X){try{let $=v2.decode(X);if($.length!==21)throw new tX.SwapKitError("toolbox_utxo_invalid_address",{address:X});let J=$[0],Z=Array.prototype.slice.call($,1);switch(J){case jX.legacy.mainnet.p2pkh:return{format:"legacy",hash:Z,network:"mainnet",type:"p2pkh"};case jX.legacy.mainnet.p2sh:return{format:"legacy",hash:Z,network:"mainnet",type:"p2sh"};case jX.legacy.testnet.p2pkh:return{format:"legacy",hash:Z,network:"testnet",type:"p2pkh"};case jX.legacy.testnet.p2sh:return{format:"legacy",hash:Z,network:"testnet",type:"p2sh"};case jX.bitpay.mainnet.p2pkh:return{format:"bitpay",hash:Z,network:"mainnet",type:"p2pkh"};case jX.bitpay.mainnet.p2sh:return{format:"bitpay",hash:Z,network:"mainnet",type:"p2sh"};default:return}}catch{return}}function E0(X){if(X.indexOf(":")!==-1)try{return R2(X)}catch{}else{let $=["bitcoincash","bchtest","bchreg"];for(let J of $)try{return R2(`${J}:${X}`)}catch{}}return}function R2(X){try{let{hash:$,prefix:J,type:Z}=aX.decode(X);return{format:"cashaddr",hash:Array.prototype.slice.call($,0),network:J==="bitcoincash"?"mainnet":"testnet",type:Z==="P2PKH"?"p2pkh":"p2sh"}}catch{return}}function P0(X){let $=jX.legacy[X.network][X.type],J=Buffer.alloc(1+X.hash.length);return J[0]=$,J.set(X.hash,1),v2.encode(J)}function R0(X){let $=X.network==="mainnet"?"bitcoincash":"bchtest",J=X.type==="p2pkh"?"P2PKH":"P2SH",Z=new Uint8Array(X.hash);return aX.encode($,J,Z)}var y2,A2,tX,v2,eX,jX;var w2=y(()=>{P2();y2=require("@noble/hashes/sha2.js"),A2=require("@scure/base"),tX=require("@swapkit/helpers"),v2=A2.createBase58check(y2.sha256);((J)=>{J.Mainnet="mainnet";J.Testnet="testnet"})(eX||={});jX={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}}});function v(X){let $=new Uint8Array(Buffer.from(X,"utf8"));return K2.Script.encode(["RETURN",$])}var S2,K2,y0=1000,mX=10,lX=2,g2=10,A0=41,v0=107,xX,gX,VX,qX=(X)=>{if(X.startsWith("bc1")||X.startsWith("tb1")||X.startsWith("ltc1")||X.startsWith("tltc1"))return"P2WPKH";if(X.startsWith("1")||X.startsWith("m")||X.startsWith("n")||X.startsWith("bitcoincash:q")||X.startsWith("bitcoincash:p")||X.startsWith("q")||X.startsWith("p")||X.startsWith("L")||X.startsWith("M")||X.startsWith("3")||X.startsWith("D")||X.startsWith("A")||X.startsWith("9")||X.startsWith("X")||X.startsWith("7")||X.startsWith("y")||X.startsWith("t1")||X.startsWith("t3")||X.startsWith("tm"))return"P2PKH";throw new S2.SwapKitError("toolbox_utxo_invalid_address",{address:X})},QX=({inputs:X,outputs:$,feeRate:J})=>{let Z=X[0]&&"address"in X[0]&&X[0].address?qX(X[0].address):"P2PKH",G=(J?X.filter((z)=>z.value>=gX["type"in z&&z.type?z.type:"P2PKH"]*Math.ceil(J)):X).reduce((z,L)=>z+s(L),0),q=$?.reduce((z,L)=>z+kX(L),0)||VX[Z],Q=mX+G+q;return Z==="P2WPKH"?Math.ceil(Q+lX/4):Q},s=(X)=>{if("type"in X&&X.type)return gX[X.type];if("address"in X&&X.address)return gX[qX(X.address)];return A0+v0},kX=(X,$)=>{if(X?.script)return g2+X.script.length+(X.script.length>=74?2:1);if($)return VX[$];if("address"in X&&X.address)return VX[qX(X.address)];return VX.P2PKH};var J2=y(()=>{S2=require("@swapkit/helpers"),K2=require("@swapkit/utxo-signer");((J)=>{J.P2PKH="P2PKH";J.P2WPKH="P2WPKH"})(xX||={});gX={["P2PKH"]:148,["P2WPKH"]:68},VX={["P2PKH"]:34,["P2WPKH"]:31}});function IX(X){switch(X){case l.Chain.Bitcoin:case l.Chain.BitcoinCash:return 550;case l.Chain.Dash:case l.Chain.Litecoin:return 5500;case l.Chain.Dogecoin:return 1e5;case l.Chain.Zcash:return 546;default:throw new l.SwapKitError("toolbox_utxo_not_supported",{chain:X})}}function g({inputs:X,outputs:$,feeRate:J=1,chain:Z=l.Chain.Bitcoin,changeAddress:j=""}){let G=X[0]&&"address"in X[0]&&X[0].address?qX(X[0].address):"P2PKH",q=X.filter((M)=>s(M)*J<=M.value),Y=G==="P2WPKH"?Math.ceil(lX/4):0,z=mX+Y+$.reduce((M,O)=>M+kX(O),0),L=$.reduce((M,O)=>M+O.value,0),U=z*J,B=0,_=[];for(let M of q){let O=s(M),f=J*O;U+=f,B+=M.value,_.push(M);let $X=U+L;if(B<$X)continue;let dX=B-$X,NX=J*kX({address:j,value:0});if(dX>NX){let MX=NX+U,RX=B-(L+Math.ceil(MX));if(RX>Math.max(s({value:0})*J,IX(Z)))return{fee:Math.ceil(MX),inputs:_,outputs:$.concat({address:j,value:RX})}}return{fee:Math.ceil(U),inputs:_,outputs:$}}return{fee:Math.ceil(J*QX({inputs:X,outputs:$}))}}var l;var m2=y(()=>{J2();l=require("@swapkit/helpers")});var LX=y(()=>{E2();w2();m2();J2()});function GX(X){return X.replace(/(bchtest:|bitcoincash:)/,"")}function a(X){let $=GX(X);return X2($)&&$2($)==="mainnet"}function zX(X){try{if(X.startsWith("z"))return console.warn("Shielded Zcash addresses (z-addresses) are not supported. Use transparent addresses (t1/t3) only."),!1;let J=hX.Address(hX.ZCASH_NETWORK).decode(X);return J.type==="pkh"||J.type==="sh"}catch{return!1}}var hX;var fX=y(()=>{LX();hX=require("@swapkit/utxo-signer")});function Q2({address:X,chain:$}){return j2.match($).with(W.Chain.BitcoinCash,()=>a(X)).with(W.Chain.Zcash,()=>zX(X)).otherwise(()=>{try{return C.Address(A($)).decode(X),!0}catch{return!1}})}function A(X){return j2.match(X).with(W.Chain.Bitcoin,()=>C.NETWORKS.bitcoin).with(W.Chain.BitcoinCash,()=>C.NETWORKS.bitcoinCash).with(W.Chain.Dash,()=>C.NETWORKS.dash).with(W.Chain.Dogecoin,()=>C.NETWORKS.dogecoin).with(W.Chain.Litecoin,()=>C.NETWORKS.litecoin).with(W.Chain.Zcash,()=>C.NETWORKS.zcash).exhaustive()}function w0({phrase:X,derivationPath:$,network:J,seed:Z}){let j=Z??uX.mnemonicToSeedSync(X),q=Z2.HDKey.fromMasterSeed(j,J.bip32).derive($);if(!q.privateKey)throw new W.SwapKitError("toolbox_utxo_invalid_params",{error:"Could not derive private key from phrase"});return q.privateKey}function l2(X){return x2.secp256k1.getPublicKey(X,!0)}function EX({publicKey:X,chain:$,network:J}){if($===W.Chain.BitcoinCash){let G=C.p2pkh(X,J);if(!G.hash)throw new W.SwapKitError("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return C.encodeCashAddr({hash:G.hash,prefix:C.CashAddrPrefix.MAINNET,type:C.CashAddrType.P2PKH}).replace(/^bitcoincash:/,"")}let j=!FX.includes($)?C.p2wpkh(X,J):C.p2pkh(X,J);if(!j.address)throw new W.SwapKitError("toolbox_utxo_invalid_address",{error:"Could not derive address"});return j.address}function UX({phrase:X,derivationPath:$,chain:J,wif:Z,seed:j}){let G=A(J);if(Z){let z=C.WIF(G).decode(Z),L=l2(z);return{privateKey:z,publicKey:L}}if(!X)throw new W.SwapKitError("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let q=$||W.derivationPathToString(W.NetworkDerivationPath[J]),Q=w0({derivationPath:q,network:G,phrase:X,seed:j}),Y=l2(Q);return{privateKey:Q,publicKey:Y}}function S0(X,$){return C.WIF(A($)).encode(X)}function K0({phrase:X,derivationPath:$,chain:J,seed:Z}){let j=$.split("/");if(j.length<4)throw new W.SwapKitError("toolbox_utxo_invalid_params",{error:`Derivation path must have at least 4 levels (got ${j.length}): ${$}`});let G=A(J),q=Z??uX.mnemonicToSeedSync(X),Q=Z2.HDKey.fromMasterSeed(q,G.bip32),Y=j.slice(0,4).join("/");return Q.derive(Y)}function e({inputs:X,outputs:$,chain:J,tx:Z,sender:j,compiledMemo:G,enableRBF:q=!1}){let Q=A(J),Y=!FX.includes(J),z=q?C.RBF_SEQUENCE:void 0,L=new Set;for(let U of X){let B=`${U.hash}:${U.index}`;if(L.has(B))throw new W.SwapKitError("toolbox_utxo_invalid_params",{error:"Duplicate input detected"});L.add(B);let _=typeof U.hash==="string"?t.hex.decode(U.hash):U.hash;if(Y&&U.witnessUtxo)Z.addInput({index:U.index,sequence:z,txid:_,witnessUtxo:{amount:BigInt(U.witnessUtxo.value),script:U.witnessUtxo.script}});else if(U.txHex)Z.addInput({index:U.index,nonWitnessUtxo:t.hex.decode(U.txHex),sequence:z,txid:_,...J===W.Chain.BitcoinCash?{sighashType:C.BCHSigHash.ALL}:{}});else throw new W.SwapKitError("toolbox_utxo_invalid_params",{error:"Input requires either witnessUtxo or txHex for non-segwit chains"})}for(let U of $){let B="address"in U&&U.address?U.address:j;if(J===W.Chain.BitcoinCash)B=u(B);if(U.script){if(G)Z.addOutput({amount:0n,script:G})}else Z.addOutputAddress(B,BigInt(U.value),Q)}return{inputs:X,tx:Z}}async function WX(X){let $=await P(X).getSuggestedTxFee();return{[W.FeeOption.Average]:$,[W.FeeOption.Fast]:W.applyFeeMultiplier($,W.FeeOption.Fast),[W.FeeOption.Fastest]:W.applyFeeMultiplier($,W.FeeOption.Fastest)}}async function h2({assetValue:X,recipient:$,memo:J,sender:Z,fetchTxHex:j=!1}){let G=X.chain,q=(await WX(G))[W.FeeOption.Fastest],Q=j||FX.includes(G),Y=X.getBaseValue("number"),z=Math.ceil(Y+q*5000);return{inputs:await P(G).getUtxos({address:Z,fetchTxHex:Q,targetValue:z}),outputs:[{address:$,value:Y},...J?[{address:"",script:v(J),value:0}]:[]]}}async function p2({assetValue:X,recipient:$,memo:J,feeRate:Z,sender:j,fetchTxHex:G=!1,enableRBF:q=!1}){let Q=X.chain,Y=J?v(J):null,z=await h2({assetValue:X,fetchTxHex:G,memo:J,recipient:$,sender:j}),{inputs:L,outputs:U}=g({...z,chain:Q,feeRate:Z});if(!(L&&U))throw new W.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:j});let B=new C.Transaction({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!Y,version:1}),{inputs:_,tx:M}=e({chain:Q,compiledMemo:Y,enableRBF:q,inputs:L,outputs:U,sender:j,tx:B});return{inputs:_,tx:M,utxos:z.inputs}}async function u2({assetValue:X,feeOptionKey:$=W.FeeOption.Fast,feeRate:J,memo:Z,sender:j,recipient:G}){let q=X.chain,Q=await h2({assetValue:X,memo:Z,recipient:G,sender:j}),Y=J?Math.floor(J):(await WX(q))[$];return g({...Q,chain:q,feeRate:Y})}function g0(X){return async function({from:J,memo:Z,feeRate:j,feeOptionKey:G=W.FeeOption.Fast,recipients:q=1}){let Q=await P(X).getAddressData(J),Y=j?Math.ceil(j):(await WX(X))[G],z=Q?.utxo.map((O)=>({...O,hash:"",type:"P2PKH"})).filter((O)=>O.value>Math.max(IX(X),s(O)*Y));if(!z?.length)return W.AssetValue.from({chain:X});let L=BigInt(z.reduce((O,f)=>O+f.value,0)),U=W.AssetValue.from({chain:X,value:L}),B=typeof q==="number"?Array.from({length:q},()=>({address:J,value:0})):q;if(Z)B.push({address:J,script:v(Z),value:0});let _=QX({inputs:z,outputs:B}),M=W.AssetValue.from({chain:X,value:BigInt(_*Y)});return U.sub(M)}}function m0(X){return async function(J){let{fee:Z}=await u2(J);return W.AssetValue.from({chain:X,value:W.SwapKitNumber.fromBigInt(BigInt(Z),8).getValue("string")})}}function l0({chain:X,phrase:$,derivationPath:J,seed:Z}){let j=A(X),{privateKey:G,publicKey:q}=UX({chain:X,derivationPath:J,phrase:$,seed:Z}),Q=X===W.Chain.BitcoinCash?[C.BCHSigHash.ALL]:[C.SigHash.ALL];return{getAddress:()=>EX({chain:X,network:j,publicKey:q}),privateKey:G,publicKey:q,signTransaction:(Y)=>{return Y.sign(G,Q),Y}}}function x0(X,$){return async function({memo:Z,recipient:j,feeOptionKey:G,feeRate:q,assetValue:Q,enableRBF:Y=!1}){let z=$?.getAddress();if(!($&&z))throw new W.SwapKitError("toolbox_utxo_no_signer");if(!j)throw new W.SwapKitError("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});W.warnOnce({condition:Y&&!pX.includes(X),id:`rbf_not_supported_${X}`,warning:`RBF (Replace-by-Fee) is not reliably supported on ${X}. Transaction will be created without RBF signaling.`});let L=Y&&pX.includes(X),U=q||(await WX(X))[G||W.FeeOption.Fast],{tx:B}=await p2({assetValue:Q,enableRBF:L,feeRate:U,memo:Z,recipient:j,sender:z});return $.signTransaction(B),B.finalize(),P(X).broadcastTx(t.hex.encode(B.extract()))}}function G2(X){return($)=>Q2({address:$,chain:X})}function Y2(X){let $=A(X);return function(Z){if(!Z)throw new W.SwapKitError("toolbox_utxo_invalid_params",{error:"Keys must be provided"});return EX({chain:X,network:$,publicKey:Z.publicKey})}}function XX({chain:X,...$}){let J="phrase"in $?$.phrase:void 0,Z="index"in $?$.index||0:0,j=J?uX.mnemonicToSeedSync(J):void 0,G="derivationPath"in $&&$.derivationPath?$.derivationPath:W.updateDerivationPath(W.NetworkDerivationPath[X],{index:Z}),q=W.derivationPathToString(G),Q=J?l0({chain:X,derivationPath:q,phrase:J,seed:j}):void 0,Y="signer"in $?$.signer:void 0,z=J?UX({chain:X,derivationPath:q,phrase:J,seed:j}):void 0;function L(){if(Q)return Promise.resolve(Q.getAddress());if(Y)return Y.getAddress();return Promise.resolve(void 0)}function U(N){if(!J)return;let H=i({accountIndex:N,chain:X,derivationPath:G});return K0({chain:X,derivationPath:W.derivationPathToString(H),phrase:J,seed:j})}let B=U();function _(){if(!B)return;return B.publicExtendedKey}function M({accountIndex:N}={}){let H=N===void 0?B:U(N);if(!H)return;let T=i({accountIndex:N,chain:X,derivationPath:G});return{accountIndex:JX(T),path:W.derivationPathToString(T),xpub:H.publicExtendedKey}}function O({accountIndex:N,index:H,change:T=!1}){let V=N===void 0?B:U(N);if(!V)return;let b=YX({accountIndex:N,chain:X,change:T,derivationPath:G,index:H}),w=A(X),m=V.deriveChild(Number(T)).deriveChild(H);if(!m.publicKey)throw new W.SwapKitError("toolbox_utxo_invalid_params",{error:"Could not derive public key"});let S=EX({chain:X,network:w,publicKey:m.publicKey}),c=t.hex.encode(m.publicKey);return{accountIndex:JX(b),address:S,change:T,index:H,path:W.derivationPathToString(b),pubkey:c}}async function f(N){if(!pX.includes(X))return{reason:`RBF is not supported on ${X}`,supported:!1};let H=await P(X).getTransactionDetails(N);return{canReplace:H.isRBF&&!H.confirmed,confirmed:H.confirmed,enabled:H.isRBF,fee:H.fee,sequences:H.sequences,supported:!0}}async function $X({txid:N,newFeeRate:H,recipient:T,memo:V}){if(!pX.includes(X))throw new W.SwapKitError("toolbox_utxo_rbf_not_supported",{chain:X});let b=await P(X).getTransactionDetails(N);if(!b.isRBF)throw new W.SwapKitError("toolbox_utxo_tx_not_replaceable",{txid:N});if(b.confirmed)throw new W.SwapKitError("toolbox_utxo_tx_already_confirmed",{blockId:b.blockId,txid:N});let w=b.inputs.reduce((R,n)=>R+n.value,0),S=b.outputs.find((R)=>R.recipient===T)?.value||0;if(S===0)throw new W.SwapKitError("toolbox_utxo_invalid_params",{error:"Could not determine send amount from original transaction"});let c=await Promise.all(b.inputs.map(async(R)=>{let n=await P(X).getRawTx(R.transaction_hash);return{hash:R.transaction_hash,index:R.index,txHex:n,value:R.value,witnessUtxo:void 0}})),yX=V?v(V):null,rX=QX({feeRate:H,inputs:c.map((R)=>({...R,type:"P2WPKH"})),outputs:[{address:T,value:S}]}),h=Math.ceil(rX*H);if(h<=b.fee)throw new W.SwapKitError("toolbox_utxo_rbf_fee_too_low",{newFee:h,originalFee:b.fee});let DX=h-b.fee,d=S-DX;if(d<=0)throw new W.SwapKitError("toolbox_utxo_rbf_insufficient_change");let AX=new C.Transaction({allowLegacyWitnessUtxo:!0,version:1}),vX=[{address:T,value:d},...V?[{address:"",script:v(V),value:0}]:[]],wX=w-d-h,r=await L();if(wX>IX(X)&&r)vX.push({address:r,value:wX});return e({chain:X,compiledMemo:yX,inputs:c,outputs:vX,sender:r||T,tx:AX}),{feeDelta:DX,newFee:h,originalFee:b.fee,tx:AX}}async function dX({txid:N,newFeeRate:H,recipient:T,memo:V}){if(!Q)throw new W.SwapKitError("toolbox_utxo_no_signer");let{tx:b,originalFee:w,newFee:m}=await $X({memo:V,newFeeRate:H,recipient:T,txid:N});Q.signTransaction(b),b.finalize();let S=await P(X).broadcastTx(t.hex.encode(b.extract()));return{newFee:m,originalFee:w,txid:S}}function NX({accountIndex:N,index:H,change:T=!1}){K("index",H);let V=N===void 0?B:U(N);if(!V)return;return V.deriveChild(Number(T)).deriveChild(H).privateKey||void 0}function MX({tx:N,inputDerivations:H}){if(!B)throw new W.SwapKitError("toolbox_utxo_no_signer");let T=X===W.Chain.BitcoinCash?[C.BCHSigHash.ALL]:[C.SigHash.ALL];for(let V=0;V<H.length;V++){let b=H[V];if(!b)continue;let{derivationIndex:w,isChange:m}=b,S=NX({change:m,index:w});if(!S)throw new W.SwapKitError("toolbox_utxo_invalid_params",{error:`Could not derive private key for input ${V} at index ${w}`});N.signIdx(S,V,T)}return N}async function RX({utxos:N,recipient:H,assetValue:T,memo:V,feeRate:b,feeOptionKey:w,changeAddress:m}){if(!B)throw new W.SwapKitError("toolbox_utxo_no_signer");let S=b||(await WX(X))[w||W.FeeOption.Fast],c=V?v(V):null,yX=[{address:H,value:T.getBaseValue("number")}];if(c)yX.push({address:"",script:c,value:0});let rX=N.map(({hash:r,index:R,value:n,txHex:$0,witnessUtxo:nX})=>({hash:r,index:R,txHex:$0,value:n,witnessUtxo:nX?{script:nX.script,value:nX.value}:void 0})),{inputs:h,outputs:DX}=g({chain:X,feeRate:S,inputs:rX,outputs:yX});if(!(h&&DX))throw new W.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:T,sender:"multiple addresses"});let d=new C.Transaction({allowLegacyWitnessUtxo:!0,version:1}),AX=N[0]?.address,vX=m||await L()||AX||H;e({chain:X,compiledMemo:c,inputs:h,outputs:DX,sender:vX,tx:d});let wX=h.map((r)=>{let R=N.find((n)=>n.hash===r.hash&&n.index===r.index);return R?{derivationIndex:R.derivationIndex,isChange:R.isChange}:{derivationIndex:0,isChange:!1}});return MX({inputDerivations:wX,tx:d}),d.finalize(),P(X).broadcastTx(t.hex.encode(d.extract()))}function X0({address:N,gapLimit:H=20}){if(!B)return;for(let T=0;T<H;T++){let V=O({change:!1,index:T}),b=O({change:!0,index:T}),w=V?.address===N?!1:b?.address===N;if(V?.address===N||b?.address===N)return{change:w,index:T}}return}return{accumulative:g,broadcastTx:(N)=>P(X).broadcastTx(N),bumpFee:dX,calculateTxSize:QX,createKeysForPath:(N)=>UX({...N,chain:X}),createReplacementTransaction:$X,createTransaction:p2,deriveAddressAtIndex:O,derivePrivateKeyAtIndex:NX,estimateMaxSendableAmount:g0(X),estimateTransactionFee:m0(X),getAddress:L,getAddressFromKeys:Y2(X),getBalance:b2(X),getExtendedPublicKey:_,getExtendedPublicKeyInfo:M,getFeeRates:()=>WX(X),getInputsOutputsFee:u2,getNetworkForChain:()=>A(X),getPrivateKeyFromMnemonic:(N)=>S0(UX({...N,chain:X}).privateKey,X),isRBFEnabled:f,keys:z,resolveDerivationIndex:X0,signAndBroadcastTransaction:async(N)=>{if(!Q)throw new W.SwapKitError("toolbox_utxo_no_signer");return Q.signTransaction(N),N.finalize(),await P(X).broadcastTx(t.hex.encode(N.extract()))},signTransactionWithMultipleKeys:MX,transfer:x0(X,Q),transferFromMultipleAddresses:RX,validateAddress:G2(X)}}var x2,t,Z2,uX,W,C,j2,FX,pX;var BX=y(()=>{sX();HX();LX();fX();x2=require("@noble/curves/secp256k1.js"),t=require("@scure/base"),Z2=require("@scure/bip32"),uX=require("@scure/bip39"),W=require("@swapkit/helpers"),C=require("@swapkit/utxo-signer"),j2=require("ts-pattern"),FX=[W.Chain.Dash,W.Chain.Dogecoin,W.Chain.Zcash,W.Chain.BitcoinCash],pX=[W.Chain.Bitcoin]});function PX(X){return GX(bX(X))}function h0(X){let $=A(x);function J(j){return j.sign(X.privateKey,[E.BCHSigHash.ALL]),j}function Z(){let j=E.p2pkh(X.publicKey,$);if(!j.hash)throw new F.SwapKitError("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});let G=E.encodeCashAddr({hash:j.hash,prefix:E.CashAddrPrefix.MAINNET,type:E.CashAddrType.P2PKH});return Promise.resolve(G.replace(/^bitcoincash:/,""))}return{getAddress:Z,signTransaction:J}}function q2(X){let $="phrase"in X?X.phrase:void 0,J="index"in X?X.index||0:0,Z=F.derivationPathToString("derivationPath"in X&&X.derivationPath?X.derivationPath:F.updateDerivationPath(F.NetworkDerivationPath[x],{index:J})),j=$?UX({chain:x,derivationPath:Z,phrase:$}):void 0,G=j?h0(j):("signer"in X)?X.signer:void 0;function q(){return Promise.resolve(G?.getAddress())}let{getBalance:Q,getFeeRates:Y,broadcastTx:z,...L}=XX({chain:x});function U(B,_=!0){return Q(GX(bX(B)))}return{...L,broadcastTx:z,buildTx:u0,createTransaction:c2,getAddress:q,getAddressFromKeys:o0,getBalance:U,getFeeRates:Y,stripPrefix:GX,stripToCashAddress:PX,transfer:p0({broadcastTx:z,getFeeRates:Y,signer:G}),validateAddress:a}}async function c2({assetValue:X,recipient:$,memo:J,feeRate:Z,sender:j}){if(!a($))throw new F.SwapKitError("toolbox_utxo_invalid_address",{address:$});let G=Math.ceil(X.getBaseValue("number")+Z*7500),q=await P(x).getUtxos({address:PX(j),fetchTxHex:!0,targetValue:G}),Q=J?v(J):null,Y=[],z=u($);if(Y.push({address:z,value:X.getBaseValue("number")}),Q)Y.push({script:Q,value:0});let{inputs:L,outputs:U}=g({chain:x,feeRate:Z,inputs:q,outputs:Y});if(!(L&&U))throw new F.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:j});let B=new E.Transaction({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!Q,version:1}),_=u(j),{inputs:M,tx:O}=e({chain:x,compiledMemo:Q,inputs:L,outputs:U.map((f)=>("address"in f)&&f.address?{...f,address:u(f.address)}:f),sender:_,tx:B});return{inputs:M,tx:O,utxos:L}}function p0({broadcastTx:X,getFeeRates:$,signer:J}){return async function({recipient:j,assetValue:G,feeOptionKey:q=F.FeeOption.Fast,...Q}){let Y=await J?.getAddress();if(!(J&&Y))throw new F.SwapKitError("toolbox_utxo_no_signer");if(!j)throw new F.SwapKitError("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let z=Q.feeRate||(await $())[q],{tx:L}=await c2({...Q,assetValue:G,feeRate:z,recipient:j,sender:Y}),U=await J.signTransaction(L);return U.finalize(),X(o2.hex.encode(U.extract()))}}async function u0({assetValue:X,recipient:$,memo:J,feeRate:Z,sender:j}){let G=bX($);if(!a(G))throw new F.SwapKitError("toolbox_utxo_invalid_address",{address:G});let q=Math.ceil(X.getBaseValue("number")+Z*7500),Q=await P(x).getUtxos({address:PX(j),fetchTxHex:!0,targetValue:q}),Y=Number(Z.toFixed(0)),z=J?v(J):null,L=[];if(L.push({address:u($),value:X.getBaseValue("number")}),z)L.push({script:z,value:0});let{inputs:U,outputs:B}=g({chain:x,feeRate:Y,inputs:Q,outputs:L});if(!(U&&B))throw new F.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:j});let _=new E.Transaction({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!z,version:1}),{inputs:M,tx:O}=e({chain:x,compiledMemo:z,inputs:U,outputs:B,sender:u(j),tx:_});return{inputs:M,tx:O,utxos:Q}}function o0(X){let $=E.NETWORKS.bitcoinCash,J=E.p2pkh(X.publicKey,$);if(!J.hash)throw new F.SwapKitError("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return E.encodeCashAddr({hash:J.hash,prefix:E.CashAddrPrefix.MAINNET,type:E.CashAddrType.P2PKH}).replace(/^bitcoincash:/,"")}var o2,F,E,x;var oX=y(()=>{LX();BX();fX();o2=require("@scure/base"),F=require("@swapkit/helpers"),E=require("@swapkit/utxo-signer"),x=F.Chain.BitcoinCash});function r2(){let{isStagenet:X}=I.SKConfig.get("envs");return X?k.ZCASH_TEST_NETWORK:k.ZCASH_NETWORK}function d0(X){return c0.encode(X)}function r0({phrase:X,derivationPath:$}){let J=z2.mnemonicToSeedSync(X),j=L2.HDKey.fromMasterSeed(J).derive($);if(!j.privateKey||!j.publicKey)throw new I.SwapKitError("toolbox_utxo_invalid_params");let{privateKey:G,publicKey:q}=j,Q=k.utils.hash160(q),{isStagenet:Y}=I.SKConfig.get("envs"),z=Y?new Uint8Array([29,37]):new Uint8Array([28,184]),L=new Uint8Array(z.length+Q.length);L.set(z,0),L.set(Q,z.length);let U=d0(L);return{getAddress:()=>Promise.resolve(U),signTransaction:(B)=>{if(B instanceof k.PCZT)return B.signAllInputs(G,q,k.ZcashSigHash.ALL),B.finalizeAllInputs(),Promise.resolve(B.extract());return B.signAllInputs(G,q,k.ZcashSigHash.ALL),Promise.resolve(B)}}}function n0({inputs:X,outputs:$,tx:J,sender:Z,compiledMemo:j}){let G=r2();for(let q of X){let Q=k.Address(G).decode(Z),Y=k.OutScript.encode(Q);J.addInput({index:q.index,script:Y,sequence:4294967295,txid:cX.hex.decode(q.hash),value:BigInt(q.value)})}for(let q of $){let Q="address"in q&&q.address?q.address:Z,Y=q.script;if(Y&&!j)continue;if(Y&&j)J.addOutput({amount:0n,script:j});else J.addOutputAddress(Q,BigInt(q.value),G)}return{inputs:X,tx:J}}async function d2(X){let{assetValue:$,recipient:J,memo:Z,feeRate:j,sender:G,fetchTxHex:q}=X,Q=Z?v(Z):null,Y=await P(I.Chain.Zcash).getUtxos({address:G,fetchTxHex:q!==!1}),z=[{address:J,value:Number($.getBaseValue("string"))},...Q?[{script:Q,value:0}]:[]],{inputs:L,outputs:U}=g({chain:I.Chain.Zcash,changeAddress:G,feeRate:j,inputs:Y,outputs:z});if(!(L&&U))throw new I.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:$,sender:G});let B=k.createZcashTransaction({consensusBranchId:k.ZcashConsensusBranchId.NU6_1,expiryHeight:0,lockTime:0,version:4,versionGroupId:k.ZcashVersionGroupId.SAPLING}),{tx:_,inputs:M}=n0({compiledMemo:Q,inputs:L,outputs:U,sender:G,tx:B});return{inputs:M,outputs:U,tx:_}}function U2(X){let $=_X.match(X).with({signer:_X.P.not(_X.P.nullish)},({signer:Y})=>Y).with({phrase:_X.P.string},({phrase:Y,derivationPath:z,index:L=0})=>{let U=z||I.NetworkDerivationPath[I.Chain.Zcash]||[44,133,0,0,0],B=I.updateDerivationPath(U,{index:L}),_=I.derivationPathToString(B);return r0({derivationPath:_,phrase:Y})}).otherwise(()=>{return}),J=XX({chain:I.Chain.Zcash,signer:$});async function Z({recipient:Y,assetValue:z,feeOptionKey:L=I.FeeOption.Fast,...U}){let B=await $?.getAddress();if(!($&&B))throw new I.SwapKitError("toolbox_utxo_no_signer");let _=U.feeRate||(await J.getFeeRates())[L],{tx:M}=await d2({...U,assetValue:z,feeRate:_,recipient:Y,sender:B}),f=(await $.signTransaction(M)).toHex();return J.broadcastTx(f)}function j({phrase:Y,derivationPath:z="m/44'/133'/0'/0/0"}){let L=z2.mnemonicToSeedSync(Y),B=L2.HDKey.fromMasterSeed(L).derive(z);if(!B.privateKey||!B.publicKey)throw new I.SwapKitError("toolbox_utxo_invalid_params");return{privateKey:B.privateKey,publicKey:B.publicKey}}function G({phrase:Y,derivationPath:z="m/44'/133'/0'/0/0"}){let L=j({derivationPath:z,phrase:Y}),U=r2();return k.WIF(U).encode(L.privateKey)}function q(Y){return async function(L){if(!Y)throw new I.SwapKitError("toolbox_utxo_no_signer");return await Y.signTransaction(L)}}function Q(Y){return async function(L){if(!Y)throw new I.SwapKitError("toolbox_utxo_no_signer");let U=await Y.signTransaction(L);return J.broadcastTx(U.toHex())}}return{...J,createKeysForPath:j,createTransaction:d2,getPrivateKeyFromMnemonic:G,signAndBroadcastTransaction:Q($),signTransaction:q($),transfer:Z,validateAddress:zX}}var cX,L2,z2,I,k,_X,c0;var W2=y(()=>{LX();BX();fX();cX=require("@scure/base"),L2=require("@scure/bip32"),z2=require("@scure/bip39"),I=require("@swapkit/helpers"),k=require("@swapkit/utxo-signer"),_X=require("ts-pattern");c0=cX.createBase58check(k.utils.sha256)});function a2({xpub:X,chain:$,count:J,startIndex:Z=0,accountIndex:j}){if(K("count",J),J<1)throw RangeError("count must be at least 1");K("startIndex",Z);let G=A($),q=i2.HDKey.fromExtendedKey(X,G.bip32),Q=i({accountIndex:j,chain:$}),Y=JX(Q),z=[];for(let L of[!1,!0]){let U=q.deriveChild(Number(L));for(let B=0;B<J;B++){let _=Z+B,M=U.deriveChild(_);if(!M.publicKey)continue;let O=YX({accountIndex:j,chain:$,change:L,index:_});z.push({accountIndex:Y,address:EX({chain:$,network:G,publicKey:M.publicKey}),change:L,index:_,path:s2.derivationPathToString(O),pubkey:n2.hex.encode(M.publicKey)})}}return z}var n2,i2,s2;var t2=y(()=>{HX();BX();n2=require("@scure/base"),i2=require("@scure/bip32"),s2=require("@swapkit/helpers")});function i0(X,$){switch(X){case o.Chain.BitcoinCash:return q2($||{});case o.Chain.Zcash:return U2($);case o.Chain.Bitcoin:case o.Chain.Dogecoin:case o.Chain.Litecoin:case o.Chain.Dash:return XX({chain:X,...$});default:throw new o.SwapKitError("toolbox_utxo_not_supported",{chain:X})}}var o;var e2=y(()=>{oX();BX();W2();HX();t2();oX();fX();o=require("@swapkit/helpers")});var s0={};z0(s0,{validateZcashAddress:()=>zX,validateUtxoAddress:()=>Q2,validateBchAddress:()=>a,toLegacyAddress:()=>u,toCashAddress:()=>bX,stripToCashAddress:()=>PX,stripPrefix:()=>GX,nonSegwitChains:()=>FX,isValidAddress:()=>X2,getUtxoToolbox:()=>i0,getUtxoNetwork:()=>b0,getUtxoApi:()=>P,getUTXOAddressValidator:()=>G2,getUTXOAddressPath:()=>YX,getUTXOAccountPath:()=>i,getUTXOAccountIndexFromPath:()=>JX,getScriptTypeForAddress:()=>qX,getOutputSize:()=>kX,getNetworkForChain:()=>A,getInputSize:()=>s,getDustThreshold:()=>IX,detectAddressNetwork:()=>$2,deriveAddressesFromXpub:()=>a2,createZcashToolbox:()=>U2,createUTXOToolbox:()=>XX,createHDWalletHelpers:()=>H2,createCustomUtxoApi:()=>T0,createBCHToolbox:()=>q2,compileMemo:()=>v,calculateTxSize:()=>QX,assertDerivationIndex:()=>K,addressFromKeysGetter:()=>Y2,addInputsAndOutputs:()=>e,accumulative:()=>g,UtxoNetwork:()=>eX,UTXOScriptType:()=>xX,TX_OVERHEAD:()=>mX,SEGWIT_MARKER_FLAG_WEIGHT:()=>lX,OutputSizes:()=>VX,OP_RETURN_OVERHEAD:()=>g2,MIN_TX_FEE:()=>y0,InputSizes:()=>gX});module.exports=Y0(s0);var a0=y(()=>{BX();HX();LX();e2();oX();W2()});a0();
@@ -1 +1 @@
1
- var r2=Object.defineProperty;var i2=(X)=>X;function s2(X,$){this[X]=i2.bind(null,$)}var a2=(X,$)=>{for(var J in $)r2(X,J,{get:$[J],enumerable:!0,configurable:!0,set:s2.bind($,J)})};var E=(X,$)=>()=>(X&&($=X(X=0)),$);var A8=((X)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(X,{get:($,J)=>(typeof require<"u"?require:$)[J]}):X)(function(X){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+X+'" is not supported')});function j2({deriveAddress:X,getBalance:$,getUtxos:J}){async function Z(L){let{count:Q,startIndex:z=0,change:G=!1}=L,W=[];for(let U=0;U<Q;U++){let B=await X({change:G,index:z+U});if(B)W.push(B)}return W}async function j(L){let{gapLimit:Q=20,change:z=!1}=L??{},G=[],W=0,U=0;while(W<Q){let B=await X({change:z,index:U});if(!B)break;if((await $(B.address)).some((O)=>O.getValue("number")>0))G.push(B),W=0;else W++;U++}return G}async function Y(L=20){let[Q,z]=await Promise.all([j({change:!1,gapLimit:L}),j({change:!0,gapLimit:L})]),G=[...Q,...z],W=await Promise.all(G.map(async(B)=>{let D=(await $(B.address)).reduce((O,n)=>O+n.getValue("number"),0);return{...B,balance:D}})),U=W.reduce((B,M)=>B+M.balance,0);return{addresses:W,total:U}}async function q(L=20){let[Q,z]=await Promise.all([j({change:!1,gapLimit:L}),j({change:!0,gapLimit:L})]),G=[...Q,...z];return(await Promise.all(G.map(async(U)=>{return(await J(U.address)).map((M)=>({...M,address:U.address,derivationIndex:U.index,isChange:U.change}))}))).flat()}return{deriveAddresses:Z,getAggregatedBalance:Y,getAggregatedUtxos:q,scanForAddresses:j}}import{AssetValue as Q2,getChainConfig as t2}from"@swapkit/helpers";import{SwapKitApi as e2}from"@swapkit/helpers/api";function G2(){function X(){let $=Date.now(),J=lX||$;return lX=J,$>lX?$:J+1}return X0+X().toString(36)}function Y2(X){return async function(J,Z=!0){let j=await e2.getChainBalance({address:J,chain:X,scamFilter:Z}),{baseDecimal:Y}=t2(X),q=j.map(({identifier:Q,value:z,decimal:G})=>{return new Q2({decimal:G||Y,identifier:Q,value:z})});if(!q.some((Q)=>Q.isGasAsset))return[Q2.from({chain:X}),...q];return q}}var X0,lX=0;var hX=E(()=>{X0=typeof process<"u"&&process.pid?process.pid.toString(36):""});import{Chain as b,getRPCUrl as $0,RequestClient as PX,SKConfig as J0,SwapKitError as w,warnOnce as Z0}from"@swapkit/helpers";import{NETWORKS as XX}from"@swapkit/utxo-signer";async function j0({chain:X,txHash:$}){let J=`${WX(X)}/push/transaction`,Z=JSON.stringify({data:$});try{let j=await PX.post(J,{body:Z,headers:{"Content-Type":"application/json"}});if(j.context.code!==200)throw new w("toolbox_utxo_broadcast_failed",{error:j.context.error||"Transaction broadcast failed"});return j.data?.transaction_hash||$}catch(j){let Y=await $0(X);if(Y){let q=JSON.stringify({id:G2(),jsonrpc:"2.0",method:"sendrawtransaction",params:[$]}),L=await PX.post(Y,{body:q,headers:{"Content-Type":"application/json"}});if(L.error)throw new w("toolbox_utxo_broadcast_failed",{error:L.error?.message});if(L.result.includes('"code":-26'))throw new w("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return L.result}throw j}}function WX(X){return`https://api.blockchair.com/${Q0(X)}`}function q2(X){switch(X){case b.Bitcoin:return 5;case b.Dogecoin:return 1e4;case b.Litecoin:return 1;case b.Zcash:return 1;default:return 2}}function Q0(X){switch(X){case b.BitcoinCash:return"bitcoin-cash";case b.Litecoin:return"litecoin";case b.Dash:return"dash";case b.Dogecoin:return"dogecoin";case b.Zcash:return"zcash";case b.Polkadot:return"polkadot";default:return"bitcoin"}}async function G0(X){try{let{feePerKb:$}=await PX.get(`https://app.bitgo.com/api/v2/${X.toLowerCase()}/tx/fee`),J=$/1000;return Math.max(J,q2(X))}catch{return q2(X)}}async function bX(X,$){let J=await PX.get(`${X}${$?`${X.includes("?")?"&":"?"}key=${$}`:""}`);if(!J||J.context.code!==200)throw new w("toolbox_utxo_api_error",{error:`Failed to query ${X}`});return J.data}async function z2({address:X,chain:$,apiKey:J}){if(!X)throw new w("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await bX(`${WX($)}/dashboards/address/${X}?transaction_details=true`,J))[X]}catch{return{address:{balance:0,transaction_count:0},utxo:[]}}}async function Y0({address:X,chain:$,apiKey:J}){return(await z2({address:X,apiKey:J,chain:$}))?.address.balance||0}async function W2({chain:X,apiKey:$,txHash:J}){if(!J)throw new w("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await bX(`${WX(X)}/raw/transaction/${J}`,$))?.[J]?.raw_transaction||""}catch(Z){let j=Z instanceof Error?Z.message:String(Z);return console.error(`Failed to fetch raw transaction: ${j}`),""}}async function L0({chain:X,apiKey:$,txHash:J}){if(!J)throw new w("toolbox_utxo_invalid_params",{error:"TxHash is required"});let j=(await bX(`${WX(X)}/dashboards/transaction/${J}`,$))?.[J];if(!j)throw new w("toolbox_utxo_tx_not_found",{txHash:J});let{transaction:Y,inputs:q,outputs:L}=j,Q=q.map((G)=>G.spending_sequence),z=Y.is_rbf===!0||Q.some((G)=>G<q0);return{blockId:Y.block_id,confirmed:Y.block_id!==-1,fee:Y.fee,inputs:q,isRBF:z,outputs:L,sequences:Q,size:Y.size,txid:Y.hash,weight:Y.weight}}async function z0({chain:X,address:$,apiKey:J,offset:Z=0,limit:j=30}){return(await bX(`${WX(X)}/outputs?q=recipient(${$}),is_spent(false)&s=value(desc)&fields=is_spent,transaction_hash,index,value,script_hex,block_id,spending_signature_hex&limit=${j}&offset=${Z}`,J)).map(({is_spent:Q,script_hex:z,block_id:G,transaction_hash:W,index:U,value:B,spending_signature_hex:M})=>({hash:W,index:U,is_confirmed:G!==-1,is_spent:Q,script_hex:z,txHex:M,value:B}))}function W0(X){return X.reduce(($,J)=>$+J.value,0)}function L2(X,$){let J=[...X].sort((Z,j)=>j.value-Z.value);if($){let Z=[],j=0;for(let Y of J)if(Z.push(Y),j+=Y.value,j>=$)break;return Z}return J}async function U2({chain:X,address:$,apiKey:J,targetValue:Z,accumulativeValue:j=0,offset:Y=0,limit:q=30}){if(!$)throw new w("toolbox_utxo_invalid_params",{error:"Address is required"});try{let L=await z0({address:$,apiKey:J,chain:X,limit:q,offset:Y,targetValue:Z}),z=L.length<q,G=L.filter(({is_spent:O})=>!O),W=W0(G),U=j+W,B=Z&&U>=Z;if(z||B)return L2(G,Z);let M=await U2({accumulativeValue:U,address:$,apiKey:J,chain:X,limit:q,offset:Y+q,targetValue:Z}),D=[...G,...M];return L2(D,Z)}catch(L){let Q=L instanceof Error?L.message:String(L);return console.error(`Failed to fetch unspent UTXOs: ${Q}`),[]}}async function U0({address:X,chain:$,apiKey:J,fetchTxHex:Z=!0,targetValue:j}){let Y=await U2({address:X,apiKey:J,chain:$,targetValue:j}),q=[];for(let{hash:L,index:Q,script_hex:z,value:G}of Y){let W;if(Z)W=await W2({apiKey:J,chain:$,txHash:L});q.push({address:X,hash:L,index:Q,txHex:W,value:G,witnessUtxo:{script:Buffer.from(z,"hex"),value:G}})}return q}function V(X){let $=J0.get("apiKeys").blockchair||"";return Z0({condition:!$,id:"no_blockchair_api_key_warning",warning:"No Blockchair API key found. Functionality will be limited."}),{broadcastTx:(J)=>j0({chain:X,txHash:J}),getAddressData:(J)=>z2({address:J,apiKey:$,chain:X}),getBalance:(J)=>Y0({address:J,apiKey:$,chain:X}),getRawTx:(J)=>W2({apiKey:$,chain:X,txHash:J}),getSuggestedTxFee:()=>G0(X),getTransactionDetails:(J)=>L0({apiKey:$,chain:X,txHash:J}),getUtxos:(J)=>U0({...J,apiKey:$,chain:X})}}function B0(X){return X}function _0(){return function($){switch($){case b.Bitcoin:return XX.bitcoin;case b.BitcoinCash:return XX.bitcoinCash;case b.Dash:return XX.dash;case b.Litecoin:return XX.litecoin;case b.Dogecoin:return XX.dogecoin;case b.Zcash:return XX.zcash;default:throw new w("toolbox_utxo_not_supported",{chain:$})}}}var q0=4294967294;var B2=E(()=>{hX()});import{CashAddrType as EX,decodeCashAddr as M0,encodeCashAddr as N0}from"@swapkit/utxo-signer";function H0(X,$,J){return N0({hash:J,prefix:X,type:D0[$]})}function I0(X){let $=M0(X),J=C0[$.type];if(!J)throw Error(`Unknown CashAddr type: ${$.type}`);return{hash:$.hash,prefix:$.prefix,type:J}}var D0,C0,cX;var _2=E(()=>{D0={P2PKH:EX.P2PKH,P2SH:EX.P2SH},C0={[EX.P2PKH]:"P2PKH",[EX.P2SH]:"P2SH"};cX={decode:I0,encode:H0}});import{sha256 as O0}from"@noble/hashes/sha2.js";import{createBase58check as T0}from"@scure/base";import{SwapKitError as N2}from"@swapkit/helpers";function oX(X){try{return FX(X),!0}catch{return!1}}function pX(X){return FX(X)?.network}function g(X){let $=FX(X);if($?.format==="legacy")return X;return P0($)}function UX(X){let $=FX(X);return b0($)}function FX(X){try{let $=V0(X);if($)return $}catch{}try{let $=k0(X);if($)return $}catch{}throw new N2("toolbox_utxo_invalid_address",{address:X})}function V0(X){try{let $=D2.decode(X);if($.length!==21)throw new N2("toolbox_utxo_invalid_address",{address:X});let J=$[0],Z=Array.prototype.slice.call($,1);switch(J){case d.legacy.mainnet.p2pkh:return{format:"legacy",hash:Z,network:"mainnet",type:"p2pkh"};case d.legacy.mainnet.p2sh:return{format:"legacy",hash:Z,network:"mainnet",type:"p2sh"};case d.legacy.testnet.p2pkh:return{format:"legacy",hash:Z,network:"testnet",type:"p2pkh"};case d.legacy.testnet.p2sh:return{format:"legacy",hash:Z,network:"testnet",type:"p2sh"};case d.bitpay.mainnet.p2pkh:return{format:"bitpay",hash:Z,network:"mainnet",type:"p2pkh"};case d.bitpay.mainnet.p2sh:return{format:"bitpay",hash:Z,network:"mainnet",type:"p2sh"};default:return}}catch{return}}function k0(X){if(X.indexOf(":")!==-1)try{return M2(X)}catch{}else{let $=["bitcoincash","bchtest","bchreg"];for(let J of $)try{return M2(`${J}:${X}`)}catch{}}return}function M2(X){try{let{hash:$,prefix:J,type:Z}=cX.decode(X);return{format:"cashaddr",hash:Array.prototype.slice.call($,0),network:J==="bitcoincash"?"mainnet":"testnet",type:Z==="P2PKH"?"p2pkh":"p2sh"}}catch{return}}function P0(X){let $=d.legacy[X.network][X.type],J=Buffer.alloc(1+X.hash.length);return J[0]=$,J.set(X.hash,1),D2.encode(J)}function b0(X){let $=X.network==="mainnet"?"bitcoincash":"bchtest",J=X.type==="p2pkh"?"P2PKH":"P2SH",Z=new Uint8Array(X.hash);return cX.encode($,J,Z)}var D2,uX,d;var C2=E(()=>{_2();D2=T0(O0);((J)=>{J.Mainnet="mainnet";J.Testnet="testnet"})(uX||={});d={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}}});import{SwapKitError as E0}from"@swapkit/helpers";import{Script as F0}from"@swapkit/utxo-signer";function F(X){let $=new Uint8Array(Buffer.from(X,"utf8"));return F0.encode(["RETURN",$])}var f0=1000,vX=10,RX=2,H2=10,v0=41,R0=107,yX,fX,BX,$X=(X)=>{if(X.startsWith("bc1")||X.startsWith("tb1")||X.startsWith("ltc1")||X.startsWith("tltc1"))return"P2WPKH";if(X.startsWith("1")||X.startsWith("m")||X.startsWith("n")||X.startsWith("bitcoincash:q")||X.startsWith("bitcoincash:p")||X.startsWith("q")||X.startsWith("p")||X.startsWith("L")||X.startsWith("M")||X.startsWith("3")||X.startsWith("D")||X.startsWith("A")||X.startsWith("9")||X.startsWith("X")||X.startsWith("7")||X.startsWith("y")||X.startsWith("t1")||X.startsWith("t3")||X.startsWith("tm"))return"P2PKH";throw new E0("toolbox_utxo_invalid_address",{address:X})},r=({inputs:X,outputs:$,feeRate:J})=>{let Z=X[0]&&"address"in X[0]&&X[0].address?$X(X[0].address):"P2PKH",Y=(J?X.filter((z)=>z.value>=fX["type"in z&&z.type?z.type:"P2PKH"]*Math.ceil(J)):X).reduce((z,G)=>z+h(G),0),q=$?.reduce((z,G)=>z+_X(G),0)||BX[Z],L=vX+Y+q;return Z==="P2WPKH"?Math.ceil(L+RX/4):L},h=(X)=>{if("type"in X&&X.type)return fX[X.type];if("address"in X&&X.address)return fX[$X(X.address)];return v0+R0},_X=(X,$)=>{if(X?.script)return H2+X.script.length+(X.script.length>=74?2:1);if($)return BX[$];if("address"in X&&X.address)return BX[$X(X.address)];return BX.P2PKH};var nX=E(()=>{((J)=>{J.P2PKH="P2PKH";J.P2WPKH="P2WPKH"})(yX||={});fX={["P2PKH"]:148,["P2WPKH"]:68},BX={["P2PKH"]:34,["P2WPKH"]:31}});import{Chain as i,SwapKitError as y0}from"@swapkit/helpers";function MX(X){switch(X){case i.Bitcoin:case i.BitcoinCash:return 550;case i.Dash:case i.Litecoin:return 5500;case i.Dogecoin:return 1e5;case i.Zcash:return 546;default:throw new y0("toolbox_utxo_not_supported",{chain:X})}}function R({inputs:X,outputs:$,feeRate:J=1,chain:Z=i.Bitcoin,changeAddress:j=""}){let Y=X[0]&&"address"in X[0]&&X[0].address?$X(X[0].address):"P2PKH",q=X.filter((M)=>h(M)*J<=M.value),Q=Y==="P2WPKH"?Math.ceil(RX/4):0,z=vX+Q+$.reduce((M,D)=>M+_X(D),0),G=$.reduce((M,D)=>M+D.value,0),W=z*J,U=0,B=[];for(let M of q){let D=h(M),O=J*D;W+=O,U+=M.value,B.push(M);let n=W+G;if(U<n)continue;let gX=U-n,IX=J*_X({address:j,value:0});if(gX>IX){let _=IX+W,N=U-(G+Math.ceil(_));if(N>Math.max(h({value:0})*J,MX(Z)))return{fee:Math.ceil(_),inputs:B,outputs:$.concat({address:j,value:N})}}return{fee:Math.ceil(W),inputs:B,outputs:$}}return{fee:Math.ceil(J*r({inputs:X,outputs:$}))}}var I2=E(()=>{nX()});var JX=E(()=>{B2();C2();I2();nX()});import{Address as w0,ZCASH_NETWORK as A0}from"@swapkit/utxo-signer";function s(X){return X.replace(/(bchtest:|bitcoincash:)/,"")}function c(X){let $=s(X);return oX($)&&pX($)==="mainnet"}function ZX(X){try{if(X.startsWith("z"))return console.warn("Shielded Zcash addresses (z-addresses) are not supported. Use transparent addresses (t1/t3) only."),!1;let J=w0(A0).decode(X);return J.type==="pkh"||J.type==="sh"}catch{return!1}}var NX=E(()=>{JX()});import{secp256k1 as S0}from"@noble/curves/secp256k1.js";import{hex as a}from"@scure/base";import{HDKey as k2}from"@scure/bip32";import{mnemonicToSeedSync as rX}from"@scure/bip39";import{AssetValue as wX,applyFeeMultiplier as O2,Chain as k,derivationPathToString as P2,FeeOption as A,NetworkDerivationPath as b2,SwapKitError as H,SwapKitNumber as K0,updateDerivationPath as g0,warnOnce as m0}from"@swapkit/helpers";import{Address as x0,BCHSigHash as iX,CashAddrPrefix as l0,CashAddrType as h0,encodeCashAddr as c0,NETWORKS as jX,p2pkh as T2,p2wpkh as u0,RBF_SEQUENCE as o0,SigHash as E2,Transaction as dX,WIF as F2}from"@swapkit/utxo-signer";import{match as f2}from"ts-pattern";function sX({address:X,chain:$}){return f2($).with(k.BitcoinCash,()=>c(X)).with(k.Zcash,()=>ZX(X)).otherwise(()=>{try{return x0(f($)).decode(X),!0}catch{return!1}})}function f(X){return f2(X).with(k.Bitcoin,()=>jX.bitcoin).with(k.BitcoinCash,()=>jX.bitcoinCash).with(k.Dash,()=>jX.dash).with(k.Dogecoin,()=>jX.dogecoin).with(k.Litecoin,()=>jX.litecoin).with(k.Zcash,()=>jX.zcash).exhaustive()}function p0({phrase:X,derivationPath:$,network:J,seed:Z}){let j=Z??rX(X),q=k2.fromMasterSeed(j,J.bip32).derive($);if(!q.privateKey)throw new H("toolbox_utxo_invalid_params",{error:"Could not derive private key from phrase"});return q.privateKey}function V2(X){return S0.getPublicKey(X,!0)}function aX({publicKey:X,chain:$,network:J}){if($===k.BitcoinCash){let Y=T2(X,J);if(!Y.hash)throw new H("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return c0({hash:Y.hash,prefix:l0.MAINNET,type:h0.P2PKH}).replace(/^bitcoincash:/,"")}let j=!DX.includes($)?u0(X,J):T2(X,J);if(!j.address)throw new H("toolbox_utxo_invalid_address",{error:"Could not derive address"});return j.address}function QX({phrase:X,derivationPath:$,chain:J,wif:Z,seed:j}){let Y=f(J);if(Z){let z=F2(Y).decode(Z),G=V2(z);return{privateKey:z,publicKey:G}}if(!X)throw new H("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let q=$||P2(b2[J]),L=p0({derivationPath:q,network:Y,phrase:X,seed:j}),Q=V2(L);return{privateKey:L,publicKey:Q}}function n0(X,$){return F2(f($)).encode(X)}function d0({phrase:X,derivationPath:$,chain:J,seed:Z}){let j=$.split("/");if(j.length<4)throw new H("toolbox_utxo_invalid_params",{error:`Derivation path must have at least 4 levels (got ${j.length}): ${$}`});let Y=f(J),q=Z??rX(X),L=k2.fromMasterSeed(q,Y.bip32),Q=j.slice(0,4).join("/");return L.derive(Q)}function u({inputs:X,outputs:$,chain:J,tx:Z,sender:j,compiledMemo:Y,enableRBF:q=!1}){let L=f(J),Q=!DX.includes(J),z=q?o0:void 0,G=new Set;for(let W of X){let U=`${W.hash}:${W.index}`;if(G.has(U))throw new H("toolbox_utxo_invalid_params",{error:"Duplicate input detected"});G.add(U);let B=typeof W.hash==="string"?a.decode(W.hash):W.hash;if(Q&&W.witnessUtxo)Z.addInput({index:W.index,sequence:z,txid:B,witnessUtxo:{amount:BigInt(W.witnessUtxo.value),script:W.witnessUtxo.script}});else if(W.txHex)Z.addInput({index:W.index,nonWitnessUtxo:a.decode(W.txHex),sequence:z,txid:B,...J===k.BitcoinCash?{sighashType:iX.ALL}:{}});else throw new H("toolbox_utxo_invalid_params",{error:"Input requires either witnessUtxo or txHex for non-segwit chains"})}for(let W of $){let U="address"in W&&W.address?W.address:j;if(J===k.BitcoinCash)U=g(U);if(W.script){if(Y)Z.addOutput({amount:0n,script:Y})}else Z.addOutputAddress(U,BigInt(W.value),L)}return{inputs:X,tx:Z}}async function GX(X){let $=await V(X).getSuggestedTxFee();return{[A.Average]:$,[A.Fast]:O2($,A.Fast),[A.Fastest]:O2($,A.Fastest)}}async function v2({assetValue:X,recipient:$,memo:J,sender:Z,fetchTxHex:j=!1}){let Y=X.chain,q=(await GX(Y))[A.Fastest],L=j||DX.includes(Y),Q=X.getBaseValue("number"),z=Math.ceil(Q+q*5000);return{inputs:await V(Y).getUtxos({address:Z,fetchTxHex:L,targetValue:z}),outputs:[{address:$,value:Q},...J?[{address:"",script:F(J),value:0}]:[]]}}async function R2({assetValue:X,recipient:$,memo:J,feeRate:Z,sender:j,fetchTxHex:Y=!1,enableRBF:q=!1}){let L=X.chain,Q=J?F(J):null,z=await v2({assetValue:X,fetchTxHex:Y,memo:J,recipient:$,sender:j}),{inputs:G,outputs:W}=R({...z,chain:L,feeRate:Z});if(!(G&&W))throw new H("toolbox_utxo_insufficient_balance",{assetValue:X,sender:j});let U=new dX({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!Q,version:1}),{inputs:B,tx:M}=u({chain:L,compiledMemo:Q,enableRBF:q,inputs:G,outputs:W,sender:j,tx:U});return{inputs:B,tx:M,utxos:z.inputs}}async function y2({assetValue:X,feeOptionKey:$=A.Fast,feeRate:J,memo:Z,sender:j,recipient:Y}){let q=X.chain,L=await v2({assetValue:X,memo:Z,recipient:Y,sender:j}),Q=J?Math.floor(J):(await GX(q))[$];return R({...L,chain:q,feeRate:Q})}function r0(X){return async function({from:J,memo:Z,feeRate:j,feeOptionKey:Y=A.Fast,recipients:q=1}){let L=await V(X).getAddressData(J),Q=j?Math.ceil(j):(await GX(X))[Y],z=L?.utxo.map((D)=>({...D,hash:"",type:"P2PKH"})).filter((D)=>D.value>Math.max(MX(X),h(D)*Q));if(!z?.length)return wX.from({chain:X});let G=BigInt(z.reduce((D,O)=>D+O.value,0)),W=wX.from({chain:X,value:G}),U=typeof q==="number"?Array.from({length:q},()=>({address:J,value:0})):q;if(Z)U.push({address:J,script:F(Z),value:0});let B=r({inputs:z,outputs:U}),M=wX.from({chain:X,value:BigInt(B*Q)});return W.sub(M)}}function i0(X){return async function(J){let{fee:Z}=await y2(J);return wX.from({chain:X,value:K0.fromBigInt(BigInt(Z),8).getValue("string")})}}function s0({chain:X,phrase:$,derivationPath:J,seed:Z}){let j=f(X),{privateKey:Y,publicKey:q}=QX({chain:X,derivationPath:J,phrase:$,seed:Z}),L=X===k.BitcoinCash?[iX.ALL]:[E2.ALL];return{getAddress:()=>aX({chain:X,network:j,publicKey:q}),privateKey:Y,publicKey:q,signTransaction:(Q)=>{return Q.sign(Y,L),Q}}}function a0(X,$){return async function({memo:Z,recipient:j,feeOptionKey:Y,feeRate:q,assetValue:L,enableRBF:Q=!1}){let z=$?.getAddress();if(!($&&z))throw new H("toolbox_utxo_no_signer");if(!j)throw new H("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});m0({condition:Q&&!AX.includes(X),id:`rbf_not_supported_${X}`,warning:`RBF (Replace-by-Fee) is not reliably supported on ${X}. Transaction will be created without RBF signaling.`});let G=Q&&AX.includes(X),W=q||(await GX(X))[Y||A.Fast],{tx:U}=await R2({assetValue:L,enableRBF:G,feeRate:W,memo:Z,recipient:j,sender:z});return $.signTransaction(U),U.finalize(),V(X).broadcastTx(a.encode(U.extract()))}}function tX(X){return($)=>sX({address:$,chain:X})}function eX(X){let $=f(X);return function(Z){if(!Z)throw new H("toolbox_utxo_invalid_params",{error:"Keys must be provided"});return aX({chain:X,network:$,publicKey:Z.publicKey})}}function o({chain:X,...$}){let J="phrase"in $?$.phrase:void 0,Z="index"in $?$.index||0:0,j=J?rX(J):void 0,Y=P2("derivationPath"in $&&$.derivationPath?$.derivationPath:g0(b2[X],{index:Z})),q=J?s0({chain:X,derivationPath:Y,phrase:J,seed:j}):void 0,L="signer"in $?$.signer:void 0,Q=J?QX({chain:X,derivationPath:Y,phrase:J,seed:j}):void 0;function z(){if(q)return Promise.resolve(q.getAddress());if(L)return L.getAddress();return Promise.resolve(void 0)}let G=J?d0({chain:X,derivationPath:Y,phrase:J,seed:j}):void 0;function W(){if(!G)return;return G.publicExtendedKey}function U({index:_,change:N=!1}){if(!G)return;if(!Number.isInteger(_)||_<0)throw RangeError(`index must be a non-negative integer, got: ${_}`);let T=f(X),I=G.deriveChild(Number(N)).deriveChild(_);if(!I.publicKey)throw new H("toolbox_utxo_invalid_params",{error:"Could not derive public key"});let C=aX({chain:X,network:T,publicKey:I.publicKey}),v=a.encode(I.publicKey);return{address:C,change:N,index:_,pubkey:v}}async function B(_){if(!AX.includes(X))return{reason:`RBF is not supported on ${X}`,supported:!1};let N=await V(X).getTransactionDetails(_);return{canReplace:N.isRBF&&!N.confirmed,confirmed:N.confirmed,enabled:N.isRBF,fee:N.fee,sequences:N.sequences,supported:!0}}async function M({txid:_,newFeeRate:N,recipient:T,memo:I}){if(!AX.includes(X))throw new H("toolbox_utxo_rbf_not_supported",{chain:X});let C=await V(X).getTransactionDetails(_);if(!C.isRBF)throw new H("toolbox_utxo_tx_not_replaceable",{txid:_});if(C.confirmed)throw new H("toolbox_utxo_tx_already_confirmed",{blockId:C.blockId,txid:_});let v=C.inputs.reduce((P,l)=>P+l.value,0),y=C.outputs.find((P)=>P.recipient===T)?.value||0;if(y===0)throw new H("toolbox_utxo_invalid_params",{error:"Could not determine send amount from original transaction"});let e=await Promise.all(C.inputs.map(async(P)=>{let l=await V(X).getRawTx(P.transaction_hash);return{hash:P.transaction_hash,index:P.index,txHex:l,value:P.value,witnessUtxo:void 0}})),OX=I?F(I):null,mX=r({feeRate:N,inputs:e.map((P)=>({...P,type:"P2WPKH"})),outputs:[{address:T,value:y}]}),K=Math.ceil(mX*N);if(K<=C.fee)throw new H("toolbox_utxo_rbf_fee_too_low",{newFee:K,originalFee:C.fee});let LX=K-C.fee,m=y-LX;if(m<=0)throw new H("toolbox_utxo_rbf_insufficient_change");let TX=new dX({allowLegacyWitnessUtxo:!0,version:1}),VX=[{address:T,value:m},...I?[{address:"",script:F(I),value:0}]:[]],kX=v-m-K,x=await z();if(kX>MX(X)&&x)VX.push({address:x,value:kX});return u({chain:X,compiledMemo:OX,inputs:e,outputs:VX,sender:x||T,tx:TX}),{feeDelta:LX,newFee:K,originalFee:C.fee,tx:TX}}async function D({txid:_,newFeeRate:N,recipient:T,memo:I}){if(!q)throw new H("toolbox_utxo_no_signer");let{tx:C,originalFee:v,newFee:t}=await M({memo:I,newFeeRate:N,recipient:T,txid:_});q.signTransaction(C),C.finalize();let y=await V(X).broadcastTx(a.encode(C.extract()));return{newFee:t,originalFee:v,txid:y}}function O({index:_,change:N=!1}){if(!G)return;return G.deriveChild(Number(N)).deriveChild(_).privateKey||void 0}function n({tx:_,inputDerivations:N}){if(!G)throw new H("toolbox_utxo_no_signer");let T=X===k.BitcoinCash?[iX.ALL]:[E2.ALL];for(let I=0;I<N.length;I++){let C=N[I];if(!C)continue;let{derivationIndex:v,isChange:t}=C,y=O({change:t,index:v});if(!y)throw new H("toolbox_utxo_invalid_params",{error:`Could not derive private key for input ${I} at index ${v}`});_.signIdx(y,I,T)}return _}async function gX({utxos:_,recipient:N,assetValue:T,memo:I,feeRate:C,feeOptionKey:v,changeAddress:t}){if(!G)throw new H("toolbox_utxo_no_signer");let y=C||(await GX(X))[v||A.Fast],e=I?F(I):null,OX=[{address:N,value:T.getBaseValue("number")}];if(e)OX.push({address:"",script:e,value:0});let mX=_.map(({hash:x,index:P,value:l,txHex:d2,witnessUtxo:xX})=>({hash:x,index:P,txHex:d2,value:l,witnessUtxo:xX?{script:xX.script,value:xX.value}:void 0})),{inputs:K,outputs:LX}=R({chain:X,feeRate:y,inputs:mX,outputs:OX});if(!(K&&LX))throw new H("toolbox_utxo_insufficient_balance",{assetValue:T,sender:"multiple addresses"});let m=new dX({allowLegacyWitnessUtxo:!0,version:1}),TX=_[0]?.address,VX=t||await z()||TX||N;u({chain:X,compiledMemo:e,inputs:K,outputs:LX,sender:VX,tx:m});let kX=K.map((x)=>{let P=_.find((l)=>l.hash===x.hash&&l.index===x.index);return P?{derivationIndex:P.derivationIndex,isChange:P.isChange}:{derivationIndex:0,isChange:!1}});return n({inputDerivations:kX,tx:m}),m.finalize(),V(X).broadcastTx(a.encode(m.extract()))}function IX({address:_,gapLimit:N=20}){if(!G)return;for(let T=0;T<N;T++){let I=U({change:!1,index:T}),C=U({change:!0,index:T}),v=I?.address===_?!1:C?.address===_;if(I?.address===_||C?.address===_)return{change:v,index:T}}return}return{accumulative:R,broadcastTx:(_)=>V(X).broadcastTx(_),bumpFee:D,calculateTxSize:r,createKeysForPath:(_)=>QX({..._,chain:X}),createReplacementTransaction:M,createTransaction:R2,deriveAddressAtIndex:U,derivePrivateKeyAtIndex:O,estimateMaxSendableAmount:r0(X),estimateTransactionFee:i0(X),getAddress:z,getAddressFromKeys:eX(X),getBalance:Y2(X),getExtendedPublicKey:W,getFeeRates:()=>GX(X),getInputsOutputsFee:y2,getNetworkForChain:()=>f(X),getPrivateKeyFromMnemonic:(_)=>n0(QX({..._,chain:X}).privateKey,X),isRBFEnabled:B,keys:Q,resolveDerivationIndex:IX,signAndBroadcastTransaction:async(_)=>{if(!q)throw new H("toolbox_utxo_no_signer");return q.signTransaction(_),_.finalize(),await V(X).broadcastTx(a.encode(_.extract()))},signTransactionWithMultipleKeys:n,transfer:a0(X,q),transferFromMultipleAddresses:gX,validateAddress:tX(X)}}var DX,AX;var CX=E(()=>{hX();JX();NX();DX=[k.Dash,k.Dogecoin,k.Zcash,k.BitcoinCash],AX=[k.Bitcoin]});import{hex as t0}from"@scure/base";import{Chain as e0,derivationPathToString as X8,FeeOption as $8,NetworkDerivationPath as J8,SwapKitError as p,updateDerivationPath as Z8}from"@swapkit/helpers";import{BCHSigHash as j8,CashAddrPrefix as w2,CashAddrType as A2,encodeCashAddr as S2,NETWORKS as Q8,p2pkh as K2,Transaction as g2}from"@swapkit/utxo-signer";function HX(X){return s(UX(X))}function G8(X){let $=f(S);function J(j){return j.sign(X.privateKey,[j8.ALL]),j}function Z(){let j=K2(X.publicKey,$);if(!j.hash)throw new p("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});let Y=S2({hash:j.hash,prefix:w2.MAINNET,type:A2.P2PKH});return Promise.resolve(Y.replace(/^bitcoincash:/,""))}return{getAddress:Z,signTransaction:J}}function X2(X){let $="phrase"in X?X.phrase:void 0,J="index"in X?X.index||0:0,Z=X8("derivationPath"in X&&X.derivationPath?X.derivationPath:Z8(J8[S],{index:J})),j=$?QX({chain:S,derivationPath:Z,phrase:$}):void 0,Y=j?G8(j):("signer"in X)?X.signer:void 0;function q(){return Promise.resolve(Y?.getAddress())}let{getBalance:L,getFeeRates:Q,broadcastTx:z,...G}=o({chain:S});function W(U,B=!0){return L(s(UX(U)))}return{...G,broadcastTx:z,buildTx:q8,createTransaction:m2,getAddress:q,getAddressFromKeys:L8,getBalance:W,getFeeRates:Q,stripPrefix:s,stripToCashAddress:HX,transfer:Y8({broadcastTx:z,getFeeRates:Q,signer:Y}),validateAddress:c}}async function m2({assetValue:X,recipient:$,memo:J,feeRate:Z,sender:j}){if(!c($))throw new p("toolbox_utxo_invalid_address",{address:$});let Y=Math.ceil(X.getBaseValue("number")+Z*7500),q=await V(S).getUtxos({address:HX(j),fetchTxHex:!0,targetValue:Y}),L=J?F(J):null,Q=[],z=g($);if(Q.push({address:z,value:X.getBaseValue("number")}),L)Q.push({script:L,value:0});let{inputs:G,outputs:W}=R({chain:S,feeRate:Z,inputs:q,outputs:Q});if(!(G&&W))throw new p("toolbox_utxo_insufficient_balance",{assetValue:X,sender:j});let U=new g2({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!L,version:1}),B=g(j),{inputs:M,tx:D}=u({chain:S,compiledMemo:L,inputs:G,outputs:W.map((O)=>("address"in O)&&O.address?{...O,address:g(O.address)}:O),sender:B,tx:U});return{inputs:M,tx:D,utxos:G}}function Y8({broadcastTx:X,getFeeRates:$,signer:J}){return async function({recipient:j,assetValue:Y,feeOptionKey:q=$8.Fast,...L}){let Q=await J?.getAddress();if(!(J&&Q))throw new p("toolbox_utxo_no_signer");if(!j)throw new p("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let z=L.feeRate||(await $())[q],{tx:G}=await m2({...L,assetValue:Y,feeRate:z,recipient:j,sender:Q}),W=await J.signTransaction(G);return W.finalize(),X(t0.encode(W.extract()))}}async function q8({assetValue:X,recipient:$,memo:J,feeRate:Z,sender:j}){let Y=UX($);if(!c(Y))throw new p("toolbox_utxo_invalid_address",{address:Y});let q=Math.ceil(X.getBaseValue("number")+Z*7500),L=await V(S).getUtxos({address:HX(j),fetchTxHex:!0,targetValue:q}),Q=Number(Z.toFixed(0)),z=J?F(J):null,G=[];if(G.push({address:g($),value:X.getBaseValue("number")}),z)G.push({script:z,value:0});let{inputs:W,outputs:U}=R({chain:S,feeRate:Q,inputs:L,outputs:G});if(!(W&&U))throw new p("toolbox_utxo_insufficient_balance",{assetValue:X,sender:j});let B=new g2({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!z,version:1}),{inputs:M,tx:D}=u({chain:S,compiledMemo:z,inputs:W,outputs:U,sender:g(j),tx:B});return{inputs:M,tx:D,utxos:L}}function L8(X){let $=Q8.bitcoinCash,J=K2(X.publicKey,$);if(!J.hash)throw new p("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return S2({hash:J.hash,prefix:w2.MAINNET,type:A2.P2PKH}).replace(/^bitcoincash:/,"")}var S;var SX=E(()=>{JX();CX();NX();S=e0.BitcoinCash});import{createBase58check as z8,hex as W8}from"@scure/base";import{HDKey as h2}from"@scure/bip32";import{mnemonicToSeedSync as c2}from"@scure/bip39";import{Chain as KX,derivationPathToString as U8,FeeOption as B8,NetworkDerivationPath as _8,SKConfig as u2,SwapKitError as YX,updateDerivationPath as M8}from"@swapkit/helpers";import{Address as N8,createZcashTransaction as D8,OutScript as C8,PCZT as H8,utils as o2,WIF as I8,ZCASH_NETWORK as O8,ZCASH_TEST_NETWORK as T8,ZcashConsensusBranchId as V8,ZcashSigHash as x2,ZcashVersionGroupId as k8}from"@swapkit/utxo-signer";import{match as P8,P as $2}from"ts-pattern";function p2(){let{isStagenet:X}=u2.get("envs");return X?T8:O8}function E8(X){return b8.encode(X)}function F8({phrase:X,derivationPath:$}){let J=c2(X),j=h2.fromMasterSeed(J).derive($);if(!j.privateKey||!j.publicKey)throw new YX("toolbox_utxo_invalid_params");let{privateKey:Y,publicKey:q}=j,L=o2.hash160(q),{isStagenet:Q}=u2.get("envs"),z=Q?new Uint8Array([29,37]):new Uint8Array([28,184]),G=new Uint8Array(z.length+L.length);G.set(z,0),G.set(L,z.length);let W=E8(G);return{getAddress:()=>Promise.resolve(W),signTransaction:(U)=>{if(U instanceof H8)return U.signAllInputs(Y,q,x2.ALL),U.finalizeAllInputs(),Promise.resolve(U.extract());return U.signAllInputs(Y,q,x2.ALL),Promise.resolve(U)}}}function f8({inputs:X,outputs:$,tx:J,sender:Z,compiledMemo:j}){let Y=p2();for(let q of X){let L=N8(Y).decode(Z),Q=C8.encode(L);J.addInput({index:q.index,script:Q,sequence:4294967295,txid:W8.decode(q.hash),value:BigInt(q.value)})}for(let q of $){let L="address"in q&&q.address?q.address:Z,Q=q.script;if(Q&&!j)continue;if(Q&&j)J.addOutput({amount:0n,script:j});else J.addOutputAddress(L,BigInt(q.value),Y)}return{inputs:X,tx:J}}async function l2(X){let{assetValue:$,recipient:J,memo:Z,feeRate:j,sender:Y,fetchTxHex:q}=X,L=Z?F(Z):null,Q=await V(KX.Zcash).getUtxos({address:Y,fetchTxHex:q!==!1}),z=[{address:J,value:Number($.getBaseValue("string"))},...L?[{script:L,value:0}]:[]],{inputs:G,outputs:W}=R({chain:KX.Zcash,changeAddress:Y,feeRate:j,inputs:Q,outputs:z});if(!(G&&W))throw new YX("toolbox_utxo_insufficient_balance",{assetValue:$,sender:Y});let U=D8({consensusBranchId:V8.NU6_1,expiryHeight:0,lockTime:0,version:4,versionGroupId:k8.SAPLING}),{tx:B,inputs:M}=f8({compiledMemo:L,inputs:G,outputs:W,sender:Y,tx:U});return{inputs:M,outputs:W,tx:B}}function J2(X){let $=P8(X).with({signer:$2.not($2.nullish)},({signer:Q})=>Q).with({phrase:$2.string},({phrase:Q,derivationPath:z,index:G=0})=>{let W=z||_8[KX.Zcash]||[44,133,0,0,0],U=M8(W,{index:G}),B=U8(U);return F8({derivationPath:B,phrase:Q})}).otherwise(()=>{return}),J=o({chain:KX.Zcash,signer:$});async function Z({recipient:Q,assetValue:z,feeOptionKey:G=B8.Fast,...W}){let U=await $?.getAddress();if(!($&&U))throw new YX("toolbox_utxo_no_signer");let B=W.feeRate||(await J.getFeeRates())[G],{tx:M}=await l2({...W,assetValue:z,feeRate:B,recipient:Q,sender:U}),O=(await $.signTransaction(M)).toHex();return J.broadcastTx(O)}function j({phrase:Q,derivationPath:z="m/44'/133'/0'/0/0"}){let G=c2(Q),U=h2.fromMasterSeed(G).derive(z);if(!U.privateKey||!U.publicKey)throw new YX("toolbox_utxo_invalid_params");return{privateKey:U.privateKey,publicKey:U.publicKey}}function Y({phrase:Q,derivationPath:z="m/44'/133'/0'/0/0"}){let G=j({derivationPath:z,phrase:Q}),W=p2();return I8(W).encode(G.privateKey)}function q(Q){return async function(G){if(!Q)throw new YX("toolbox_utxo_no_signer");return await Q.signTransaction(G)}}function L(Q){return async function(G){if(!Q)throw new YX("toolbox_utxo_no_signer");let W=await Q.signTransaction(G);return J.broadcastTx(W.toHex())}}return{...J,createKeysForPath:j,createTransaction:l2,getPrivateKeyFromMnemonic:Y,signAndBroadcastTransaction:L($),signTransaction:q($),transfer:Z,validateAddress:ZX}}var b8;var Z2=E(()=>{JX();CX();NX();b8=z8(o2.sha256)});import{Chain as qX,SwapKitError as v8}from"@swapkit/helpers";function R8(X,$){switch(X){case qX.BitcoinCash:return X2($||{});case qX.Zcash:return J2($);case qX.Bitcoin:case qX.Dogecoin:case qX.Litecoin:case qX.Dash:return o({chain:X,...$});default:throw new v8("toolbox_utxo_not_supported",{chain:X})}}var n2=E(()=>{SX();CX();Z2();SX();NX()});var y8={};a2(y8,{validateZcashAddress:()=>ZX,validateUtxoAddress:()=>sX,validateBchAddress:()=>c,toLegacyAddress:()=>g,toCashAddress:()=>UX,stripToCashAddress:()=>HX,stripPrefix:()=>s,nonSegwitChains:()=>DX,isValidAddress:()=>oX,getUtxoToolbox:()=>R8,getUtxoNetwork:()=>_0,getUtxoApi:()=>V,getUTXOAddressValidator:()=>tX,getScriptTypeForAddress:()=>$X,getOutputSize:()=>_X,getNetworkForChain:()=>f,getInputSize:()=>h,getDustThreshold:()=>MX,detectAddressNetwork:()=>pX,createZcashToolbox:()=>J2,createUTXOToolbox:()=>o,createHDWalletHelpers:()=>j2,createCustomUtxoApi:()=>B0,createBCHToolbox:()=>X2,compileMemo:()=>F,calculateTxSize:()=>r,addressFromKeysGetter:()=>eX,addInputsAndOutputs:()=>u,accumulative:()=>R,UtxoNetwork:()=>uX,UTXOScriptType:()=>yX,TX_OVERHEAD:()=>vX,SEGWIT_MARKER_FLAG_WEIGHT:()=>RX,OutputSizes:()=>BX,OP_RETURN_OVERHEAD:()=>H2,MIN_TX_FEE:()=>f0,InputSizes:()=>fX});var w8=E(()=>{CX();JX();n2();SX();Z2()});w8();export{ZX as validateZcashAddress,sX as validateUtxoAddress,c as validateBchAddress,g as toLegacyAddress,UX as toCashAddress,HX as stripToCashAddress,s as stripPrefix,DX as nonSegwitChains,oX as isValidAddress,R8 as getUtxoToolbox,_0 as getUtxoNetwork,V as getUtxoApi,tX as getUTXOAddressValidator,$X as getScriptTypeForAddress,_X as getOutputSize,f as getNetworkForChain,h as getInputSize,MX as getDustThreshold,pX as detectAddressNetwork,J2 as createZcashToolbox,o as createUTXOToolbox,j2 as createHDWalletHelpers,B0 as createCustomUtxoApi,X2 as createBCHToolbox,F as compileMemo,r as calculateTxSize,eX as addressFromKeysGetter,u as addInputsAndOutputs,R as accumulative,uX as UtxoNetwork,yX as UTXOScriptType,vX as TX_OVERHEAD,RX as SEGWIT_MARKER_FLAG_WEIGHT,BX as OutputSizes,H2 as OP_RETURN_OVERHEAD,f0 as MIN_TX_FEE,fX as InputSizes};
1
+ var j0=Object.defineProperty;var Q0=(X)=>X;function G0(X,$){this[X]=Q0.bind(null,$)}var Y0=(X,$)=>{for(var J in $)j0(X,J,{get:$[J],enumerable:!0,configurable:!0,set:G0.bind($,J)})};var F=(X,$)=>()=>(X&&($=X(X=0)),$);var n1=((X)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(X,{get:($,J)=>(typeof require<"u"?require:$)[J]}):X)(function(X){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+X+'" is not supported')});import{NetworkDerivationPath as q0}from"@swapkit/helpers";function A(X,$){if(!Number.isInteger($)||$<0)throw RangeError(`${X} must be a non-negative integer, got: ${$}`)}function o({accountIndex:X,chain:$,derivationPath:J}){if(X!==void 0)A("accountIndex",X);let Z=[...J?.slice(0,3)??q0[$].slice(0,3)];if(X!==void 0)Z[2]=X;return Z}function ZX({accountIndex:X,change:$=!1,chain:J,derivationPath:Z,index:j}){return A("index",j),[...o({accountIndex:X,chain:J,derivationPath:Z}),Number($),j]}function a(X){return X[2]??0}function W2({deriveAddress:X,getBalance:$,getUtxos:J}){async function Z(G){let{accountIndex:Q,count:L,startIndex:q=0,change:z=!1}=G;if(A("count",L),L<1)throw RangeError("count must be at least 1");A("startIndex",q);let W=[];for(let B=0;B<L;B++){let N=await X({accountIndex:Q,change:z,index:q+B});if(N)W.push(N)}return W}async function j(G){let{gapLimit:Q=20,change:L=!1}=G??{},q=[],z=0,W=0;while(z<Q){let B=await X({change:L,index:W});if(!B)break;if((await $(B.address)).some((b)=>b.getValue("number")>0))q.push(B),z=0;else z++;W++}return q}async function Y(G=20){let[Q,L]=await Promise.all([j({change:!1,gapLimit:G}),j({change:!0,gapLimit:G})]),q=[...Q,...L],z=await Promise.all(q.map(async(B)=>{let D=(await $(B.address)).reduce((b,s)=>b+s.getValue("number"),0);return{...B,balance:D}})),W=z.reduce((B,N)=>B+N.balance,0);return{addresses:z,total:W}}async function U(G=20){let[Q,L]=await Promise.all([j({change:!1,gapLimit:G}),j({change:!0,gapLimit:G})]),q=[...Q,...L];return(await Promise.all(q.map(async(W)=>{return(await J(W.address)).map((N)=>({...N,address:W.address,derivationIndex:W.index,isChange:W.change}))}))).flat()}return{deriveAddresses:Z,getAggregatedBalance:Y,getAggregatedUtxos:U,scanForAddresses:j}}var DX=()=>{};import{AssetValue as B2,getChainConfig as L0}from"@swapkit/helpers";import{SwapKitApi as z0}from"@swapkit/helpers/api";function _2(){function X(){let $=Date.now(),J=nX||$;return nX=J,$>nX?$:J+1}return U0+X().toString(36)}function N2(X){return async function(J,Z=!0){let j=await z0.getChainBalance({address:J,chain:X,scamFilter:Z}),{baseDecimal:Y}=L0(X),U=j.map(({identifier:Q,value:L,decimal:q})=>{return new B2({decimal:q||Y,identifier:Q,value:L})});if(!U.some((Q)=>Q.isGasAsset))return[B2.from({chain:X}),...U];return U}}var U0,nX=0;var iX=F(()=>{U0=typeof process<"u"&&process.pid?process.pid.toString(36):""});import{Chain as f,getRPCUrl as W0,RequestClient as vX,SKConfig as B0,SwapKitError as S,warnOnce as _0}from"@swapkit/helpers";import{NETWORKS as jX}from"@swapkit/utxo-signer";async function N0({chain:X,txHash:$}){let J=`${CX(X)}/push/transaction`,Z=JSON.stringify({data:$});try{let j=await vX.post(J,{body:Z,headers:{"Content-Type":"application/json"}});if(j.context.code!==200)throw new S("toolbox_utxo_broadcast_failed",{error:j.context.error||"Transaction broadcast failed"});return j.data?.transaction_hash||$}catch(j){let Y=await W0(X);if(Y){let U=JSON.stringify({id:_2(),jsonrpc:"2.0",method:"sendrawtransaction",params:[$]}),G=await vX.post(Y,{body:U,headers:{"Content-Type":"application/json"}});if(G.error)throw new S("toolbox_utxo_broadcast_failed",{error:G.error?.message});if(G.result.includes('"code":-26'))throw new S("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return G.result}throw j}}function CX(X){return`https://api.blockchair.com/${M0(X)}`}function M2(X){switch(X){case f.Bitcoin:return 5;case f.Dogecoin:return 1e4;case f.Litecoin:return 1;case f.Zcash:return 1;default:return 2}}function M0(X){switch(X){case f.BitcoinCash:return"bitcoin-cash";case f.Litecoin:return"litecoin";case f.Dash:return"dash";case f.Dogecoin:return"dogecoin";case f.Zcash:return"zcash";case f.Polkadot:return"polkadot";default:return"bitcoin"}}async function D0(X){try{let{feePerKb:$}=await vX.get(`https://app.bitgo.com/api/v2/${X.toLowerCase()}/tx/fee`),J=$/1000;return Math.max(J,M2(X))}catch{return M2(X)}}async function wX(X,$){let J=await vX.get(`${X}${$?`${X.includes("?")?"&":"?"}key=${$}`:""}`);if(!J||J.context.code!==200)throw new S("toolbox_utxo_api_error",{error:`Failed to query ${X}`});return J.data}async function C2({address:X,chain:$,apiKey:J}){if(!X)throw new S("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await wX(`${CX($)}/dashboards/address/${X}?transaction_details=true`,J))[X]}catch{return{address:{balance:0,transaction_count:0},utxo:[]}}}async function C0({address:X,chain:$,apiKey:J}){return(await C2({address:X,apiKey:J,chain:$}))?.address.balance||0}async function H2({chain:X,apiKey:$,txHash:J}){if(!J)throw new S("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await wX(`${CX(X)}/raw/transaction/${J}`,$))?.[J]?.raw_transaction||""}catch(Z){let j=Z instanceof Error?Z.message:String(Z);return console.error(`Failed to fetch raw transaction: ${j}`),""}}async function O0({chain:X,apiKey:$,txHash:J}){if(!J)throw new S("toolbox_utxo_invalid_params",{error:"TxHash is required"});let j=(await wX(`${CX(X)}/dashboards/transaction/${J}`,$))?.[J];if(!j)throw new S("toolbox_utxo_tx_not_found",{txHash:J});let{transaction:Y,inputs:U,outputs:G}=j,Q=U.map((q)=>q.spending_sequence),L=Y.is_rbf===!0||Q.some((q)=>q<H0);return{blockId:Y.block_id,confirmed:Y.block_id!==-1,fee:Y.fee,inputs:U,isRBF:L,outputs:G,sequences:Q,size:Y.size,txid:Y.hash,weight:Y.weight}}async function T0({chain:X,address:$,apiKey:J,offset:Z=0,limit:j=30}){return(await wX(`${CX(X)}/outputs?q=recipient(${$}),is_spent(false)&s=value(desc)&fields=is_spent,transaction_hash,index,value,script_hex,block_id,spending_signature_hex&limit=${j}&offset=${Z}`,J)).map(({is_spent:Q,script_hex:L,block_id:q,transaction_hash:z,index:W,value:B,spending_signature_hex:N})=>({hash:z,index:W,is_confirmed:q!==-1,is_spent:Q,script_hex:L,txHex:N,value:B}))}function b0(X){return X.reduce(($,J)=>$+J.value,0)}function D2(X,$){let J=[...X].sort((Z,j)=>j.value-Z.value);if($){let Z=[],j=0;for(let Y of J)if(Z.push(Y),j+=Y.value,j>=$)break;return Z}return J}async function O2({chain:X,address:$,apiKey:J,targetValue:Z,accumulativeValue:j=0,offset:Y=0,limit:U=30}){if(!$)throw new S("toolbox_utxo_invalid_params",{error:"Address is required"});try{let G=await T0({address:$,apiKey:J,chain:X,limit:U,offset:Y,targetValue:Z}),L=G.length<U,q=G.filter(({is_spent:b})=>!b),z=b0(q),W=j+z,B=Z&&W>=Z;if(L||B)return D2(q,Z);let N=await O2({accumulativeValue:W,address:$,apiKey:J,chain:X,limit:U,offset:Y+U,targetValue:Z}),D=[...q,...N];return D2(D,Z)}catch(G){let Q=G instanceof Error?G.message:String(G);return console.error(`Failed to fetch unspent UTXOs: ${Q}`),[]}}async function V0({address:X,chain:$,apiKey:J,fetchTxHex:Z=!0,targetValue:j}){let Y=await O2({address:X,apiKey:J,chain:$,targetValue:j}),U=[];for(let{hash:G,index:Q,script_hex:L,value:q}of Y){let z;if(Z)z=await H2({apiKey:J,chain:$,txHash:G});U.push({address:X,hash:G,index:Q,txHex:z,value:q,witnessUtxo:{script:Buffer.from(L,"hex"),value:q}})}return U}function V(X){let $=B0.get("apiKeys").blockchair||"";return _0({condition:!$,id:"no_blockchair_api_key_warning",warning:"No Blockchair API key found. Functionality will be limited."}),{broadcastTx:(J)=>N0({chain:X,txHash:J}),getAddressData:(J)=>C2({address:J,apiKey:$,chain:X}),getBalance:(J)=>C0({address:J,apiKey:$,chain:X}),getRawTx:(J)=>H2({apiKey:$,chain:X,txHash:J}),getSuggestedTxFee:()=>D0(X),getTransactionDetails:(J)=>O0({apiKey:$,chain:X,txHash:J}),getUtxos:(J)=>V0({...J,apiKey:$,chain:X})}}function k0(X){return X}function I0(){return function($){switch($){case f.Bitcoin:return jX.bitcoin;case f.BitcoinCash:return jX.bitcoinCash;case f.Dash:return jX.dash;case f.Litecoin:return jX.litecoin;case f.Dogecoin:return jX.dogecoin;case f.Zcash:return jX.zcash;default:throw new S("toolbox_utxo_not_supported",{chain:$})}}}var H0=4294967294;var T2=F(()=>{iX()});import{CashAddrType as SX,decodeCashAddr as f0,encodeCashAddr as F0}from"@swapkit/utxo-signer";function R0(X,$,J){return F0({hash:J,prefix:X,type:E0[$]})}function y0(X){let $=f0(X),J=P0[$.type];if(!J)throw Error(`Unknown CashAddr type: ${$.type}`);return{hash:$.hash,prefix:$.prefix,type:J}}var E0,P0,sX;var b2=F(()=>{E0={P2PKH:SX.P2PKH,P2SH:SX.P2SH},P0={[SX.P2PKH]:"P2PKH",[SX.P2SH]:"P2SH"};sX={decode:y0,encode:R0}});import{sha256 as A0}from"@noble/hashes/sha2.js";import{createBase58check as v0}from"@scure/base";import{SwapKitError as k2}from"@swapkit/helpers";function tX(X){try{return KX(X),!0}catch{return!1}}function eX(X){return KX(X)?.network}function l(X){let $=KX(X);if($?.format==="legacy")return X;return K0($)}function HX(X){let $=KX(X);return g0($)}function KX(X){try{let $=w0(X);if($)return $}catch{}try{let $=S0(X);if($)return $}catch{}throw new k2("toolbox_utxo_invalid_address",{address:X})}function w0(X){try{let $=I2.decode(X);if($.length!==21)throw new k2("toolbox_utxo_invalid_address",{address:X});let J=$[0],Z=Array.prototype.slice.call($,1);switch(J){case t.legacy.mainnet.p2pkh:return{format:"legacy",hash:Z,network:"mainnet",type:"p2pkh"};case t.legacy.mainnet.p2sh:return{format:"legacy",hash:Z,network:"mainnet",type:"p2sh"};case t.legacy.testnet.p2pkh:return{format:"legacy",hash:Z,network:"testnet",type:"p2pkh"};case t.legacy.testnet.p2sh:return{format:"legacy",hash:Z,network:"testnet",type:"p2sh"};case t.bitpay.mainnet.p2pkh:return{format:"bitpay",hash:Z,network:"mainnet",type:"p2pkh"};case t.bitpay.mainnet.p2sh:return{format:"bitpay",hash:Z,network:"mainnet",type:"p2sh"};default:return}}catch{return}}function S0(X){if(X.indexOf(":")!==-1)try{return V2(X)}catch{}else{let $=["bitcoincash","bchtest","bchreg"];for(let J of $)try{return V2(`${J}:${X}`)}catch{}}return}function V2(X){try{let{hash:$,prefix:J,type:Z}=sX.decode(X);return{format:"cashaddr",hash:Array.prototype.slice.call($,0),network:J==="bitcoincash"?"mainnet":"testnet",type:Z==="P2PKH"?"p2pkh":"p2sh"}}catch{return}}function K0(X){let $=t.legacy[X.network][X.type],J=Buffer.alloc(1+X.hash.length);return J[0]=$,J.set(X.hash,1),I2.encode(J)}function g0(X){let $=X.network==="mainnet"?"bitcoincash":"bchtest",J=X.type==="p2pkh"?"P2PKH":"P2SH",Z=new Uint8Array(X.hash);return sX.encode($,J,Z)}var I2,aX,t;var f2=F(()=>{b2();I2=v0(A0);((J)=>{J.Mainnet="mainnet";J.Testnet="testnet"})(aX||={});t={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}}});import{SwapKitError as m0}from"@swapkit/helpers";import{Script as l0}from"@swapkit/utxo-signer";function P(X){let $=new Uint8Array(Buffer.from(X,"utf8"));return l0.encode(["RETURN",$])}var x0=1000,mX=10,lX=2,F2=10,h0=41,p0=107,xX,gX,OX,QX=(X)=>{if(X.startsWith("bc1")||X.startsWith("tb1")||X.startsWith("ltc1")||X.startsWith("tltc1"))return"P2WPKH";if(X.startsWith("1")||X.startsWith("m")||X.startsWith("n")||X.startsWith("bitcoincash:q")||X.startsWith("bitcoincash:p")||X.startsWith("q")||X.startsWith("p")||X.startsWith("L")||X.startsWith("M")||X.startsWith("3")||X.startsWith("D")||X.startsWith("A")||X.startsWith("9")||X.startsWith("X")||X.startsWith("7")||X.startsWith("y")||X.startsWith("t1")||X.startsWith("t3")||X.startsWith("tm"))return"P2PKH";throw new m0("toolbox_utxo_invalid_address",{address:X})},e=({inputs:X,outputs:$,feeRate:J})=>{let Z=X[0]&&"address"in X[0]&&X[0].address?QX(X[0].address):"P2PKH",Y=(J?X.filter((L)=>L.value>=gX["type"in L&&L.type?L.type:"P2PKH"]*Math.ceil(J)):X).reduce((L,q)=>L+c(q),0),U=$?.reduce((L,q)=>L+TX(q),0)||OX[Z],G=mX+Y+U;return Z==="P2WPKH"?Math.ceil(G+lX/4):G},c=(X)=>{if("type"in X&&X.type)return gX[X.type];if("address"in X&&X.address)return gX[QX(X.address)];return h0+p0},TX=(X,$)=>{if(X?.script)return F2+X.script.length+(X.script.length>=74?2:1);if($)return OX[$];if("address"in X&&X.address)return OX[QX(X.address)];return OX.P2PKH};var X2=F(()=>{((J)=>{J.P2PKH="P2PKH";J.P2WPKH="P2WPKH"})(xX||={});gX={["P2PKH"]:148,["P2WPKH"]:68},OX={["P2PKH"]:34,["P2WPKH"]:31}});import{Chain as XX,SwapKitError as u0}from"@swapkit/helpers";function bX(X){switch(X){case XX.Bitcoin:case XX.BitcoinCash:return 550;case XX.Dash:case XX.Litecoin:return 5500;case XX.Dogecoin:return 1e5;case XX.Zcash:return 546;default:throw new u0("toolbox_utxo_not_supported",{chain:X})}}function v({inputs:X,outputs:$,feeRate:J=1,chain:Z=XX.Bitcoin,changeAddress:j=""}){let Y=X[0]&&"address"in X[0]&&X[0].address?QX(X[0].address):"P2PKH",U=X.filter((N)=>c(N)*J<=N.value),Q=Y==="P2WPKH"?Math.ceil(lX/4):0,L=mX+Q+$.reduce((N,D)=>N+TX(D),0),q=$.reduce((N,D)=>N+D.value,0),z=L*J,W=0,B=[];for(let N of U){let D=c(N),b=J*D;z+=b,W+=N.value,B.push(N);let s=z+q;if(W<s)continue;let cX=W-s,_X=J*TX({address:j,value:0});if(cX>_X){let NX=_X+z,EX=W-(q+Math.ceil(NX));if(EX>Math.max(c({value:0})*J,bX(Z)))return{fee:Math.ceil(NX),inputs:B,outputs:$.concat({address:j,value:EX})}}return{fee:Math.ceil(z),inputs:B,outputs:$}}return{fee:Math.ceil(J*e({inputs:X,outputs:$}))}}var E2=F(()=>{X2()});var GX=F(()=>{T2();f2();E2();X2()});import{Address as o0,ZCASH_NETWORK as c0}from"@swapkit/utxo-signer";function $X(X){return X.replace(/(bchtest:|bitcoincash:)/,"")}function d(X){let $=$X(X);return tX($)&&eX($)==="mainnet"}function YX(X){try{if(X.startsWith("z"))return console.warn("Shielded Zcash addresses (z-addresses) are not supported. Use transparent addresses (t1/t3) only."),!1;let J=o0(c0).decode(X);return J.type==="pkh"||J.type==="sh"}catch{return!1}}var VX=F(()=>{GX()});import{secp256k1 as d0}from"@noble/curves/secp256k1.js";import{hex as JX}from"@scure/base";import{HDKey as A2}from"@scure/bip32";import{mnemonicToSeedSync as J2}from"@scure/bip39";import{AssetValue as hX,applyFeeMultiplier as P2,Chain as k,derivationPathToString as kX,FeeOption as K,NetworkDerivationPath as v2,SwapKitError as T,SwapKitNumber as r0,updateDerivationPath as n0,warnOnce as i0}from"@swapkit/helpers";import{Address as s0,BCHSigHash as Z2,CashAddrPrefix as a0,CashAddrType as t0,encodeCashAddr as e0,NETWORKS as qX,p2pkh as R2,p2wpkh as X1,RBF_SEQUENCE as $1,SigHash as w2,Transaction as $2,WIF as S2}from"@swapkit/utxo-signer";import{match as K2}from"ts-pattern";function j2({address:X,chain:$}){return K2($).with(k.BitcoinCash,()=>d(X)).with(k.Zcash,()=>YX(X)).otherwise(()=>{try{return s0(E($)).decode(X),!0}catch{return!1}})}function E(X){return K2(X).with(k.Bitcoin,()=>qX.bitcoin).with(k.BitcoinCash,()=>qX.bitcoinCash).with(k.Dash,()=>qX.dash).with(k.Dogecoin,()=>qX.dogecoin).with(k.Litecoin,()=>qX.litecoin).with(k.Zcash,()=>qX.zcash).exhaustive()}function J1({phrase:X,derivationPath:$,network:J,seed:Z}){let j=Z??J2(X),U=A2.fromMasterSeed(j,J.bip32).derive($);if(!U.privateKey)throw new T("toolbox_utxo_invalid_params",{error:"Could not derive private key from phrase"});return U.privateKey}function y2(X){return d0.getPublicKey(X,!0)}function fX({publicKey:X,chain:$,network:J}){if($===k.BitcoinCash){let Y=R2(X,J);if(!Y.hash)throw new T("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return e0({hash:Y.hash,prefix:a0.MAINNET,type:t0.P2PKH}).replace(/^bitcoincash:/,"")}let j=!IX.includes($)?X1(X,J):R2(X,J);if(!j.address)throw new T("toolbox_utxo_invalid_address",{error:"Could not derive address"});return j.address}function LX({phrase:X,derivationPath:$,chain:J,wif:Z,seed:j}){let Y=E(J);if(Z){let L=S2(Y).decode(Z),q=y2(L);return{privateKey:L,publicKey:q}}if(!X)throw new T("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let U=$||kX(v2[J]),G=J1({derivationPath:U,network:Y,phrase:X,seed:j}),Q=y2(G);return{privateKey:G,publicKey:Q}}function Z1(X,$){return S2(E($)).encode(X)}function j1({phrase:X,derivationPath:$,chain:J,seed:Z}){let j=$.split("/");if(j.length<4)throw new T("toolbox_utxo_invalid_params",{error:`Derivation path must have at least 4 levels (got ${j.length}): ${$}`});let Y=E(J),U=Z??J2(X),G=A2.fromMasterSeed(U,Y.bip32),Q=j.slice(0,4).join("/");return G.derive(Q)}function r({inputs:X,outputs:$,chain:J,tx:Z,sender:j,compiledMemo:Y,enableRBF:U=!1}){let G=E(J),Q=!IX.includes(J),L=U?$1:void 0,q=new Set;for(let z of X){let W=`${z.hash}:${z.index}`;if(q.has(W))throw new T("toolbox_utxo_invalid_params",{error:"Duplicate input detected"});q.add(W);let B=typeof z.hash==="string"?JX.decode(z.hash):z.hash;if(Q&&z.witnessUtxo)Z.addInput({index:z.index,sequence:L,txid:B,witnessUtxo:{amount:BigInt(z.witnessUtxo.value),script:z.witnessUtxo.script}});else if(z.txHex)Z.addInput({index:z.index,nonWitnessUtxo:JX.decode(z.txHex),sequence:L,txid:B,...J===k.BitcoinCash?{sighashType:Z2.ALL}:{}});else throw new T("toolbox_utxo_invalid_params",{error:"Input requires either witnessUtxo or txHex for non-segwit chains"})}for(let z of $){let W="address"in z&&z.address?z.address:j;if(J===k.BitcoinCash)W=l(W);if(z.script){if(Y)Z.addOutput({amount:0n,script:Y})}else Z.addOutputAddress(W,BigInt(z.value),G)}return{inputs:X,tx:Z}}async function zX(X){let $=await V(X).getSuggestedTxFee();return{[K.Average]:$,[K.Fast]:P2($,K.Fast),[K.Fastest]:P2($,K.Fastest)}}async function g2({assetValue:X,recipient:$,memo:J,sender:Z,fetchTxHex:j=!1}){let Y=X.chain,U=(await zX(Y))[K.Fastest],G=j||IX.includes(Y),Q=X.getBaseValue("number"),L=Math.ceil(Q+U*5000);return{inputs:await V(Y).getUtxos({address:Z,fetchTxHex:G,targetValue:L}),outputs:[{address:$,value:Q},...J?[{address:"",script:P(J),value:0}]:[]]}}async function m2({assetValue:X,recipient:$,memo:J,feeRate:Z,sender:j,fetchTxHex:Y=!1,enableRBF:U=!1}){let G=X.chain,Q=J?P(J):null,L=await g2({assetValue:X,fetchTxHex:Y,memo:J,recipient:$,sender:j}),{inputs:q,outputs:z}=v({...L,chain:G,feeRate:Z});if(!(q&&z))throw new T("toolbox_utxo_insufficient_balance",{assetValue:X,sender:j});let W=new $2({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!Q,version:1}),{inputs:B,tx:N}=r({chain:G,compiledMemo:Q,enableRBF:U,inputs:q,outputs:z,sender:j,tx:W});return{inputs:B,tx:N,utxos:L.inputs}}async function l2({assetValue:X,feeOptionKey:$=K.Fast,feeRate:J,memo:Z,sender:j,recipient:Y}){let U=X.chain,G=await g2({assetValue:X,memo:Z,recipient:Y,sender:j}),Q=J?Math.floor(J):(await zX(U))[$];return v({...G,chain:U,feeRate:Q})}function Q1(X){return async function({from:J,memo:Z,feeRate:j,feeOptionKey:Y=K.Fast,recipients:U=1}){let G=await V(X).getAddressData(J),Q=j?Math.ceil(j):(await zX(X))[Y],L=G?.utxo.map((D)=>({...D,hash:"",type:"P2PKH"})).filter((D)=>D.value>Math.max(bX(X),c(D)*Q));if(!L?.length)return hX.from({chain:X});let q=BigInt(L.reduce((D,b)=>D+b.value,0)),z=hX.from({chain:X,value:q}),W=typeof U==="number"?Array.from({length:U},()=>({address:J,value:0})):U;if(Z)W.push({address:J,script:P(Z),value:0});let B=e({inputs:L,outputs:W}),N=hX.from({chain:X,value:BigInt(B*Q)});return z.sub(N)}}function G1(X){return async function(J){let{fee:Z}=await l2(J);return hX.from({chain:X,value:r0.fromBigInt(BigInt(Z),8).getValue("string")})}}function Y1({chain:X,phrase:$,derivationPath:J,seed:Z}){let j=E(X),{privateKey:Y,publicKey:U}=LX({chain:X,derivationPath:J,phrase:$,seed:Z}),G=X===k.BitcoinCash?[Z2.ALL]:[w2.ALL];return{getAddress:()=>fX({chain:X,network:j,publicKey:U}),privateKey:Y,publicKey:U,signTransaction:(Q)=>{return Q.sign(Y,G),Q}}}function q1(X,$){return async function({memo:Z,recipient:j,feeOptionKey:Y,feeRate:U,assetValue:G,enableRBF:Q=!1}){let L=$?.getAddress();if(!($&&L))throw new T("toolbox_utxo_no_signer");if(!j)throw new T("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});i0({condition:Q&&!pX.includes(X),id:`rbf_not_supported_${X}`,warning:`RBF (Replace-by-Fee) is not reliably supported on ${X}. Transaction will be created without RBF signaling.`});let q=Q&&pX.includes(X),z=U||(await zX(X))[Y||K.Fast],{tx:W}=await m2({assetValue:G,enableRBF:q,feeRate:z,memo:Z,recipient:j,sender:L});return $.signTransaction(W),W.finalize(),V(X).broadcastTx(JX.encode(W.extract()))}}function Q2(X){return($)=>j2({address:$,chain:X})}function G2(X){let $=E(X);return function(Z){if(!Z)throw new T("toolbox_utxo_invalid_params",{error:"Keys must be provided"});return fX({chain:X,network:$,publicKey:Z.publicKey})}}function n({chain:X,...$}){let J="phrase"in $?$.phrase:void 0,Z="index"in $?$.index||0:0,j=J?J2(J):void 0,Y="derivationPath"in $&&$.derivationPath?$.derivationPath:n0(v2[X],{index:Z}),U=kX(Y),G=J?Y1({chain:X,derivationPath:U,phrase:J,seed:j}):void 0,Q="signer"in $?$.signer:void 0,L=J?LX({chain:X,derivationPath:U,phrase:J,seed:j}):void 0;function q(){if(G)return Promise.resolve(G.getAddress());if(Q)return Q.getAddress();return Promise.resolve(void 0)}function z(_){if(!J)return;let M=o({accountIndex:_,chain:X,derivationPath:Y});return j1({chain:X,derivationPath:kX(M),phrase:J,seed:j})}let W=z();function B(){if(!W)return;return W.publicExtendedKey}function N({accountIndex:_}={}){let M=_===void 0?W:z(_);if(!M)return;let C=o({accountIndex:_,chain:X,derivationPath:Y});return{accountIndex:a(C),path:kX(C),xpub:M.publicExtendedKey}}function D({accountIndex:_,index:M,change:C=!1}){let O=_===void 0?W:z(_);if(!O)return;let H=ZX({accountIndex:_,chain:X,change:C,derivationPath:Y,index:M}),R=E(X),w=O.deriveChild(Number(C)).deriveChild(M);if(!w.publicKey)throw new T("toolbox_utxo_invalid_params",{error:"Could not derive public key"});let y=fX({chain:X,network:R,publicKey:w.publicKey}),x=JX.encode(w.publicKey);return{accountIndex:a(H),address:y,change:C,index:M,path:kX(H),pubkey:x}}async function b(_){if(!pX.includes(X))return{reason:`RBF is not supported on ${X}`,supported:!1};let M=await V(X).getTransactionDetails(_);return{canReplace:M.isRBF&&!M.confirmed,confirmed:M.confirmed,enabled:M.isRBF,fee:M.fee,sequences:M.sequences,supported:!0}}async function s({txid:_,newFeeRate:M,recipient:C,memo:O}){if(!pX.includes(X))throw new T("toolbox_utxo_rbf_not_supported",{chain:X});let H=await V(X).getTransactionDetails(_);if(!H.isRBF)throw new T("toolbox_utxo_tx_not_replaceable",{txid:_});if(H.confirmed)throw new T("toolbox_utxo_tx_already_confirmed",{blockId:H.blockId,txid:_});let R=H.inputs.reduce((I,u)=>I+u.value,0),y=H.outputs.find((I)=>I.recipient===C)?.value||0;if(y===0)throw new T("toolbox_utxo_invalid_params",{error:"Could not determine send amount from original transaction"});let x=await Promise.all(H.inputs.map(async(I)=>{let u=await V(X).getRawTx(I.transaction_hash);return{hash:I.transaction_hash,index:I.index,txHex:u,value:I.value,witnessUtxo:void 0}})),PX=O?P(O):null,dX=e({feeRate:M,inputs:x.map((I)=>({...I,type:"P2WPKH"})),outputs:[{address:C,value:y}]}),m=Math.ceil(dX*M);if(m<=H.fee)throw new T("toolbox_utxo_rbf_fee_too_low",{newFee:m,originalFee:H.fee});let MX=m-H.fee,h=y-MX;if(h<=0)throw new T("toolbox_utxo_rbf_insufficient_change");let RX=new $2({allowLegacyWitnessUtxo:!0,version:1}),yX=[{address:C,value:h},...O?[{address:"",script:P(O),value:0}]:[]],AX=R-h-m,p=await q();if(AX>bX(X)&&p)yX.push({address:p,value:AX});return r({chain:X,compiledMemo:PX,inputs:x,outputs:yX,sender:p||C,tx:RX}),{feeDelta:MX,newFee:m,originalFee:H.fee,tx:RX}}async function cX({txid:_,newFeeRate:M,recipient:C,memo:O}){if(!G)throw new T("toolbox_utxo_no_signer");let{tx:H,originalFee:R,newFee:w}=await s({memo:O,newFeeRate:M,recipient:C,txid:_});G.signTransaction(H),H.finalize();let y=await V(X).broadcastTx(JX.encode(H.extract()));return{newFee:w,originalFee:R,txid:y}}function _X({accountIndex:_,index:M,change:C=!1}){A("index",M);let O=_===void 0?W:z(_);if(!O)return;return O.deriveChild(Number(C)).deriveChild(M).privateKey||void 0}function NX({tx:_,inputDerivations:M}){if(!W)throw new T("toolbox_utxo_no_signer");let C=X===k.BitcoinCash?[Z2.ALL]:[w2.ALL];for(let O=0;O<M.length;O++){let H=M[O];if(!H)continue;let{derivationIndex:R,isChange:w}=H,y=_X({change:w,index:R});if(!y)throw new T("toolbox_utxo_invalid_params",{error:`Could not derive private key for input ${O} at index ${R}`});_.signIdx(y,O,C)}return _}async function EX({utxos:_,recipient:M,assetValue:C,memo:O,feeRate:H,feeOptionKey:R,changeAddress:w}){if(!W)throw new T("toolbox_utxo_no_signer");let y=H||(await zX(X))[R||K.Fast],x=O?P(O):null,PX=[{address:M,value:C.getBaseValue("number")}];if(x)PX.push({address:"",script:x,value:0});let dX=_.map(({hash:p,index:I,value:u,txHex:Z0,witnessUtxo:rX})=>({hash:p,index:I,txHex:Z0,value:u,witnessUtxo:rX?{script:rX.script,value:rX.value}:void 0})),{inputs:m,outputs:MX}=v({chain:X,feeRate:y,inputs:dX,outputs:PX});if(!(m&&MX))throw new T("toolbox_utxo_insufficient_balance",{assetValue:C,sender:"multiple addresses"});let h=new $2({allowLegacyWitnessUtxo:!0,version:1}),RX=_[0]?.address,yX=w||await q()||RX||M;r({chain:X,compiledMemo:x,inputs:m,outputs:MX,sender:yX,tx:h});let AX=m.map((p)=>{let I=_.find((u)=>u.hash===p.hash&&u.index===p.index);return I?{derivationIndex:I.derivationIndex,isChange:I.isChange}:{derivationIndex:0,isChange:!1}});return NX({inputDerivations:AX,tx:h}),h.finalize(),V(X).broadcastTx(JX.encode(h.extract()))}function J0({address:_,gapLimit:M=20}){if(!W)return;for(let C=0;C<M;C++){let O=D({change:!1,index:C}),H=D({change:!0,index:C}),R=O?.address===_?!1:H?.address===_;if(O?.address===_||H?.address===_)return{change:R,index:C}}return}return{accumulative:v,broadcastTx:(_)=>V(X).broadcastTx(_),bumpFee:cX,calculateTxSize:e,createKeysForPath:(_)=>LX({..._,chain:X}),createReplacementTransaction:s,createTransaction:m2,deriveAddressAtIndex:D,derivePrivateKeyAtIndex:_X,estimateMaxSendableAmount:Q1(X),estimateTransactionFee:G1(X),getAddress:q,getAddressFromKeys:G2(X),getBalance:N2(X),getExtendedPublicKey:B,getExtendedPublicKeyInfo:N,getFeeRates:()=>zX(X),getInputsOutputsFee:l2,getNetworkForChain:()=>E(X),getPrivateKeyFromMnemonic:(_)=>Z1(LX({..._,chain:X}).privateKey,X),isRBFEnabled:b,keys:L,resolveDerivationIndex:J0,signAndBroadcastTransaction:async(_)=>{if(!G)throw new T("toolbox_utxo_no_signer");return G.signTransaction(_),_.finalize(),await V(X).broadcastTx(JX.encode(_.extract()))},signTransactionWithMultipleKeys:NX,transfer:q1(X,G),transferFromMultipleAddresses:EX,validateAddress:Q2(X)}}var IX,pX;var UX=F(()=>{iX();DX();GX();VX();IX=[k.Dash,k.Dogecoin,k.Zcash,k.BitcoinCash],pX=[k.Bitcoin]});import{hex as L1}from"@scure/base";import{Chain as z1,derivationPathToString as U1,FeeOption as W1,NetworkDerivationPath as B1,SwapKitError as i,updateDerivationPath as _1}from"@swapkit/helpers";import{BCHSigHash as N1,CashAddrPrefix as x2,CashAddrType as h2,encodeCashAddr as p2,NETWORKS as M1,p2pkh as u2,Transaction as o2}from"@swapkit/utxo-signer";function FX(X){return $X(HX(X))}function D1(X){let $=E(g);function J(j){return j.sign(X.privateKey,[N1.ALL]),j}function Z(){let j=u2(X.publicKey,$);if(!j.hash)throw new i("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});let Y=p2({hash:j.hash,prefix:x2.MAINNET,type:h2.P2PKH});return Promise.resolve(Y.replace(/^bitcoincash:/,""))}return{getAddress:Z,signTransaction:J}}function Y2(X){let $="phrase"in X?X.phrase:void 0,J="index"in X?X.index||0:0,Z=U1("derivationPath"in X&&X.derivationPath?X.derivationPath:_1(B1[g],{index:J})),j=$?LX({chain:g,derivationPath:Z,phrase:$}):void 0,Y=j?D1(j):("signer"in X)?X.signer:void 0;function U(){return Promise.resolve(Y?.getAddress())}let{getBalance:G,getFeeRates:Q,broadcastTx:L,...q}=n({chain:g});function z(W,B=!0){return G($X(HX(W)))}return{...q,broadcastTx:L,buildTx:H1,createTransaction:c2,getAddress:U,getAddressFromKeys:O1,getBalance:z,getFeeRates:Q,stripPrefix:$X,stripToCashAddress:FX,transfer:C1({broadcastTx:L,getFeeRates:Q,signer:Y}),validateAddress:d}}async function c2({assetValue:X,recipient:$,memo:J,feeRate:Z,sender:j}){if(!d($))throw new i("toolbox_utxo_invalid_address",{address:$});let Y=Math.ceil(X.getBaseValue("number")+Z*7500),U=await V(g).getUtxos({address:FX(j),fetchTxHex:!0,targetValue:Y}),G=J?P(J):null,Q=[],L=l($);if(Q.push({address:L,value:X.getBaseValue("number")}),G)Q.push({script:G,value:0});let{inputs:q,outputs:z}=v({chain:g,feeRate:Z,inputs:U,outputs:Q});if(!(q&&z))throw new i("toolbox_utxo_insufficient_balance",{assetValue:X,sender:j});let W=new o2({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!G,version:1}),B=l(j),{inputs:N,tx:D}=r({chain:g,compiledMemo:G,inputs:q,outputs:z.map((b)=>("address"in b)&&b.address?{...b,address:l(b.address)}:b),sender:B,tx:W});return{inputs:N,tx:D,utxos:q}}function C1({broadcastTx:X,getFeeRates:$,signer:J}){return async function({recipient:j,assetValue:Y,feeOptionKey:U=W1.Fast,...G}){let Q=await J?.getAddress();if(!(J&&Q))throw new i("toolbox_utxo_no_signer");if(!j)throw new i("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let L=G.feeRate||(await $())[U],{tx:q}=await c2({...G,assetValue:Y,feeRate:L,recipient:j,sender:Q}),z=await J.signTransaction(q);return z.finalize(),X(L1.encode(z.extract()))}}async function H1({assetValue:X,recipient:$,memo:J,feeRate:Z,sender:j}){let Y=HX($);if(!d(Y))throw new i("toolbox_utxo_invalid_address",{address:Y});let U=Math.ceil(X.getBaseValue("number")+Z*7500),G=await V(g).getUtxos({address:FX(j),fetchTxHex:!0,targetValue:U}),Q=Number(Z.toFixed(0)),L=J?P(J):null,q=[];if(q.push({address:l($),value:X.getBaseValue("number")}),L)q.push({script:L,value:0});let{inputs:z,outputs:W}=v({chain:g,feeRate:Q,inputs:G,outputs:q});if(!(z&&W))throw new i("toolbox_utxo_insufficient_balance",{assetValue:X,sender:j});let B=new o2({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!L,version:1}),{inputs:N,tx:D}=r({chain:g,compiledMemo:L,inputs:z,outputs:W,sender:l(j),tx:B});return{inputs:N,tx:D,utxos:G}}function O1(X){let $=M1.bitcoinCash,J=u2(X.publicKey,$);if(!J.hash)throw new i("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return p2({hash:J.hash,prefix:x2.MAINNET,type:h2.P2PKH}).replace(/^bitcoincash:/,"")}var g;var uX=F(()=>{GX();UX();VX();g=z1.BitcoinCash});import{createBase58check as T1,hex as b1}from"@scure/base";import{HDKey as n2}from"@scure/bip32";import{mnemonicToSeedSync as i2}from"@scure/bip39";import{Chain as oX,derivationPathToString as V1,FeeOption as k1,NetworkDerivationPath as I1,SKConfig as s2,SwapKitError as WX,updateDerivationPath as f1}from"@swapkit/helpers";import{Address as F1,createZcashTransaction as E1,OutScript as P1,PCZT as R1,utils as a2,WIF as y1,ZCASH_NETWORK as A1,ZCASH_TEST_NETWORK as v1,ZcashConsensusBranchId as w1,ZcashSigHash as d2,ZcashVersionGroupId as S1}from"@swapkit/utxo-signer";import{match as K1,P as q2}from"ts-pattern";function t2(){let{isStagenet:X}=s2.get("envs");return X?v1:A1}function m1(X){return g1.encode(X)}function l1({phrase:X,derivationPath:$}){let J=i2(X),j=n2.fromMasterSeed(J).derive($);if(!j.privateKey||!j.publicKey)throw new WX("toolbox_utxo_invalid_params");let{privateKey:Y,publicKey:U}=j,G=a2.hash160(U),{isStagenet:Q}=s2.get("envs"),L=Q?new Uint8Array([29,37]):new Uint8Array([28,184]),q=new Uint8Array(L.length+G.length);q.set(L,0),q.set(G,L.length);let z=m1(q);return{getAddress:()=>Promise.resolve(z),signTransaction:(W)=>{if(W instanceof R1)return W.signAllInputs(Y,U,d2.ALL),W.finalizeAllInputs(),Promise.resolve(W.extract());return W.signAllInputs(Y,U,d2.ALL),Promise.resolve(W)}}}function x1({inputs:X,outputs:$,tx:J,sender:Z,compiledMemo:j}){let Y=t2();for(let U of X){let G=F1(Y).decode(Z),Q=P1.encode(G);J.addInput({index:U.index,script:Q,sequence:4294967295,txid:b1.decode(U.hash),value:BigInt(U.value)})}for(let U of $){let G="address"in U&&U.address?U.address:Z,Q=U.script;if(Q&&!j)continue;if(Q&&j)J.addOutput({amount:0n,script:j});else J.addOutputAddress(G,BigInt(U.value),Y)}return{inputs:X,tx:J}}async function r2(X){let{assetValue:$,recipient:J,memo:Z,feeRate:j,sender:Y,fetchTxHex:U}=X,G=Z?P(Z):null,Q=await V(oX.Zcash).getUtxos({address:Y,fetchTxHex:U!==!1}),L=[{address:J,value:Number($.getBaseValue("string"))},...G?[{script:G,value:0}]:[]],{inputs:q,outputs:z}=v({chain:oX.Zcash,changeAddress:Y,feeRate:j,inputs:Q,outputs:L});if(!(q&&z))throw new WX("toolbox_utxo_insufficient_balance",{assetValue:$,sender:Y});let W=E1({consensusBranchId:w1.NU6_1,expiryHeight:0,lockTime:0,version:4,versionGroupId:S1.SAPLING}),{tx:B,inputs:N}=x1({compiledMemo:G,inputs:q,outputs:z,sender:Y,tx:W});return{inputs:N,outputs:z,tx:B}}function L2(X){let $=K1(X).with({signer:q2.not(q2.nullish)},({signer:Q})=>Q).with({phrase:q2.string},({phrase:Q,derivationPath:L,index:q=0})=>{let z=L||I1[oX.Zcash]||[44,133,0,0,0],W=f1(z,{index:q}),B=V1(W);return l1({derivationPath:B,phrase:Q})}).otherwise(()=>{return}),J=n({chain:oX.Zcash,signer:$});async function Z({recipient:Q,assetValue:L,feeOptionKey:q=k1.Fast,...z}){let W=await $?.getAddress();if(!($&&W))throw new WX("toolbox_utxo_no_signer");let B=z.feeRate||(await J.getFeeRates())[q],{tx:N}=await r2({...z,assetValue:L,feeRate:B,recipient:Q,sender:W}),b=(await $.signTransaction(N)).toHex();return J.broadcastTx(b)}function j({phrase:Q,derivationPath:L="m/44'/133'/0'/0/0"}){let q=i2(Q),W=n2.fromMasterSeed(q).derive(L);if(!W.privateKey||!W.publicKey)throw new WX("toolbox_utxo_invalid_params");return{privateKey:W.privateKey,publicKey:W.publicKey}}function Y({phrase:Q,derivationPath:L="m/44'/133'/0'/0/0"}){let q=j({derivationPath:L,phrase:Q}),z=t2();return y1(z).encode(q.privateKey)}function U(Q){return async function(q){if(!Q)throw new WX("toolbox_utxo_no_signer");return await Q.signTransaction(q)}}function G(Q){return async function(q){if(!Q)throw new WX("toolbox_utxo_no_signer");let z=await Q.signTransaction(q);return J.broadcastTx(z.toHex())}}return{...J,createKeysForPath:j,createTransaction:r2,getPrivateKeyFromMnemonic:Y,signAndBroadcastTransaction:G($),signTransaction:U($),transfer:Z,validateAddress:YX}}var g1;var z2=F(()=>{GX();UX();VX();g1=T1(a2.sha256)});import{hex as h1}from"@scure/base";import{HDKey as p1}from"@scure/bip32";import{derivationPathToString as u1}from"@swapkit/helpers";function e2({xpub:X,chain:$,count:J,startIndex:Z=0,accountIndex:j}){if(A("count",J),J<1)throw RangeError("count must be at least 1");A("startIndex",Z);let Y=E($),U=p1.fromExtendedKey(X,Y.bip32),G=o({accountIndex:j,chain:$}),Q=a(G),L=[];for(let q of[!1,!0]){let z=U.deriveChild(Number(q));for(let W=0;W<J;W++){let B=Z+W,N=z.deriveChild(B);if(!N.publicKey)continue;let D=ZX({accountIndex:j,chain:$,change:q,index:B});L.push({accountIndex:Q,address:fX({chain:$,network:Y,publicKey:N.publicKey}),change:q,index:B,path:u1(D),pubkey:h1.encode(N.publicKey)})}}return L}var X0=F(()=>{DX();UX()});import{Chain as BX,SwapKitError as o1}from"@swapkit/helpers";function c1(X,$){switch(X){case BX.BitcoinCash:return Y2($||{});case BX.Zcash:return L2($);case BX.Bitcoin:case BX.Dogecoin:case BX.Litecoin:case BX.Dash:return n({chain:X,...$});default:throw new o1("toolbox_utxo_not_supported",{chain:X})}}var $0=F(()=>{uX();UX();z2();DX();X0();uX();VX()});var d1={};Y0(d1,{validateZcashAddress:()=>YX,validateUtxoAddress:()=>j2,validateBchAddress:()=>d,toLegacyAddress:()=>l,toCashAddress:()=>HX,stripToCashAddress:()=>FX,stripPrefix:()=>$X,nonSegwitChains:()=>IX,isValidAddress:()=>tX,getUtxoToolbox:()=>c1,getUtxoNetwork:()=>I0,getUtxoApi:()=>V,getUTXOAddressValidator:()=>Q2,getUTXOAddressPath:()=>ZX,getUTXOAccountPath:()=>o,getUTXOAccountIndexFromPath:()=>a,getScriptTypeForAddress:()=>QX,getOutputSize:()=>TX,getNetworkForChain:()=>E,getInputSize:()=>c,getDustThreshold:()=>bX,detectAddressNetwork:()=>eX,deriveAddressesFromXpub:()=>e2,createZcashToolbox:()=>L2,createUTXOToolbox:()=>n,createHDWalletHelpers:()=>W2,createCustomUtxoApi:()=>k0,createBCHToolbox:()=>Y2,compileMemo:()=>P,calculateTxSize:()=>e,assertDerivationIndex:()=>A,addressFromKeysGetter:()=>G2,addInputsAndOutputs:()=>r,accumulative:()=>v,UtxoNetwork:()=>aX,UTXOScriptType:()=>xX,TX_OVERHEAD:()=>mX,SEGWIT_MARKER_FLAG_WEIGHT:()=>lX,OutputSizes:()=>OX,OP_RETURN_OVERHEAD:()=>F2,MIN_TX_FEE:()=>x0,InputSizes:()=>gX});var r1=F(()=>{UX();DX();GX();$0();uX();z2()});r1();export{YX as validateZcashAddress,j2 as validateUtxoAddress,d as validateBchAddress,l as toLegacyAddress,HX as toCashAddress,FX as stripToCashAddress,$X as stripPrefix,IX as nonSegwitChains,tX as isValidAddress,c1 as getUtxoToolbox,I0 as getUtxoNetwork,V as getUtxoApi,Q2 as getUTXOAddressValidator,ZX as getUTXOAddressPath,o as getUTXOAccountPath,a as getUTXOAccountIndexFromPath,QX as getScriptTypeForAddress,TX as getOutputSize,E as getNetworkForChain,c as getInputSize,bX as getDustThreshold,eX as detectAddressNetwork,e2 as deriveAddressesFromXpub,L2 as createZcashToolbox,n as createUTXOToolbox,W2 as createHDWalletHelpers,k0 as createCustomUtxoApi,Y2 as createBCHToolbox,P as compileMemo,e as calculateTxSize,A as assertDerivationIndex,G2 as addressFromKeysGetter,r as addInputsAndOutputs,v as accumulative,aX as UtxoNetwork,xX as UTXOScriptType,mX as TX_OVERHEAD,lX as SEGWIT_MARKER_FLAG_WEIGHT,OX as OutputSizes,F2 as OP_RETURN_OVERHEAD,x0 as MIN_TX_FEE,gX as InputSizes};
@@ -15,7 +15,8 @@ import type { getTONToolbox } from "./ton";
15
15
  import type { getTronToolbox } from "./tron";
16
16
  import type { getUtxoToolbox } from "./utxo";
17
17
  export * from "./types";
18
- export type { AggregatedBalanceResult, DerivedAddress, ExtendedPublicKeyResult, UTXOForMultiAddressTransfer, UTXOHDWalletMethods, UTXOWithDerivation, } from "./utxo/types";
18
+ export type { DeriveAddressesFromXpubParams } from "./utxo/helpers/xpubDerivation";
19
+ export type { AggregatedBalanceResult, DeriveAddressesParams, DeriveAddressParams, DerivedAddress, ExtendedPublicKeyResult, HDWalletAccountParams, UTXOForMultiAddressTransfer, UTXOHDWalletMethods, UTXOWithDerivation, } from "./utxo/types";
19
20
  export declare function getAddressValidator(): Promise<({ address, chain }: {
20
21
  address: string;
21
22
  chain: Chain;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,8 @@
1
- import type { AssetValue, UTXOChain } from "@swapkit/helpers";
2
- import type { AggregatedBalanceResult, DerivedAddress, UTXOForMultiAddressTransfer, UTXOType } from "./types";
1
+ import { type AssetValue, type DerivationPathArray, type UTXOChain } from "@swapkit/helpers";
2
+ import type { AggregatedBalanceResult, DeriveAddressParams, DerivedAddress, HDWalletAccountParams, UTXOForMultiAddressTransfer, UTXOType } from "./types";
3
3
  type GetBalanceFn = (address: string) => Promise<AssetValue[]>;
4
4
  type GetUtxosFn = (address: string) => Promise<UTXOType[]>;
5
- type DeriveAddressFn = (params: {
6
- index: number;
5
+ type DeriveAddressFn = (params: DeriveAddressParams & {
7
6
  change: boolean;
8
7
  }) => DerivedAddress | undefined | Promise<DerivedAddress | undefined>;
9
8
  export type CreateHDWalletHelpersParams = {
@@ -12,6 +11,18 @@ export type CreateHDWalletHelpersParams = {
12
11
  getBalance: GetBalanceFn;
13
12
  getUtxos: GetUtxosFn;
14
13
  };
14
+ export declare function assertDerivationIndex(name: string, value: number): void;
15
+ export declare function getUTXOAccountPath({ accountIndex, chain, derivationPath, }: HDWalletAccountParams & {
16
+ chain: UTXOChain;
17
+ derivationPath?: DerivationPathArray;
18
+ }): [44, 118, 0, 0, 0] | [44, 931, 0, 0, 0] | [number, number, number, number, number] | [44, 637, 0, 0, 0] | [44, 60, 0, 0, 0] | [44, 397, 0, 0, 0] | [0, 0, 0, 0, 0] | [44, 144, 0, 0, 0] | [44, 501, 0, 0, 0] | [44, 607, 0, 0, 0] | [44, 195, 0, 0, 0] | [44, 148, 0, 0, 0] | [44, 784, 0, 0, 0] | [1852, 1815, 0, 0, 0] | [44, 9004, 0, 0, 0] | [number, number, number, number, (number | undefined)?] | [44, 145, 0, 0, 0] | [84, 2, 0, 0, 0] | [44, 3, 0, 0, 0] | [44, 5, 0, 0, 0] | [44, 133, 0, 0, 0];
19
+ export declare function getUTXOAddressPath({ accountIndex, change, chain, derivationPath, index, }: HDWalletAccountParams & {
20
+ change?: boolean;
21
+ chain: UTXOChain;
22
+ derivationPath?: DerivationPathArray;
23
+ index: number;
24
+ }): DerivationPathArray;
25
+ export declare function getUTXOAccountIndexFromPath(path: DerivationPathArray): number;
15
26
  /**
16
27
  * Creates HD wallet helper methods that work with any wallet implementation.
17
28
  * Wallet-specific logic (address derivation) is provided via callbacks.
@@ -21,7 +32,7 @@ export declare function createHDWalletHelpers({ deriveAddress, getBalance, getUt
21
32
  count: number;
22
33
  startIndex?: number;
23
34
  change?: boolean;
24
- }) => Promise<DerivedAddress[]>;
35
+ } & HDWalletAccountParams) => Promise<DerivedAddress[]>;
25
36
  getAggregatedBalance: (gapLimit?: number) => Promise<AggregatedBalanceResult>;
26
37
  getAggregatedUtxos: (gapLimit?: number) => Promise<UTXOForMultiAddressTransfer[]>;
27
38
  scanForAddresses: (params?: {
@@ -1 +1 @@
1
- {"version":3,"file":"hdWallet.d.ts","sourceRoot":"","sources":["../../../src/utxo/hdWallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE9D,OAAO,KAAK,EAAE,uBAAuB,EAAE,cAAc,EAAE,2BAA2B,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE9G,KAAK,YAAY,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;AAC/D,KAAK,UAAU,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AAE3D,KAAK,eAAe,GAAG,CAAC,MAAM,EAAE;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;CACjB,KAAK,cAAc,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;AAEvE,MAAM,MAAM,2BAA2B,GAAG;IACxC,KAAK,EAAE,SAAS,CAAC;IACjB,aAAa,EAAE,eAAe,CAAC;IAC/B,UAAU,EAAE,YAAY,CAAC;IACzB,QAAQ,EAAE,UAAU,CAAC;CACtB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,2BAA2B;8BACjE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE;iDAsC3C,OAAO,CAAC,uBAAuB,CAAC;+CAoBlC,OAAO,CAAC,2BAA2B,EAAE,CAAC;gCA9C/C;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE;EAqEjF"}
1
+ {"version":3,"file":"hdWallet.d.ts","sourceRoot":"","sources":["../../../src/utxo/hdWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,mBAAmB,EAAyB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEpH,OAAO,KAAK,EACV,uBAAuB,EACvB,mBAAmB,EACnB,cAAc,EACd,qBAAqB,EACrB,2BAA2B,EAC3B,QAAQ,EACT,MAAM,SAAS,CAAC;AAEjB,KAAK,YAAY,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;AAC/D,KAAK,UAAU,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AAE3D,KAAK,eAAe,GAAG,CACrB,MAAM,EAAE,mBAAmB,GAAG;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,KAC9C,cAAc,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;AAEtE,MAAM,MAAM,2BAA2B,GAAG;IACxC,KAAK,EAAE,SAAS,CAAC;IACjB,aAAa,EAAE,eAAe,CAAC;IAC/B,UAAU,EAAE,YAAY,CAAC;IACzB,QAAQ,EAAE,UAAU,CAAC;CACtB,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAIhE;AAED,wBAAgB,kBAAkB,CAAC,EACjC,YAAY,EACZ,KAAK,EACL,cAAc,GACf,EAAE,qBAAqB,GAAG;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,cAAc,CAAC,EAAE,mBAAmB,CAAA;CAAE,+eAUpF;AAED,wBAAgB,kBAAkB,CAAC,EACjC,YAAY,EACZ,MAAc,EACd,KAAK,EACL,cAAc,EACd,KAAK,GACN,EAAE,qBAAqB,GAAG;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC;CACf,GAOiB,mBAAmB,CACpC;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,mBAAmB,UAEpE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,2BAA2B;8BAE9F;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,qBAAqB;iDA2CtC,OAAO,CAAC,uBAAuB,CAAC;+CAoBlC,OAAO,CAAC,2BAA2B,EAAE,CAAC;gCA9C/C;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE;EAqEjF"}
@@ -0,0 +1,10 @@
1
+ import { type UTXOChain } from "@swapkit/helpers";
2
+ import type { DerivedAddress, HDWalletAccountParams } from "../types";
3
+ export type DeriveAddressesFromXpubParams = HDWalletAccountParams & {
4
+ xpub: string;
5
+ chain: UTXOChain;
6
+ count: number;
7
+ startIndex?: number;
8
+ };
9
+ export declare function deriveAddressesFromXpub({ xpub, chain, count, startIndex, accountIndex, }: DeriveAddressesFromXpubParams): DerivedAddress[];
10
+ //# sourceMappingURL=xpubDerivation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xpubDerivation.d.ts","sourceRoot":"","sources":["../../../../src/utxo/helpers/xpubDerivation.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0B,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAS1E,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEtE,MAAM,MAAM,6BAA6B,GAAG,qBAAqB,GAAG;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,EACtC,IAAI,EACJ,KAAK,EACL,KAAK,EACL,UAAc,EACd,YAAY,GACb,EAAE,6BAA6B,GAAG,cAAc,EAAE,CAmClD"}
@@ -41,13 +41,15 @@ export declare function createBCHToolbox<T extends typeof Chain.BitcoinCash>(too
41
41
  publicKey: Uint8Array<ArrayBufferLike>;
42
42
  };
43
43
  createReplacementTransaction: ({ txid, newFeeRate, recipient, memo, }: import("..").RBFTransactionParams) => Promise<import("./utxo").ReplacementTransactionResult>;
44
- deriveAddressAtIndex: ({ index, change }: import("..").DeriveAddressParams) => {
44
+ deriveAddressAtIndex: ({ accountIndex, index, change }: import("..").DeriveAddressParams) => {
45
+ accountIndex: number;
45
46
  address: string;
46
47
  change: boolean;
47
48
  index: number;
49
+ path: string;
48
50
  pubkey: string;
49
51
  } | undefined;
50
- derivePrivateKeyAtIndex: ({ index, change }: import("..").DeriveAddressParams) => Uint8Array<ArrayBufferLike> | undefined;
52
+ derivePrivateKeyAtIndex: ({ accountIndex, index, change }: import("..").DeriveAddressParams) => Uint8Array<ArrayBufferLike> | undefined;
51
53
  estimateMaxSendableAmount: ({ from, memo, feeRate, feeOptionKey, recipients, }: {
52
54
  from: string;
53
55
  memo?: string;
@@ -65,6 +67,13 @@ export declare function createBCHToolbox<T extends typeof Chain.BitcoinCash>(too
65
67
  fetchTxHex?: boolean;
66
68
  }) => Promise<import("@swapkit/helpers").AssetValue>;
67
69
  getExtendedPublicKey: () => string | undefined;
70
+ getExtendedPublicKeyInfo: ({ accountIndex }?: {
71
+ accountIndex?: number;
72
+ }) => {
73
+ accountIndex: number;
74
+ path: string;
75
+ xpub: string;
76
+ } | undefined;
68
77
  getInputsOutputsFee: ({ assetValue, feeOptionKey, feeRate, memo, sender, recipient, }: Omit<UTXOBuildTxParams, "feeRate"> & {
69
78
  feeOptionKey?: FeeOption;
70
79
  feeRate?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"bitcoinCash.d.ts","sourceRoot":"","sources":["../../../../src/utxo/toolbox/bitcoinCash.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EAEL,KAAK,mBAAmB,EAExB,SAAS,EAIV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAOL,WAAW,EACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAA2D,MAAM,YAAY,CAAC;AACnG,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC9F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAI/D,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,UAEjD;AA6BD,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,OAAO,KAAK,CAAC,WAAW,EACjE,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,mBAAmB,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;0BAsB5E,MAAM;;;;;;;;iEA4EtC,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;YA6EkwE,CAAC;eAAqB,CAAC;oBAA0B,CAAC;kBAA2B,CAAC;;;;;;YAAowC,CAAC;oBAA0B,CAAC;eAAwB,CAAC;kBAAwB,CAAC;;;;oBAA/+D,CAAC;eAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAvI/tD;AAED,iBAAe,iBAAiB,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,iBAAiB;;;;;;;;;;;;;;GAwCnG;AAiCD,iBAAe,OAAO,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,iBAAiB;YA2CvD,QAAQ,EAAE;;;;;;;;;;;;;GAC5C;AAED,iBAAS,kBAAkB,CAAC,IAAI,EAAE;IAAE,SAAS,EAAE,UAAU,CAAA;CAAE,UAa1D"}
1
+ {"version":3,"file":"bitcoinCash.d.ts","sourceRoot":"","sources":["../../../../src/utxo/toolbox/bitcoinCash.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EAEL,KAAK,mBAAmB,EAExB,SAAS,EAIV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAOL,WAAW,EACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAA2D,MAAM,YAAY,CAAC;AACnG,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC9F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAI/D,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,UAEjD;AA6BD,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,OAAO,KAAK,CAAC,WAAW,EACjE,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,mBAAmB,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;0BAsB5E,MAAM;;;;;;;;iEA4EtC,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA6E44E,CAAC;eAAqB,CAAC;oBAA0B,CAAC;kBAA2B,CAAC;;;;;;YAAowC,CAAC;oBAA0B,CAAC;eAAwB,CAAC;kBAAwB,CAAC;;;;;;;;;;;oBAA/+D,CAAC;eAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAvIz2D;AAED,iBAAe,iBAAiB,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,iBAAiB;;;;;;;;;;;;;;GAwCnG;AAiCD,iBAAe,OAAO,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,iBAAiB;YA2CvD,QAAQ,EAAE;;;;;;;;;;;;;GAC5C;AAED,iBAAS,kBAAkB,CAAC,IAAI,EAAE;IAAE,SAAS,EAAE,UAAU,CAAA;CAAE,UAa1D"}
@@ -22,7 +22,8 @@ export declare function getUtxoToolbox<T extends keyof UTXOToolboxes>(chain: T,
22
22
  derivationPath?: DerivationPathArray;
23
23
  index?: number;
24
24
  }): UTXOToolboxes[T];
25
- export { type CreateHDWalletHelpersParams, createHDWalletHelpers } from "../hdWallet";
25
+ export { assertDerivationIndex, type CreateHDWalletHelpersParams, createHDWalletHelpers, getUTXOAccountIndexFromPath, getUTXOAccountPath, getUTXOAddressPath, } from "../hdWallet";
26
+ export { type DeriveAddressesFromXpubParams, deriveAddressesFromXpub } from "../helpers/xpubDerivation";
26
27
  export { stripToCashAddress } from "./bitcoinCash";
27
28
  export * from "./params";
28
29
  export { stripPrefix, validateBchAddress, validateZcashAddress } from "./validators";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utxo/toolbox/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,mBAAmB,EAAgB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACjG,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AACtD,KAAK,iBAAiB,GAAG,UAAU,CACjC,OAAO,iBAAiB,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,KAAK,CAAC,WAAW,GAAG,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAC5F,CAAC;AACF,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE1D,MAAM,MAAM,aAAa,GAAG;IAC1B,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC;IAChC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC;IACnC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IACpC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IACpC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC;IAChC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;KACvB,GAAG,IAAI,MAAM,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC;CACjD,CAAC;AAEF,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,aAAa,EAC1D,KAAK,EAAE,CAAC,EACR,MAAM,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,mBAAmB,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACxG,aAAa,CAAC,CAAC,CAAC,CA0BlB;AAED,OAAO,EAAE,KAAK,2BAA2B,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utxo/toolbox/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,mBAAmB,EAAgB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACjG,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AACtD,KAAK,iBAAiB,GAAG,UAAU,CACjC,OAAO,iBAAiB,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,KAAK,CAAC,WAAW,GAAG,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAC5F,CAAC;AACF,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE1D,MAAM,MAAM,aAAa,GAAG;IAC1B,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC;IAChC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC;IACnC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IACpC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IACpC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC;IAChC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;KACvB,GAAG,IAAI,MAAM,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC;CACjD,CAAC;AAEF,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,aAAa,EAC1D,KAAK,EAAE,CAAC,EACR,MAAM,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,mBAAmB,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACxG,aAAa,CAAC,CAAC,CAAC,CA0BlB;AAED,OAAO,EACL,qBAAqB,EACrB,KAAK,2BAA2B,EAChC,qBAAqB,EACrB,2BAA2B,EAC3B,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,6BAA6B,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACxG,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC"}
@@ -10,6 +10,11 @@ export declare function validateUtxoAddress({ address, chain }: {
10
10
  chain: UTXOChain;
11
11
  }): boolean;
12
12
  export declare function getNetworkForChain(chain: UTXOChain): BTCNetwork;
13
+ export declare function getAddressFromPublicKey({ publicKey, chain, network, }: {
14
+ publicKey: Uint8Array;
15
+ chain: UTXOChain;
16
+ network: BTCNetwork;
17
+ }): string;
13
18
  export declare function createKeysForPath({ phrase, derivationPath, chain, wif, seed, }: {
14
19
  phrase?: string;
15
20
  derivationPath?: string;
@@ -120,13 +125,15 @@ export declare function createUTXOToolbox<T extends UTXOChain>({ chain, ...toolb
120
125
  };
121
126
  createReplacementTransaction: ({ txid, newFeeRate, recipient, memo, }: RBFTransactionParams) => Promise<ReplacementTransactionResult>;
122
127
  createTransaction: typeof createTransaction;
123
- deriveAddressAtIndex: ({ index, change }: DeriveAddressParams) => {
128
+ deriveAddressAtIndex: ({ accountIndex, index, change }: DeriveAddressParams) => {
129
+ accountIndex: number;
124
130
  address: string;
125
131
  change: boolean;
126
132
  index: number;
133
+ path: string;
127
134
  pubkey: string;
128
135
  } | undefined;
129
- derivePrivateKeyAtIndex: ({ index, change }: DeriveAddressParams) => Uint8Array<ArrayBufferLike> | undefined;
136
+ derivePrivateKeyAtIndex: ({ accountIndex, index, change }: DeriveAddressParams) => Uint8Array<ArrayBufferLike> | undefined;
130
137
  estimateMaxSendableAmount: ({ from, memo, feeRate, feeOptionKey, recipients, }: {
131
138
  from: string;
132
139
  memo?: string;
@@ -149,6 +156,13 @@ export declare function createUTXOToolbox<T extends UTXOChain>({ chain, ...toolb
149
156
  }) => string;
150
157
  getBalance: (address: string, scamFilter?: boolean) => Promise<AssetValue[]>;
151
158
  getExtendedPublicKey: () => string | undefined;
159
+ getExtendedPublicKeyInfo: ({ accountIndex }?: {
160
+ accountIndex?: number;
161
+ }) => {
162
+ accountIndex: number;
163
+ path: string;
164
+ xpub: string;
165
+ } | undefined;
152
166
  getFeeRates: () => Promise<{
153
167
  average: number;
154
168
  fast: number;