@swapkit/toolboxes 4.27.1 → 4.28.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 Z0=Object.create;var{getPrototypeOf:G0,defineProperty:VX,getOwnPropertyNames:O2,getOwnPropertyDescriptor:Y0}=Object,b2=Object.prototype.hasOwnProperty;function k2(X){return this[X]}var q0,L0,$1=(X,$,J)=>{var j=X!=null&&typeof X==="object";if(j){var Q=$?q0??=new WeakMap:L0??=new WeakMap,Z=Q.get(X);if(Z)return Z}J=X!=null?Z0(G0(X)):{};let Y=$||!X||!X.__esModule?VX(J,"default",{value:X,enumerable:!0}):J;for(let G of O2(X))if(!b2.call(Y,G))VX(Y,G,{get:k2.bind(X,G),enumerable:!0});if(j)Q.set(X,Y);return Y},z0=(X)=>{var $=(H2??=new WeakMap).get(X),J;if($)return $;if($=VX({},"__esModule",{value:!0}),X&&typeof X==="object"||typeof X==="function"){for(var j of O2(X))if(!b2.call($,j))VX($,j,{get:k2.bind(X,j),enumerable:!(J=Y0(X,j))||J.enumerable})}return H2.set(X,$),$},H2;var W0=(X)=>X;function U0(X,$){this[X]=W0.bind(null,$)}var B0=(X,$)=>{for(var J in $)VX(X,J,{get:$[J],enumerable:!0,configurable:!0,set:U0.bind($,J)})};var y=(X,$)=>()=>(X&&($=X(X=0)),$);function x(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)x("accountIndex",X);let j=[...J?.slice(0,3)??V2.NetworkDerivationPath[$].slice(0,3)];if(X!==void 0)j[2]=X;return j}function BX({accountIndex:X,change:$=!1,chain:J,derivationPath:j,index:Q}){return x("index",Q),[...i({accountIndex:X,chain:J,derivationPath:j}),Number($),Q]}function ZX(X){return X[2]??0}function f2({deriveAddress:X,getBalance:$,getUtxos:J}){async function j(G){let{accountIndex:L,count:q,startIndex:U=0,change:B=!1}=G;if(x("count",q),q<1)throw RangeError("count must be at least 1");x("startIndex",U);let z=[];for(let _=0;_<q;_++){let N=await X({accountIndex:L,change:B,index:U+_});if(N)z.push(N)}return z}async function Q(G){let{gapLimit:L=20,change:q=!1}=G??{},U=[],B=0,z=0;while(B<L){let _=await X({change:q,index:z});if(!_)break;if((await $(_.address)).some((O)=>O.getValue("number")>0))U.push(_),B=0;else B++;z++}return U}async function Z(G=20){let[L,q]=await Promise.all([Q({change:!1,gapLimit:G}),Q({change:!0,gapLimit:G})]),U=[...L,...q],B=await Promise.all(U.map(async(_)=>{let k=(await $(_.address)).reduce((O,P)=>O+P.getValue("number"),0);return{..._,balance:k}})),z=B.reduce((_,N)=>_+N.balance,0);return{addresses:B,total:z}}async function Y(G=20){let[L,q]=await Promise.all([Q({change:!1,gapLimit:G}),Q({change:!0,gapLimit:G})]),U=[...L,...q];return(await Promise.all(U.map(async(z)=>{return(await J(z.address)).map((N)=>({...N,address:z.address,derivationIndex:z.index,isChange:z.change}))}))).flat()}return{deriveAddresses:j,getAggregatedBalance:Z,getAggregatedUtxos:Y,scanForAddresses:Q}}var V2;var fX=y(()=>{V2=require("@swapkit/helpers")});function T2(){function X(){let $=Date.now(),J=tX||$;return tX=J,$>tX?$:J+1}return _0+X().toString(36)}function P2(X){return async function(J,j=!0){let Q=await I2.SwapKitApi.getChainBalance({address:J,chain:X,scamFilter:j}),{baseDecimal:Z}=IX.getChainConfig(X),Y=Q.map(({identifier:L,value:q,decimal:U})=>{return new IX.AssetValue({decimal:U||Z,identifier:L,value:q})});if(!Y.some((L)=>L.isGasAsset))return[IX.AssetValue.from({chain:X}),...Y];return Y}}var IX,I2,_0,tX=0;var eX=y(()=>{IX=require("@swapkit/helpers"),I2=require("@swapkit/helpers/api"),_0=typeof process<"u"&&process.pid?process.pid.toString(36):""});async function N0({chain:X,txHash:$}){let J=`${TX(X)}/push/transaction`,j=JSON.stringify({data:$});try{let Q=await D.RequestClient.post(J,{body:j,headers:{"Content-Type":"application/json"}});if(Q.context.code!==200)throw new D.SwapKitError("toolbox_utxo_broadcast_failed",{error:Q.context.error||"Transaction broadcast failed"});return Q.data?.transaction_hash||$}catch(Q){let Z=await D.getRPCUrl(X);if(Z){let Y=JSON.stringify({id:T2(),jsonrpc:"2.0",method:"sendrawtransaction",params:[$]}),G=await D.RequestClient.post(Z,{body:Y,headers:{"Content-Type":"application/json"}});if(G.error)throw new D.SwapKitError("toolbox_utxo_broadcast_failed",{error:G.error?.message});if(G.result.includes('"code":-26'))throw new D.SwapKitError("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return G.result}throw Q}}function TX(X){return`https://api.blockchair.com/${M0(X)}`}function F2(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 M0(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 D0(X){try{let{feePerKb:$}=await D.RequestClient.get(`https://app.bitgo.com/api/v2/${X.toLowerCase()}/tx/fee`),J=$/1000;return Math.max(J,F2(X))}catch{return F2(X)}}async function xX(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 R2({address:X,chain:$,apiKey:J}){if(!X)throw new D.SwapKitError("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await xX(`${TX($)}/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 R2({address:X,apiKey:J,chain:$}))?.address.balance||0}async function A2({chain:X,apiKey:$,txHash:J}){if(!J)throw new D.SwapKitError("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await xX(`${TX(X)}/raw/transaction/${J}`,$))?.[J]?.raw_transaction||""}catch(j){let Q=j instanceof Error?j.message:String(j);return console.error(`Failed to fetch raw transaction: ${Q}`),""}}async function O0({chain:X,apiKey:$,txHash:J}){if(!J)throw new D.SwapKitError("toolbox_utxo_invalid_params",{error:"TxHash is required"});let Q=(await xX(`${TX(X)}/dashboards/transaction/${J}`,$))?.[J];if(!Q)throw new D.SwapKitError("toolbox_utxo_tx_not_found",{txHash:J});let{transaction:Z,inputs:Y,outputs:G}=Q,L=Y.map((U)=>U.spending_sequence),q=Z.is_rbf===!0||L.some((U)=>U<H0);return{blockId:Z.block_id,confirmed:Z.block_id!==-1,fee:Z.fee,inputs:Y,isRBF:q,outputs:G,sequences:L,size:Z.size,txid:Z.hash,weight:Z.weight}}async function b0({chain:X,address:$,apiKey:J,offset:j=0,limit:Q=30}){return(await xX(`${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=${Q}&offset=${j}`,J)).map(({is_spent:L,script_hex:q,block_id:U,transaction_hash:B,index:z,value:_,spending_signature_hex:N})=>({hash:B,index:z,is_confirmed:U!==-1,is_spent:L,script_hex:q,txHex:N,value:_}))}function k0(X){return X.reduce(($,J)=>$+J.value,0)}function E2(X,$){let J=[...X].sort((j,Q)=>Q.value-j.value);if($){let j=[],Q=0;for(let Z of J)if(j.push(Z),Q+=Z.value,Q>=$)break;return j}return J}async function y2({chain:X,address:$,apiKey:J,targetValue:j,accumulativeValue:Q=0,offset:Z=0,limit:Y=30}){if(!$)throw new D.SwapKitError("toolbox_utxo_invalid_params",{error:"Address is required"});try{let G=await b0({address:$,apiKey:J,chain:X,limit:Y,offset:Z,targetValue:j}),q=G.length<Y,U=G.filter(({is_spent:O})=>!O),B=k0(U),z=Q+B,_=j&&z>=j;if(q||_)return E2(U,j);let N=await y2({accumulativeValue:z,address:$,apiKey:J,chain:X,limit:Y,offset:Z+Y,targetValue:j}),k=[...U,...N];return E2(k,j)}catch(G){let L=G instanceof Error?G.message:String(G);return console.error(`Failed to fetch unspent UTXOs: ${L}`),[]}}async function V0({address:X,chain:$,apiKey:J,fetchTxHex:j=!0,targetValue:Q}){let Z=await y2({address:X,apiKey:J,chain:$,targetValue:Q}),Y=[];for(let{hash:G,index:L,script_hex:q,value:U}of Z){let B;if(j)B=await A2({apiKey:J,chain:$,txHash:G});Y.push({address:X,hash:G,index:L,txHex:B,value:U,witnessUtxo:{script:Buffer.from(q,"hex"),value:U}})}return Y}function R(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)=>N0({chain:X,txHash:J}),getAddressData:(J)=>R2({address:J,apiKey:$,chain:X}),getBalance:(J)=>C0({address:J,apiKey:$,chain:X}),getRawTx:(J)=>A2({apiKey:$,chain:X,txHash:J}),getSuggestedTxFee:()=>D0(X),getTransactionDetails:(J)=>O0({apiKey:$,chain:X,txHash:J}),getUtxos:(J)=>V0({...J,apiKey:$,chain:X})}}function f0(X){return X}function I0(){return function($){switch($){case D.Chain.Bitcoin:return GX.NETWORKS.bitcoin;case D.Chain.BitcoinCash:return GX.NETWORKS.bitcoinCash;case D.Chain.Dash:return GX.NETWORKS.dash;case D.Chain.Litecoin:return GX.NETWORKS.litecoin;case D.Chain.Dogecoin:return GX.NETWORKS.dogecoin;case D.Chain.Zcash:return GX.NETWORKS.zcash;default:throw new D.SwapKitError("toolbox_utxo_not_supported",{chain:$})}}}var D,GX,H0=4294967294;var v2=y(()=>{eX();D=require("@swapkit/helpers"),GX=require("@swapkit/utxo-signer")});function F0(X,$,J){return u.encodeCashAddr({hash:J,prefix:X,type:T0[$]})}function E0(X){let $=u.decodeCashAddr(X),J=P0[$.type];if(!J)throw Error(`Unknown CashAddr type: ${$.type}`);return{hash:$.hash,prefix:$.prefix,type:J}}var u,T0,P0,X2;var S2=y(()=>{u=require("@swapkit/utxo-signer"),T0={P2PKH:u.CashAddrType.P2PKH,P2SH:u.CashAddrType.P2SH},P0={[u.CashAddrType.P2PKH]:"P2PKH",[u.CashAddrType.P2SH]:"P2SH"};X2={decode:E0,encode:F0}});function j2(X){try{return hX(X),!0}catch{return!1}}function Q2(X){return hX(X)?.network}function d(X){let $=hX(X);if($?.format==="legacy")return X;return y0($)}function PX(X){let $=hX(X);return v0($)}function hX(X){try{let $=R0(X);if($)return $}catch{}try{let $=A0(X);if($)return $}catch{}throw new $2.SwapKitError("toolbox_utxo_invalid_address",{address:X})}function R0(X){try{let $=g2.decode(X);if($.length!==21)throw new $2.SwapKitError("toolbox_utxo_invalid_address",{address:X});let J=$[0],j=Array.prototype.slice.call($,1);switch(J){case YX.legacy.mainnet.p2pkh:return{format:"legacy",hash:j,network:"mainnet",type:"p2pkh"};case YX.legacy.mainnet.p2sh:return{format:"legacy",hash:j,network:"mainnet",type:"p2sh"};case YX.legacy.testnet.p2pkh:return{format:"legacy",hash:j,network:"testnet",type:"p2pkh"};case YX.legacy.testnet.p2sh:return{format:"legacy",hash:j,network:"testnet",type:"p2sh"};case YX.bitpay.mainnet.p2pkh:return{format:"bitpay",hash:j,network:"mainnet",type:"p2pkh"};case YX.bitpay.mainnet.p2sh:return{format:"bitpay",hash:j,network:"mainnet",type:"p2sh"};default:return}}catch{return}}function A0(X){if(X.indexOf(":")!==-1)try{return w2(X)}catch{}else{let $=["bitcoincash","bchtest","bchreg"];for(let J of $)try{return w2(`${J}:${X}`)}catch{}}return}function w2(X){try{let{hash:$,prefix:J,type:j}=X2.decode(X);return{format:"cashaddr",hash:Array.prototype.slice.call($,0),network:J==="bitcoincash"?"mainnet":"testnet",type:j==="P2PKH"?"p2pkh":"p2sh"}}catch{return}}function y0(X){let $=YX.legacy[X.network][X.type],J=Buffer.alloc(1+X.hash.length);return J[0]=$,J.set(X.hash,1),g2.encode(J)}function v0(X){let $=X.network==="mainnet"?"bitcoincash":"bchtest",J=X.type==="p2pkh"?"P2PKH":"P2SH",j=new Uint8Array(X.hash);return X2.encode($,J,j)}var K2,m2,$2,g2,J2,YX;var l2=y(()=>{S2();K2=require("@noble/hashes/sha2.js"),m2=require("@scure/base"),$2=require("@swapkit/helpers"),g2=m2.createBase58check(K2.sha256);((J)=>{J.Mainnet="mainnet";J.Testnet="testnet"})(J2||={});YX={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}}});function w(X){let $=new Uint8Array(Buffer.from(X,"utf8"));return h2.Script.encode(["RETURN",$])}var x2,h2,S0=1000,cX=10,pX=2,o2=10,w0=41,K0=107,uX,oX,FX,_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 x2.SwapKitError("toolbox_utxo_invalid_address",{address:X})},qX=({inputs:X,outputs:$,feeRate:J})=>{let j=X[0]&&"address"in X[0]&&X[0].address?_X(X[0].address):"P2PKH",Z=(J?X.filter((q)=>q.value>=oX["type"in q&&q.type?q.type:"P2PKH"]*Math.ceil(J)):X).reduce((q,U)=>q+s(U),0),Y=$?.reduce((q,U)=>q+EX(U),0)||FX[j],G=cX+Z+Y;return j==="P2WPKH"?Math.ceil(G+pX/4):G},s=(X)=>{if("type"in X&&X.type)return oX[X.type];if("address"in X&&X.address)return oX[_X(X.address)];return w0+K0},EX=(X,$)=>{if(X?.script)return o2+X.script.length+(X.script.length>=74?2:1);if($)return FX[$];if("address"in X&&X.address)return FX[_X(X.address)];return FX.P2PKH};var Z2=y(()=>{x2=require("@swapkit/helpers"),h2=require("@swapkit/utxo-signer");((J)=>{J.P2PKH="P2PKH";J.P2WPKH="P2WPKH"})(uX||={});oX={["P2PKH"]:148,["P2WPKH"]:68},FX={["P2PKH"]:34,["P2WPKH"]:31}});function NX(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 l({inputs:X,outputs:$,feeRate:J=1,chain:j=g.Chain.Bitcoin,changeAddress:Q="",sweep:Z=!1}){let Y=NX(j),G=X.filter((O)=>{let P=s(O)*J;return Z?O.value>Math.max(P,Y):P<=O.value});if(Z){let O=Math.ceil(J*qX({inputs:G,outputs:$})),P=G.reduce((K,c)=>K+c.value,0),$X=P-O;if($X<=Y)throw new g.SwapKitError("toolbox_sweep_amount_too_low",{available:P,dustThreshold:Y,fee:O});let JX=$.findIndex((K)=>("address"in K)&&K.address);if(JX===-1)throw new g.SwapKitError("toolbox_utxo_invalid_params",{error:"Sweep requires a recipient output"});return{fee:O,inputs:G,outputs:$.map((K,c)=>c===JX?{...K,value:$X}:K)}}let U=(X[0]&&"address"in X[0]&&X[0].address?_X(X[0].address):"P2PKH")==="P2WPKH"?Math.ceil(pX/4):0,B=cX+U+$.reduce((O,P)=>O+EX(P),0),z=$.reduce((O,P)=>O+P.value,0),_=B*J,N=0,k=[];for(let O of G){let P=s(O),$X=J*P;_+=$X,N+=O.value,k.push(O);let JX=_+z;if(N<JX)continue;let K=N-JX,c=J*EX({address:Q,value:0});if(K>c){let SX=c+_,wX=N-(z+Math.ceil(SX));if(wX>Math.max(s({value:0})*J,NX(j)))return{fee:Math.ceil(SX),inputs:k,outputs:$.concat({address:Q,value:wX})}}return{fee:Math.ceil(_),inputs:k,outputs:$}}return{fee:Math.ceil(J*qX({inputs:X,outputs:$}))}}var g;var c2=y(()=>{Z2();g=require("@swapkit/helpers")});var MX=y(()=>{v2();l2();c2();Z2()});function LX(X){return X.replace(/(bchtest:|bitcoincash:)/,"")}function a(X){let $=LX(X);return j2($)&&Q2($)==="mainnet"}var zX;var RX=y(()=>{MX();zX=require("@swapkit/utxo-signer")});function q2({address:X,chain:$}){return Y2.match($).with(W.Chain.BitcoinCash,()=>a(X)).with(W.Chain.Zcash,()=>zX.validateZcashAddress(X)).otherwise(()=>{try{return C.Address(v($)).decode(X),!0}catch{return!1}})}function v(X){return Y2.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 m0({phrase:X,derivationPath:$,network:J,seed:j}){let Q=j??rX.mnemonicToSeedSync(X),Y=G2.HDKey.fromMasterSeed(Q,J.bip32).derive($);if(!Y.privateKey)throw new W.SwapKitError("toolbox_utxo_invalid_params",{error:"Could not derive private key from phrase"});return Y.privateKey}function p2(X){return u2.secp256k1.getPublicKey(X,!0)}function yX({publicKey:X,chain:$,network:J}){if($===W.Chain.BitcoinCash){let Z=C.p2pkh(X,J);if(!Z.hash)throw new W.SwapKitError("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return C.encodeCashAddr({hash:Z.hash,prefix:C.CashAddrPrefix.MAINNET,type:C.CashAddrType.P2PKH}).replace(/^bitcoincash:/,"")}let Q=!AX.includes($)?C.p2wpkh(X,J):C.p2pkh(X,J);if(!Q.address)throw new W.SwapKitError("toolbox_utxo_invalid_address",{error:"Could not derive address"});return Q.address}function DX({phrase:X,derivationPath:$,chain:J,wif:j,seed:Q}){let Z=v(J);if(j){let q=C.WIF(Z).decode(j),U=p2(q);return{privateKey:q,publicKey:U}}if(!X)throw new W.SwapKitError("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let Y=$||W.derivationPathToString(W.NetworkDerivationPath[J]),G=m0({derivationPath:Y,network:Z,phrase:X,seed:Q}),L=p2(G);return{privateKey:G,publicKey:L}}function g0(X,$){return C.WIF(v($)).encode(X)}function l0({phrase:X,derivationPath:$,chain:J,seed:j}){let Q=$.split("/");if(Q.length<4)throw new W.SwapKitError("toolbox_utxo_invalid_params",{error:`Derivation path must have at least 4 levels (got ${Q.length}): ${$}`});let Z=v(J),Y=j??rX.mnemonicToSeedSync(X),G=G2.HDKey.fromMasterSeed(Y,Z.bip32),L=Q.slice(0,4).join("/");return G.derive(L)}function e({inputs:X,outputs:$,chain:J,tx:j,sender:Q,compiledMemo:Z,enableRBF:Y=!1}){let G=v(J),L=!AX.includes(J),q=Y?C.RBF_SEQUENCE:void 0,U=new Set;for(let B of X){let z=`${B.hash}:${B.index}`;if(U.has(z))throw new W.SwapKitError("toolbox_utxo_invalid_params",{error:"Duplicate input detected"});U.add(z);let _=typeof B.hash==="string"?t.hex.decode(B.hash):B.hash;if(L&&B.witnessUtxo)j.addInput({index:B.index,sequence:q,txid:_,witnessUtxo:{amount:BigInt(B.witnessUtxo.value),script:B.witnessUtxo.script}});else if(B.txHex)j.addInput({index:B.index,nonWitnessUtxo:t.hex.decode(B.txHex),sequence:q,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 B of $){let z="address"in B&&B.address?B.address:Q;if(J===W.Chain.BitcoinCash)z=d(z);if(B.script){if(Z)j.addOutput({amount:0n,script:Z})}else j.addOutputAddress(z,BigInt(B.value),G)}return{inputs:X,tx:j}}async function CX(X){let $=await R(X).getSuggestedTxFee();return{[W.FeeOption.Average]:$,[W.FeeOption.Fast]:W.applyFeeMultiplier($,W.FeeOption.Fast),[W.FeeOption.Fastest]:W.applyFeeMultiplier($,W.FeeOption.Fastest)}}async function d2({assetValue:X,recipient:$,memo:J,sender:j,sweep:Q,fetchTxHex:Z=!1}){let Y=X.chain,G=Z||AX.includes(Y),L=X.getBaseValue("number"),q=Q?void 0:Math.ceil(L+(await CX(Y))[W.FeeOption.Fastest]*5000);return{inputs:await R(Y).getUtxos({address:j,fetchTxHex:G,targetValue:q}),outputs:[{address:$,value:Q?0:L},...J?[{address:"",script:w(J),value:0}]:[]]}}async function r2({assetValue:X,recipient:$,memo:J,feeRate:j,sender:Q,fetchTxHex:Z=!1,enableRBF:Y=!1,sweep:G}){let L=X.chain,q=J?w(J):null,U=await d2({assetValue:X,fetchTxHex:Z,memo:J,recipient:$,sender:Q,sweep:G}),{inputs:B,outputs:z}=l({...U,chain:L,feeRate:j,sweep:G});if(!(B&&z))throw new W.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:Q});let _=new C.Transaction({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!q,version:1}),{inputs:N,tx:k}=e({chain:L,compiledMemo:q,enableRBF:Y,inputs:B,outputs:z,sender:Q,tx:_});return{inputs:N,tx:k,utxos:U.inputs}}async function n2({assetValue:X,feeOptionKey:$=W.FeeOption.Fast,feeRate:J,memo:j,sender:Q,recipient:Z,sweep:Y}){let G=X.chain,L=await d2({assetValue:X,memo:j,recipient:Z,sender:Q,sweep:Y}),q=J?Math.floor(J):(await CX(G))[$];return l({...L,chain:G,feeRate:q,sweep:Y})}function x0(X){return async function({from:J,memo:j,feeRate:Q,feeOptionKey:Z=W.FeeOption.Fast,recipient:Y=J,recipients:G=1}){let L=Q??(await CX(X))[Z],U=(await R(X).getUtxos({address:J,fetchTxHex:!1})).filter((k)=>k.value>Math.max(NX(X),s(k)*L));if(!U.length)return W.AssetValue.from({chain:X});let B=typeof G==="number"?Math.max(G,1):G.length,z=typeof G==="number"||B===0?Array.from({length:B||1},()=>({address:Y,value:0})):[...G];if(j)z.push({address:J,script:w(j),value:0});let{outputs:_}=l({chain:X,feeRate:L,inputs:U,outputs:z,sweep:!0}),N=_?.[0]?.value??0;return W.AssetValue.from({chain:X,value:BigInt(N)})}}function h0(X){return async function(J){let{fee:j}=await n2(J);return W.AssetValue.from({chain:X,value:W.SwapKitNumber.fromBigInt(BigInt(j),8).getValue("string")})}}function o0({chain:X,phrase:$,derivationPath:J,seed:j}){let Q=v(X),{privateKey:Z,publicKey:Y}=DX({chain:X,derivationPath:J,phrase:$,seed:j}),G=X===W.Chain.BitcoinCash?[C.BCHSigHash.ALL]:[C.SigHash.ALL];return{getAddress:()=>yX({chain:X,network:Q,publicKey:Y}),privateKey:Z,publicKey:Y,signTransaction:(L)=>{return L.sign(Z,G),L}}}function c0(X,$){return async function({memo:j,recipient:Q,feeOptionKey:Z,feeRate:Y,assetValue:G,enableRBF:L=!1,sweep:q}){let U=await $?.getAddress();if(!($&&U))throw new W.SwapKitError("toolbox_utxo_no_signer");if(!Q)throw new W.SwapKitError("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});W.warnOnce({condition:L&&!dX.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 B=L&&dX.includes(X),z=Y||(await CX(X))[Z||W.FeeOption.Fast],{tx:_}=await r2({assetValue:G,enableRBF:B,feeRate:z,memo:j,recipient:Q,sender:U,sweep:q}),N=await $.signTransaction(_);return N.finalize(),R(X).broadcastTx(t.hex.encode(N.extract()))}}function L2(X){return($)=>q2({address:$,chain:X})}function z2(X){let $=v(X);return function(j){if(!j)throw new W.SwapKitError("toolbox_utxo_invalid_params",{error:"Keys must be provided"});return yX({chain:X,network:$,publicKey:j.publicKey})}}function XX({chain:X,...$}){let J="phrase"in $?$.phrase:void 0,j="index"in $?$.index||0:0,Q=J?rX.mnemonicToSeedSync(J):void 0,Z="derivationPath"in $&&$.derivationPath?$.derivationPath:W.updateDerivationPath(W.NetworkDerivationPath[X],{index:j}),Y=W.derivationPathToString(Z),G=J?o0({chain:X,derivationPath:Y,phrase:J,seed:Q}):void 0,L="signer"in $?$.signer:void 0,q=G||L,U=J?DX({chain:X,derivationPath:Y,phrase:J,seed:Q}):void 0;function B(){if(q)return q.getAddress();return Promise.resolve(void 0)}function z(M){if(!J)return;let H=i({accountIndex:M,chain:X,derivationPath:Z});return l0({chain:X,derivationPath:W.derivationPathToString(H),phrase:J,seed:Q})}let _=z();function N(){if(!_)return;return _.publicExtendedKey}function k({accountIndex:M}={}){let H=M===void 0?_:z(M);if(!H)return;let V=i({accountIndex:M,chain:X,derivationPath:Z});return{accountIndex:ZX(V),path:W.derivationPathToString(V),xpub:H.publicExtendedKey}}function O({accountIndex:M,index:H,change:V=!1}){let f=M===void 0?_:z(M);if(!f)return;let I=BX({accountIndex:M,chain:X,change:V,derivationPath:Z,index:H}),m=v(X),h=f.deriveChild(Number(V)).deriveChild(H);if(!h.publicKey)throw new W.SwapKitError("toolbox_utxo_invalid_params",{error:"Could not derive public key"});let S=yX({chain:X,network:m,publicKey:h.publicKey}),n=t.hex.encode(h.publicKey);return{accountIndex:ZX(I),address:S,change:V,index:H,path:W.derivationPathToString(I),pubkey:n}}async function P(M){if(!dX.includes(X))return{reason:`RBF is not supported on ${X}`,supported:!1};let H=await R(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 $X({txid:M,newFeeRate:H,recipient:V,memo:f}){if(!dX.includes(X))throw new W.SwapKitError("toolbox_utxo_rbf_not_supported",{chain:X});let I=await R(X).getTransactionDetails(M);if(!I.isRBF)throw new W.SwapKitError("toolbox_utxo_tx_not_replaceable",{txid:M});if(I.confirmed)throw new W.SwapKitError("toolbox_utxo_tx_already_confirmed",{blockId:I.blockId,txid:M});let m=I.inputs.reduce((A,p)=>A+p.value,0),S=I.outputs.find((A)=>A.recipient===V)?.value||0;if(S===0)throw new W.SwapKitError("toolbox_utxo_invalid_params",{error:"Could not determine send amount from original transaction"});let n=await Promise.all(I.inputs.map(async(A)=>{let p=await R(X).getRawTx(A.transaction_hash);return{hash:A.transaction_hash,index:A.index,txHex:p,value:A.value,witnessUtxo:void 0}})),bX=f?w(f):null,KX=qX({feeRate:H,inputs:n.map((A)=>({...A,type:"P2WPKH"})),outputs:[{address:V,value:S}]}),jX=Math.ceil(KX*H);if(jX<=I.fee)throw new W.SwapKitError("toolbox_utxo_rbf_fee_too_low",{newFee:jX,originalFee:I.fee});let WX=jX-I.fee,UX=S-WX;if(UX<=0)throw new W.SwapKitError("toolbox_utxo_rbf_insufficient_change");let QX=new C.Transaction({allowLegacyWitnessUtxo:!0,version:1}),mX=[{address:V,value:UX},...f?[{address:"",script:w(f),value:0}]:[]],gX=m-UX-jX,kX=await B();if(gX>NX(X)&&kX)mX.push({address:kX,value:gX});return e({chain:X,compiledMemo:bX,inputs:n,outputs:mX,sender:kX||V,tx:QX}),{feeDelta:WX,newFee:jX,originalFee:I.fee,tx:QX}}async function JX({txid:M,newFeeRate:H,recipient:V,memo:f}){let{tx:I,originalFee:m,newFee:h}=await $X({memo:f,newFeeRate:H,recipient:V,txid:M}),S=await sX(I);S.finalize();let n=await R(X).broadcastTx(t.hex.encode(S.extract()));return{newFee:h,originalFee:m,txid:n}}function K({accountIndex:M,index:H,change:V=!1}){x("index",H);let f=M===void 0?_:z(M);if(!f)return;return f.deriveChild(Number(V)).deriveChild(H).privateKey||void 0}function c({tx:M,inputDerivations:H}){if(!_)throw new W.SwapKitError("toolbox_utxo_no_signer");let V=X===W.Chain.BitcoinCash?[C.BCHSigHash.ALL]:[C.SigHash.ALL];for(let f=0;f<H.length;f++){let I=H[f];if(!I)continue;let{derivationIndex:m,isChange:h}=I,S=K({change:h,index:m});if(!S)throw new W.SwapKitError("toolbox_utxo_invalid_params",{error:`Could not derive private key for input ${f} at index ${m}`});M.signIdx(S,f,V)}return M}async function SX({utxos:M,recipient:H,assetValue:V,memo:f,feeRate:I,feeOptionKey:m,changeAddress:h,sweep:S}){if(S)throw new W.SwapKitError("toolbox_utxo_invalid_params",{error:"Sweep is not supported for transfers from multiple addresses"});if(!_)throw new W.SwapKitError("toolbox_utxo_no_signer");let n=I||(await CX(X))[m||W.FeeOption.Fast],bX=f?w(f):null,KX=[{address:H,value:V.getBaseValue("number")}];if(bX)KX.push({address:"",script:bX,value:0});let jX=M.map(({hash:A,index:p,value:lX,txHex:Q0,witnessUtxo:aX})=>({hash:A,index:p,txHex:Q0,value:lX,witnessUtxo:aX?{script:aX.script,value:aX.value}:void 0})),{inputs:WX,outputs:UX}=l({chain:X,feeRate:n,inputs:jX,outputs:KX});if(!(WX&&UX))throw new W.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:V,sender:"multiple addresses"});let QX=new C.Transaction({allowLegacyWitnessUtxo:!0,version:1}),mX=M[0]?.address,gX=h||await B()||mX||H;e({chain:X,compiledMemo:bX,inputs:WX,outputs:UX,sender:gX,tx:QX});let kX=WX.map((A)=>{let p=M.find((lX)=>lX.hash===A.hash&&lX.index===A.index);return p?{derivationIndex:p.derivationIndex,isChange:p.isChange}:{derivationIndex:0,isChange:!1}});return c({inputDerivations:kX,tx:QX}),QX.finalize(),R(X).broadcastTx(t.hex.encode(QX.extract()))}function wX({address:M,gapLimit:H=20}){if(!_)return;for(let V=0;V<H;V++){let f=O({change:!1,index:V}),I=O({change:!0,index:V}),m=f?.address===M?!1:I?.address===M;if(f?.address===M||I?.address===M)return{change:m,index:V}}return}function sX(M){if(!q)throw new W.SwapKitError("toolbox_utxo_no_signer");return q.signTransaction(M)}async function j0(M){let H=await sX(M);return H.finalize(),await R(X).broadcastTx(t.hex.encode(H.extract()))}return{accumulative:l,broadcastTx:(M)=>R(X).broadcastTx(M),bumpFee:JX,calculateTxSize:qX,createKeysForPath:(M)=>DX({...M,chain:X}),createReplacementTransaction:$X,createTransaction:r2,deriveAddressAtIndex:O,derivePrivateKeyAtIndex:K,estimateMaxSendableAmount:x0(X),estimateTransactionFee:h0(X),getAddress:B,getAddressFromKeys:z2(X),getBalance:P2(X),getExtendedPublicKey:N,getExtendedPublicKeyInfo:k,getFeeRates:()=>CX(X),getInputsOutputsFee:n2,getNetworkForChain:()=>v(X),getPrivateKeyFromMnemonic:(M)=>g0(DX({...M,chain:X}).privateKey,X),isRBFEnabled:P,keys:U,resolveDerivationIndex:wX,signAndBroadcastTransaction:j0,signTransaction:sX,signTransactionWithMultipleKeys:c,transfer:c0(X,q),transferFromMultipleAddresses:SX,validateAddress:L2(X)}}var u2,t,G2,rX,W,C,Y2,AX,dX;var HX=y(()=>{eX();fX();MX();RX();u2=require("@noble/curves/secp256k1.js"),t=require("@scure/base"),G2=require("@scure/bip32"),rX=require("@scure/bip39"),W=require("@swapkit/helpers"),C=require("@swapkit/utxo-signer"),Y2=require("ts-pattern"),AX=[W.Chain.Dash,W.Chain.Dogecoin,W.Chain.Zcash,W.Chain.BitcoinCash],dX=[W.Chain.Bitcoin]});function vX(X){return LX(PX(X))}function p0(X){let $=v(o);function J(Q){return Q.sign(X.privateKey,[E.BCHSigHash.ALL]),Q}function j(){let Q=E.p2pkh(X.publicKey,$);if(!Q.hash)throw new F.SwapKitError("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});let Z=E.encodeCashAddr({hash:Q.hash,prefix:E.CashAddrPrefix.MAINNET,type:E.CashAddrType.P2PKH});return Promise.resolve(Z.replace(/^bitcoincash:/,""))}return{getAddress:j,signTransaction:J}}function U2(X){let $="phrase"in X?X.phrase:void 0,J="index"in X?X.index||0:0,j=F.derivationPathToString("derivationPath"in X&&X.derivationPath?X.derivationPath:F.updateDerivationPath(F.NetworkDerivationPath[o],{index:J})),Q=$?DX({chain:o,derivationPath:j,phrase:$}):void 0,Z=Q?p0(Q):("signer"in X)?X.signer:void 0;function Y(){return Promise.resolve(Z?.getAddress())}let{getBalance:G,getFeeRates:L,broadcastTx:q,...U}=XX({chain:o});function B(N,k=!0){return G(LX(PX(N)))}function z(N){if(!Z)throw new F.SwapKitError("toolbox_utxo_no_signer");return Z.signTransaction(N)}async function _(N){let k=await z(N);return k.finalize(),await q(W2.hex.encode(k.extract()))}return{...U,broadcastTx:q,buildTx:d0,createTransaction:i2,getAddress:Y,getAddressFromKeys:r0,getBalance:B,getFeeRates:L,signAndBroadcastTransaction:_,signTransaction:z,stripPrefix:LX,stripToCashAddress:vX,transfer:u0({broadcastTx:q,getFeeRates:L,signer:Z}),validateAddress:a}}async function i2({assetValue:X,recipient:$,memo:J,feeRate:j,sender:Q,sweep:Z}){if(!a($))throw new F.SwapKitError("toolbox_utxo_invalid_address",{address:$});let Y=Math.ceil(X.getBaseValue("number")+j*7500),G=await R(o).getUtxos({address:vX(Q),fetchTxHex:!0,targetValue:Z?void 0:Y}),L=J?w(J):null,q=[],U=d($);if(q.push({address:U,value:Z?0:X.getBaseValue("number")}),L)q.push({script:L,value:0});let{inputs:B,outputs:z}=l({chain:o,feeRate:j,inputs:G,outputs:q,sweep:Z});if(!(B&&z))throw new F.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:Q});let _=new E.Transaction({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!L,version:1}),N=d(Q),{inputs:k,tx:O}=e({chain:o,compiledMemo:L,inputs:B,outputs:z.map((P)=>("address"in P)&&P.address?{...P,address:d(P.address)}:P),sender:N,tx:_});return{inputs:k,tx:O,utxos:B}}function u0({broadcastTx:X,getFeeRates:$,signer:J}){return async function({recipient:Q,assetValue:Z,feeOptionKey:Y=F.FeeOption.Fast,sweep:G,...L}){let q=await J?.getAddress();if(!(J&&q))throw new F.SwapKitError("toolbox_utxo_no_signer");if(!Q)throw new F.SwapKitError("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let U=L.feeRate||(await $())[Y],{tx:B}=await i2({...L,assetValue:Z,feeRate:U,recipient:Q,sender:q,sweep:G}),z=await J.signTransaction(B);return z.finalize(),X(W2.hex.encode(z.extract()))}}async function d0({assetValue:X,recipient:$,memo:J,feeRate:j,sender:Q}){let Z=PX($);if(!a(Z))throw new F.SwapKitError("toolbox_utxo_invalid_address",{address:Z});let Y=Math.ceil(X.getBaseValue("number")+j*7500),G=await R(o).getUtxos({address:vX(Q),fetchTxHex:!0,targetValue:Y}),L=Number(j.toFixed(0)),q=J?w(J):null,U=[];if(U.push({address:d($),value:X.getBaseValue("number")}),q)U.push({script:q,value:0});let{inputs:B,outputs:z}=l({chain:o,feeRate:L,inputs:G,outputs:U});if(!(B&&z))throw new F.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:Q});let _=new E.Transaction({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!q,version:1}),{inputs:N,tx:k}=e({chain:o,compiledMemo:q,inputs:B,outputs:z,sender:d(Q),tx:_});return{inputs:N,tx:k,utxos:G}}function r0(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 W2,F,E,o;var nX=y(()=>{MX();HX();RX();W2=require("@scure/base"),F=require("@swapkit/helpers"),E=require("@swapkit/utxo-signer"),o=F.Chain.BitcoinCash});function N2(){let{isStagenet:X}=T.SKConfig.get("envs");return X?b.ZCASH_TEST_NETWORK:b.ZCASH_NETWORK}function i0(X){return n0.encode(X)}function s0({phrase:X,derivationPath:$}){let J=_2.mnemonicToSeedSync(X),Q=B2.HDKey.fromMasterSeed(J).derive($);if(!Q.privateKey||!Q.publicKey)throw new T.SwapKitError("toolbox_utxo_invalid_params");let{privateKey:Z,publicKey:Y}=Q,G=b.utils.hash160(Y),{isStagenet:L}=T.SKConfig.get("envs"),q=L?new Uint8Array([29,37]):new Uint8Array([28,184]),U=new Uint8Array(q.length+G.length);U.set(q,0),U.set(G,q.length);let B=i0(U);return{getAddress:()=>Promise.resolve(B),signTransaction:(z)=>{if(z instanceof b.ZcashPSBT){let _=z.toPCZT();return _.signAllInputs(Z,Y,b.ZcashSigHash.ALL),_.finalizeAllInputs(),Promise.resolve(_.extract())}if(z instanceof b.PCZT)return z.signAllInputs(Z,Y,b.ZcashSigHash.ALL),z.finalizeAllInputs(),Promise.resolve(z.extract());return z.signAllInputs(Z,Y,b.ZcashSigHash.ALL),Promise.resolve(z)}}}function a0({inputs:X,outputs:$,tx:J,sender:j,compiledMemo:Q}){let Z=N2();for(let Y of X){let G=b.Address(Z).decode(j),L=b.OutScript.encode(G);J.addInput({index:Y.index,script:L,sequence:4294967295,txid:iX.hex.decode(Y.hash),value:BigInt(Y.value)})}for(let Y of $){let G="address"in Y&&Y.address?Y.address:j,L=Y.script;if(L&&!Q)continue;if(L&&Q)J.addOutput({amount:0n,script:Q});else J.addOutputAddress(G,BigInt(Y.value),Z)}return{inputs:X,tx:J}}async function s2(X){let{assetValue:$,recipient:J,memo:j,feeRate:Q,sender:Z,fetchTxHex:Y,sweep:G}=X,L=N2();if(!b.isTransparentZcashAddress(Z,L))throw new T.SwapKitError("toolbox_utxo_invalid_address",{address:Z});if(!b.isTransparentZcashAddress(J,L))throw new T.SwapKitError("toolbox_utxo_invalid_address",{address:J,error:"Zcash transaction creation currently supports transparent addresses only"});let q=j?w(j):null,U=await R(T.Chain.Zcash).getUtxos({address:Z,fetchTxHex:Y!==!1}),B=[{address:J,value:G?0:Number($.getBaseValue("string"))},...q?[{script:q,value:0}]:[]],{inputs:z,outputs:_}=l({chain:T.Chain.Zcash,changeAddress:Z,feeRate:Q,inputs:U,outputs:B,sweep:G});if(!(z&&_))throw new T.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:$,sender:Z});let N=b.createZcashTransaction({consensusBranchId:b.ZcashConsensusBranchId.NU6_2,expiryHeight:0,lockTime:0,version:4,versionGroupId:b.ZcashVersionGroupId.SAPLING}),{tx:k,inputs:O}=a0({compiledMemo:q,inputs:z,outputs:_,sender:Z,tx:N});return{inputs:O,outputs:_,tx:k}}function M2(X){let $=OX.match(X).with({signer:OX.P.not(OX.P.nullish)},({signer:L})=>L).with({phrase:OX.P.string},({phrase:L,derivationPath:q,index:U=0})=>{let B=q||T.NetworkDerivationPath[T.Chain.Zcash]||[44,133,0,0,0],z=T.updateDerivationPath(B,{index:U}),_=T.derivationPathToString(z);return s0({derivationPath:_,phrase:L})}).otherwise(()=>{return}),J=XX({chain:T.Chain.Zcash,signer:$});async function j(L){if(!$)throw new T.SwapKitError("toolbox_utxo_no_signer");return await $.signTransaction(L)}async function Q(L){let q=await j(L);return J.broadcastTx(q.toHex())}async function Z({recipient:L,assetValue:q,feeOptionKey:U=T.FeeOption.Fast,sweep:B,...z}){let _=await $?.getAddress();if(!($&&_))throw new T.SwapKitError("toolbox_utxo_no_signer");let N=z.feeRate||(await J.getFeeRates())[U],{tx:k}=await s2({...z,assetValue:q,feeRate:N,recipient:L,sender:_,sweep:B}),P=(await $.signTransaction(k)).toHex();return J.broadcastTx(P)}function Y({phrase:L,derivationPath:q="m/44'/133'/0'/0/0"}){let U=_2.mnemonicToSeedSync(L),z=B2.HDKey.fromMasterSeed(U).derive(q);if(!z.privateKey||!z.publicKey)throw new T.SwapKitError("toolbox_utxo_invalid_params");return{privateKey:z.privateKey,publicKey:z.publicKey}}function G({phrase:L,derivationPath:q="m/44'/133'/0'/0/0"}){let U=Y({derivationPath:q,phrase:L}),B=N2();return b.WIF(B).encode(U.privateKey)}return{...J,createKeysForPath:Y,createTransaction:s2,getPrivateKeyFromMnemonic:G,signAndBroadcastTransaction:Q,signTransaction:j,transfer:Z,validateAddress:zX.validateZcashAddress}}var iX,B2,_2,T,b,OX,n0;var D2=y(()=>{MX();HX();RX();iX=require("@scure/base"),B2=require("@scure/bip32"),_2=require("@scure/bip39"),T=require("@swapkit/helpers"),b=require("@swapkit/utxo-signer"),OX=require("ts-pattern");n0=iX.createBase58check(b.utils.sha256)});function X0({xpub:X,chain:$,count:J,startIndex:j=0,accountIndex:Q}){if(x("count",J),J<1)throw RangeError("count must be at least 1");x("startIndex",j);let Z=v($),Y=t2.HDKey.fromExtendedKey(X,Z.bip32),G=i({accountIndex:Q,chain:$}),L=ZX(G),q=[];for(let U of[!1,!0]){let B=Y.deriveChild(Number(U));for(let z=0;z<J;z++){let _=j+z,N=B.deriveChild(_);if(!N.publicKey)continue;let k=BX({accountIndex:Q,chain:$,change:U,index:_});q.push({accountIndex:L,address:yX({chain:$,network:Z,publicKey:N.publicKey}),change:U,index:_,path:e2.derivationPathToString(k),pubkey:a2.hex.encode(N.publicKey)})}}return q}var a2,t2,e2;var $0=y(()=>{fX();HX();a2=require("@scure/base"),t2=require("@scure/bip32"),e2=require("@swapkit/helpers")});function t0(X,$){switch(X){case r.Chain.BitcoinCash:return U2($||{});case r.Chain.Zcash:return M2($);case r.Chain.Bitcoin:case r.Chain.Dogecoin:case r.Chain.Litecoin:case r.Chain.Dash:return XX({chain:X,...$});default:throw new r.SwapKitError("toolbox_utxo_not_supported",{chain:X})}}var r;var J0=y(()=>{nX();HX();D2();fX();$0();nX();RX();r=require("@swapkit/helpers")});var e0={};B0(e0,{validateZcashAddress:()=>zX.validateZcashAddress,validateUtxoAddress:()=>q2,validateBchAddress:()=>a,toLegacyAddress:()=>d,toCashAddress:()=>PX,stripToCashAddress:()=>vX,stripPrefix:()=>LX,nonSegwitChains:()=>AX,isValidAddress:()=>j2,getUtxoToolbox:()=>t0,getUtxoNetwork:()=>I0,getUtxoApi:()=>R,getUTXOAddressValidator:()=>L2,getUTXOAddressPath:()=>BX,getUTXOAccountPath:()=>i,getUTXOAccountIndexFromPath:()=>ZX,getScriptTypeForAddress:()=>_X,getOutputSize:()=>EX,getNetworkForChain:()=>v,getInputSize:()=>s,getDustThreshold:()=>NX,detectAddressNetwork:()=>Q2,deriveAddressesFromXpub:()=>X0,createZcashToolbox:()=>M2,createUTXOToolbox:()=>XX,createHDWalletHelpers:()=>f2,createCustomUtxoApi:()=>f0,createBCHToolbox:()=>U2,compileMemo:()=>w,calculateTxSize:()=>qX,assertDerivationIndex:()=>x,addressFromKeysGetter:()=>z2,addInputsAndOutputs:()=>e,accumulative:()=>l,UtxoNetwork:()=>J2,UTXOScriptType:()=>uX,TX_OVERHEAD:()=>cX,SEGWIT_MARKER_FLAG_WEIGHT:()=>pX,OutputSizes:()=>FX,OP_RETURN_OVERHEAD:()=>o2,MIN_TX_FEE:()=>S0,InputSizes:()=>oX});module.exports=z0(e0);var X1=y(()=>{HX();fX();MX();J0();nX();D2()});X1();
1
+ var Z0=Object.create;var{getPrototypeOf:G0,defineProperty:fX,getOwnPropertyNames:O2,getOwnPropertyDescriptor:Y0}=Object,b2=Object.prototype.hasOwnProperty;function V2(X){return this[X]}var q0,L0,j1=(X,$,J)=>{var j=X!=null&&typeof X==="object";if(j){var Q=$?q0??=new WeakMap:L0??=new WeakMap,Z=Q.get(X);if(Z)return Z}J=X!=null?Z0(G0(X)):{};let Y=$||!X||!X.__esModule?fX(J,"default",{value:X,enumerable:!0}):J;for(let G of O2(X))if(!b2.call(Y,G))fX(Y,G,{get:V2.bind(X,G),enumerable:!0});if(j)Q.set(X,Y);return Y},z0=(X)=>{var $=(H2??=new WeakMap).get(X),J;if($)return $;if($=fX({},"__esModule",{value:!0}),X&&typeof X==="object"||typeof X==="function"){for(var j of O2(X))if(!b2.call($,j))fX($,j,{get:V2.bind(X,j),enumerable:!(J=Y0(X,j))||J.enumerable})}return H2.set(X,$),$},H2;var W0=(X)=>X;function U0(X,$){this[X]=W0.bind(null,$)}var _0=(X,$)=>{for(var J in $)fX(X,J,{get:$[J],enumerable:!0,configurable:!0,set:U0.bind($,J)})};var y=(X,$)=>()=>(X&&($=X(X=0)),$);function x(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)x("accountIndex",X);let j=[...J?.slice(0,3)??k2.NetworkDerivationPath[$].slice(0,3)];if(X!==void 0)j[2]=X;return j}function _X({accountIndex:X,change:$=!1,chain:J,derivationPath:j,index:Q}){return x("index",Q),[...i({accountIndex:X,chain:J,derivationPath:j}),Number($),Q]}function ZX(X){return X[2]??0}function f2({deriveAddress:X,getBalance:$,getUtxos:J}){async function j(G){let{accountIndex:L,count:q,startIndex:U=0,change:_=!1}=G;if(x("count",q),q<1)throw RangeError("count must be at least 1");x("startIndex",U);let z=[];for(let B=0;B<q;B++){let N=await X({accountIndex:L,change:_,index:U+B});if(N)z.push(N)}return z}async function Q(G){let{gapLimit:L=20,change:q=!1}=G??{},U=[],_=0,z=0;while(_<L){let B=await X({change:q,index:z});if(!B)break;if((await $(B.address)).some((b)=>b.getValue("number")>0))U.push(B),_=0;else _++;z++}return U}async function Z(G=20){let[L,q]=await Promise.all([Q({change:!1,gapLimit:G}),Q({change:!0,gapLimit:G})]),U=[...L,...q],_=await Promise.all(U.map(async(B)=>{let V=(await $(B.address)).reduce((b,P)=>b+P.getValue("number"),0);return{...B,balance:V}})),z=_.reduce((B,N)=>B+N.balance,0);return{addresses:_,total:z}}async function Y(G=20){let[L,q]=await Promise.all([Q({change:!1,gapLimit:G}),Q({change:!0,gapLimit:G})]),U=[...L,...q];return(await Promise.all(U.map(async(z)=>{return(await J(z.address)).map((N)=>({...N,address:z.address,derivationIndex:z.index,isChange:z.change}))}))).flat()}return{deriveAddresses:j,getAggregatedBalance:Z,getAggregatedUtxos:Y,scanForAddresses:Q}}var k2;var IX=y(()=>{k2=require("@swapkit/helpers")});function T2(){function X(){let $=Date.now(),J=tX||$;return tX=J,$>tX?$:J+1}return B0+X().toString(36)}function P2(X){return async function(J,j=!0){let Q=await I2.SwapKitApi.getChainBalance({address:J,chain:X,scamFilter:j}),{baseDecimal:Z}=TX.getChainConfig(X),Y=Q.map(({identifier:L,value:q,decimal:U})=>{return new TX.AssetValue({decimal:U||Z,identifier:L,value:q})});if(!Y.some((L)=>L.isGasAsset))return[TX.AssetValue.from({chain:X}),...Y];return Y}}var TX,I2,B0,tX=0;var eX=y(()=>{TX=require("@swapkit/helpers"),I2=require("@swapkit/helpers/api"),B0=typeof process<"u"&&process.pid?process.pid.toString(36):""});async function N0({chain:X,txHash:$}){let J=`${BX(X)}/push/transaction`,j=JSON.stringify({data:$});try{let Q=await D.RequestClient.post(J,{body:j,headers:{"Content-Type":"application/json"}});if(Q.context.code!==200)throw new D.SwapKitError("toolbox_utxo_broadcast_failed",{error:Q.context.error||"Transaction broadcast failed"});return Q.data?.transaction_hash||$}catch(Q){let Z=await D.getRPCUrl(X);if(Z){let Y=JSON.stringify({id:T2(),jsonrpc:"2.0",method:"sendrawtransaction",params:[$]}),G=await D.RequestClient.post(Z,{body:Y,headers:{"Content-Type":"application/json"}});if(G.error)throw new D.SwapKitError("toolbox_utxo_broadcast_failed",{error:G.error?.message});if(G.result.includes('"code":-26'))throw new D.SwapKitError("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return G.result}throw Q}}function BX(X){return`https://api.blockchair.com/${M0(X)}`}function F2(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 M0(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 D0(X){try{let{feePerKb:$}=await D.RequestClient.get(`https://app.bitgo.com/api/v2/${X.toLowerCase()}/tx/fee`),J=$/1000;return Math.max(J,F2(X))}catch{return F2(X)}}async function PX(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 C0({chain:X,apiKey:$}){let J=await PX(`${BX(X)}/stats`,$);if(typeof J.best_block_height!=="number")throw new D.SwapKitError("toolbox_utxo_api_error",{error:"Missing best_block_height in stats response"});return J.best_block_height}async function R2({address:X,chain:$,apiKey:J}){if(!X)throw new D.SwapKitError("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await PX(`${BX($)}/dashboards/address/${X}?transaction_details=true`,J))[X]}catch{return{address:{balance:0,transaction_count:0},utxo:[]}}}async function H0({address:X,chain:$,apiKey:J}){return(await R2({address:X,apiKey:J,chain:$}))?.address.balance||0}async function A2({chain:X,apiKey:$,txHash:J}){if(!J)throw new D.SwapKitError("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await PX(`${BX(X)}/raw/transaction/${J}`,$))?.[J]?.raw_transaction||""}catch(j){let Q=j instanceof Error?j.message:String(j);return console.error(`Failed to fetch raw transaction: ${Q}`),""}}async function b0({chain:X,apiKey:$,txHash:J}){if(!J)throw new D.SwapKitError("toolbox_utxo_invalid_params",{error:"TxHash is required"});let Q=(await PX(`${BX(X)}/dashboards/transaction/${J}`,$))?.[J];if(!Q)throw new D.SwapKitError("toolbox_utxo_tx_not_found",{txHash:J});let{transaction:Z,inputs:Y,outputs:G}=Q,L=Y.map((U)=>U.spending_sequence),q=Z.is_rbf===!0||L.some((U)=>U<O0);return{blockId:Z.block_id,confirmed:Z.block_id!==-1,fee:Z.fee,inputs:Y,isRBF:q,outputs:G,sequences:L,size:Z.size,txid:Z.hash,weight:Z.weight}}async function V0({chain:X,address:$,apiKey:J,offset:j=0,limit:Q=30}){return(await PX(`${BX(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=${Q}&offset=${j}`,J)).map(({is_spent:L,script_hex:q,block_id:U,transaction_hash:_,index:z,value:B,spending_signature_hex:N})=>({hash:_,index:z,is_confirmed:U!==-1,is_spent:L,script_hex:q,txHex:N,value:B}))}function k0(X){return X.reduce(($,J)=>$+J.value,0)}function E2(X,$){let J=[...X].sort((j,Q)=>Q.value-j.value);if($){let j=[],Q=0;for(let Z of J)if(j.push(Z),Q+=Z.value,Q>=$)break;return j}return J}async function y2({chain:X,address:$,apiKey:J,targetValue:j,accumulativeValue:Q=0,offset:Z=0,limit:Y=30}){if(!$)throw new D.SwapKitError("toolbox_utxo_invalid_params",{error:"Address is required"});try{let G=await V0({address:$,apiKey:J,chain:X,limit:Y,offset:Z,targetValue:j}),q=G.length<Y,U=G.filter(({is_spent:b})=>!b),_=k0(U),z=Q+_,B=j&&z>=j;if(q||B)return E2(U,j);let N=await y2({accumulativeValue:z,address:$,apiKey:J,chain:X,limit:Y,offset:Z+Y,targetValue:j}),V=[...U,...N];return E2(V,j)}catch(G){let L=G instanceof Error?G.message:String(G);return console.error(`Failed to fetch unspent UTXOs: ${L}`),[]}}async function f0({address:X,chain:$,apiKey:J,fetchTxHex:j=!0,targetValue:Q}){let Z=await y2({address:X,apiKey:J,chain:$,targetValue:Q}),Y=[];for(let{hash:G,index:L,script_hex:q,value:U}of Z){let _;if(j)_=await A2({apiKey:J,chain:$,txHash:G});Y.push({address:X,hash:G,index:L,txHex:_,value:U,witnessUtxo:{script:Buffer.from(q,"hex"),value:U}})}return Y}function E(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)=>N0({chain:X,txHash:J}),getAddressData:(J)=>R2({address:J,apiKey:$,chain:X}),getBalance:(J)=>H0({address:J,apiKey:$,chain:X}),getBlockHeight:()=>C0({apiKey:$,chain:X}),getRawTx:(J)=>A2({apiKey:$,chain:X,txHash:J}),getSuggestedTxFee:()=>D0(X),getTransactionDetails:(J)=>b0({apiKey:$,chain:X,txHash:J}),getUtxos:(J)=>f0({...J,apiKey:$,chain:X})}}function I0(X){return X}function T0(){return function($){switch($){case D.Chain.Bitcoin:return GX.NETWORKS.bitcoin;case D.Chain.BitcoinCash:return GX.NETWORKS.bitcoinCash;case D.Chain.Dash:return GX.NETWORKS.dash;case D.Chain.Litecoin:return GX.NETWORKS.litecoin;case D.Chain.Dogecoin:return GX.NETWORKS.dogecoin;case D.Chain.Zcash:return GX.NETWORKS.zcash;default:throw new D.SwapKitError("toolbox_utxo_not_supported",{chain:$})}}}var D,GX,O0=4294967294;var v2=y(()=>{eX();D=require("@swapkit/helpers"),GX=require("@swapkit/utxo-signer")});function E0(X,$,J){return p.encodeCashAddr({hash:J,prefix:X,type:P0[$]})}function R0(X){let $=p.decodeCashAddr(X),J=F0[$.type];if(!J)throw Error(`Unknown CashAddr type: ${$.type}`);return{hash:$.hash,prefix:$.prefix,type:J}}var p,P0,F0,X2;var S2=y(()=>{p=require("@swapkit/utxo-signer"),P0={P2PKH:p.CashAddrType.P2PKH,P2SH:p.CashAddrType.P2SH},F0={[p.CashAddrType.P2PKH]:"P2PKH",[p.CashAddrType.P2SH]:"P2SH"};X2={decode:R0,encode:E0}});function j2(X){try{return hX(X),!0}catch{return!1}}function Q2(X){return hX(X)?.network}function d(X){let $=hX(X);if($?.format==="legacy")return X;return v0($)}function FX(X){let $=hX(X);return S0($)}function hX(X){try{let $=A0(X);if($)return $}catch{}try{let $=y0(X);if($)return $}catch{}throw new $2.SwapKitError("toolbox_utxo_invalid_address",{address:X})}function A0(X){try{let $=g2.decode(X);if($.length!==21)throw new $2.SwapKitError("toolbox_utxo_invalid_address",{address:X});let J=$[0],j=Array.prototype.slice.call($,1);switch(J){case YX.legacy.mainnet.p2pkh:return{format:"legacy",hash:j,network:"mainnet",type:"p2pkh"};case YX.legacy.mainnet.p2sh:return{format:"legacy",hash:j,network:"mainnet",type:"p2sh"};case YX.legacy.testnet.p2pkh:return{format:"legacy",hash:j,network:"testnet",type:"p2pkh"};case YX.legacy.testnet.p2sh:return{format:"legacy",hash:j,network:"testnet",type:"p2sh"};case YX.bitpay.mainnet.p2pkh:return{format:"bitpay",hash:j,network:"mainnet",type:"p2pkh"};case YX.bitpay.mainnet.p2sh:return{format:"bitpay",hash:j,network:"mainnet",type:"p2sh"};default:return}}catch{return}}function y0(X){if(X.indexOf(":")!==-1)try{return w2(X)}catch{}else{let $=["bitcoincash","bchtest","bchreg"];for(let J of $)try{return w2(`${J}:${X}`)}catch{}}return}function w2(X){try{let{hash:$,prefix:J,type:j}=X2.decode(X);return{format:"cashaddr",hash:Array.prototype.slice.call($,0),network:J==="bitcoincash"?"mainnet":"testnet",type:j==="P2PKH"?"p2pkh":"p2sh"}}catch{return}}function v0(X){let $=YX.legacy[X.network][X.type],J=Buffer.alloc(1+X.hash.length);return J[0]=$,J.set(X.hash,1),g2.encode(J)}function S0(X){let $=X.network==="mainnet"?"bitcoincash":"bchtest",J=X.type==="p2pkh"?"P2PKH":"P2SH",j=new Uint8Array(X.hash);return X2.encode($,J,j)}var K2,m2,$2,g2,J2,YX;var l2=y(()=>{S2();K2=require("@noble/hashes/sha2.js"),m2=require("@scure/base"),$2=require("@swapkit/helpers"),g2=m2.createBase58check(K2.sha256);((J)=>{J.Mainnet="mainnet";J.Testnet="testnet"})(J2||={});YX={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}}});function w(X){let $=new Uint8Array(Buffer.from(X,"utf8"));return h2.Script.encode(["RETURN",$])}var x2,h2,w0=1000,cX=10,uX=2,o2=10,K0=41,m0=107,pX,oX,EX,NX=(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 x2.SwapKitError("toolbox_utxo_invalid_address",{address:X})},qX=({inputs:X,outputs:$,feeRate:J})=>{let j=X[0]&&"address"in X[0]&&X[0].address?NX(X[0].address):"P2PKH",Z=(J?X.filter((q)=>q.value>=oX["type"in q&&q.type?q.type:"P2PKH"]*Math.ceil(J)):X).reduce((q,U)=>q+s(U),0),Y=$?.reduce((q,U)=>q+RX(U),0)||EX[j],G=cX+Z+Y;return j==="P2WPKH"?Math.ceil(G+uX/4):G},s=(X)=>{if("type"in X&&X.type)return oX[X.type];if("address"in X&&X.address)return oX[NX(X.address)];return K0+m0},RX=(X,$)=>{if(X?.script)return o2+X.script.length+(X.script.length>=74?2:1);if($)return EX[$];if("address"in X&&X.address)return EX[NX(X.address)];return EX.P2PKH};var Z2=y(()=>{x2=require("@swapkit/helpers"),h2=require("@swapkit/utxo-signer");((J)=>{J.P2PKH="P2PKH";J.P2WPKH="P2WPKH"})(pX||={});oX={["P2PKH"]:148,["P2WPKH"]:68},EX={["P2PKH"]:34,["P2WPKH"]:31}});function MX(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 l({inputs:X,outputs:$,feeRate:J=1,chain:j=g.Chain.Bitcoin,changeAddress:Q="",sweep:Z=!1}){let Y=MX(j),G=X.filter((b)=>{let P=s(b)*J;return Z?b.value>Math.max(P,Y):P<=b.value});if(Z){let b=Math.ceil(J*qX({inputs:G,outputs:$})),P=G.reduce((K,c)=>K+c.value,0),$X=P-b;if($X<=Y)throw new g.SwapKitError("toolbox_sweep_amount_too_low",{available:P,dustThreshold:Y,fee:b});let JX=$.findIndex((K)=>("address"in K)&&K.address);if(JX===-1)throw new g.SwapKitError("toolbox_utxo_invalid_params",{error:"Sweep requires a recipient output"});return{fee:b,inputs:G,outputs:$.map((K,c)=>c===JX?{...K,value:$X}:K)}}let U=(X[0]&&"address"in X[0]&&X[0].address?NX(X[0].address):"P2PKH")==="P2WPKH"?Math.ceil(uX/4):0,_=cX+U+$.reduce((b,P)=>b+RX(P),0),z=$.reduce((b,P)=>b+P.value,0),B=_*J,N=0,V=[];for(let b of G){let P=s(b),$X=J*P;B+=$X,N+=b.value,V.push(b);let JX=B+z;if(N<JX)continue;let K=N-JX,c=J*RX({address:Q,value:0});if(K>c){let wX=c+B,KX=N-(z+Math.ceil(wX));if(KX>Math.max(s({value:0})*J,MX(j)))return{fee:Math.ceil(wX),inputs:V,outputs:$.concat({address:Q,value:KX})}}return{fee:Math.ceil(B),inputs:V,outputs:$}}return{fee:Math.ceil(J*qX({inputs:X,outputs:$}))}}var g;var c2=y(()=>{Z2();g=require("@swapkit/helpers")});var DX=y(()=>{v2();l2();c2();Z2()});function LX(X){return X.replace(/(bchtest:|bitcoincash:)/,"")}function a(X){let $=LX(X);return j2($)&&Q2($)==="mainnet"}var zX;var AX=y(()=>{DX();zX=require("@swapkit/utxo-signer")});function q2({address:X,chain:$}){return Y2.match($).with(W.Chain.BitcoinCash,()=>a(X)).with(W.Chain.Zcash,()=>zX.validateZcashAddress(X)).otherwise(()=>{try{return C.Address(v($)).decode(X),!0}catch{return!1}})}function v(X){return Y2.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 g0({phrase:X,derivationPath:$,network:J,seed:j}){let Q=j??rX.mnemonicToSeedSync(X),Y=G2.HDKey.fromMasterSeed(Q,J.bip32).derive($);if(!Y.privateKey)throw new W.SwapKitError("toolbox_utxo_invalid_params",{error:"Could not derive private key from phrase"});return Y.privateKey}function u2(X){return p2.secp256k1.getPublicKey(X,!0)}function vX({publicKey:X,chain:$,network:J}){if($===W.Chain.BitcoinCash){let Z=C.p2pkh(X,J);if(!Z.hash)throw new W.SwapKitError("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return C.encodeCashAddr({hash:Z.hash,prefix:C.CashAddrPrefix.MAINNET,type:C.CashAddrType.P2PKH}).replace(/^bitcoincash:/,"")}let Q=!yX.includes($)?C.p2wpkh(X,J):C.p2pkh(X,J);if(!Q.address)throw new W.SwapKitError("toolbox_utxo_invalid_address",{error:"Could not derive address"});return Q.address}function CX({phrase:X,derivationPath:$,chain:J,wif:j,seed:Q}){let Z=v(J);if(j){let q=C.WIF(Z).decode(j),U=u2(q);return{privateKey:q,publicKey:U}}if(!X)throw new W.SwapKitError("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let Y=$||W.derivationPathToString(W.NetworkDerivationPath[J]),G=g0({derivationPath:Y,network:Z,phrase:X,seed:Q}),L=u2(G);return{privateKey:G,publicKey:L}}function l0(X,$){return C.WIF(v($)).encode(X)}function x0({phrase:X,derivationPath:$,chain:J,seed:j}){let Q=$.split("/");if(Q.length<4)throw new W.SwapKitError("toolbox_utxo_invalid_params",{error:`Derivation path must have at least 4 levels (got ${Q.length}): ${$}`});let Z=v(J),Y=j??rX.mnemonicToSeedSync(X),G=G2.HDKey.fromMasterSeed(Y,Z.bip32),L=Q.slice(0,4).join("/");return G.derive(L)}function e({inputs:X,outputs:$,chain:J,tx:j,sender:Q,compiledMemo:Z,enableRBF:Y=!1}){let G=v(J),L=!yX.includes(J),q=Y?C.RBF_SEQUENCE:void 0,U=new Set;for(let _ of X){let z=`${_.hash}:${_.index}`;if(U.has(z))throw new W.SwapKitError("toolbox_utxo_invalid_params",{error:"Duplicate input detected"});U.add(z);let B=typeof _.hash==="string"?t.hex.decode(_.hash):_.hash;if(L&&_.witnessUtxo)j.addInput({index:_.index,sequence:q,txid:B,witnessUtxo:{amount:BigInt(_.witnessUtxo.value),script:_.witnessUtxo.script}});else if(_.txHex)j.addInput({index:_.index,nonWitnessUtxo:t.hex.decode(_.txHex),sequence:q,txid:B,...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 _ of $){let z="address"in _&&_.address?_.address:Q;if(J===W.Chain.BitcoinCash)z=d(z);if(_.script){if(Z)j.addOutput({amount:0n,script:Z})}else j.addOutputAddress(z,BigInt(_.value),G)}return{inputs:X,tx:j}}async function HX(X){let $=await E(X).getSuggestedTxFee();return{[W.FeeOption.Average]:$,[W.FeeOption.Fast]:W.applyFeeMultiplier($,W.FeeOption.Fast),[W.FeeOption.Fastest]:W.applyFeeMultiplier($,W.FeeOption.Fastest)}}async function d2({assetValue:X,recipient:$,memo:J,sender:j,sweep:Q,fetchTxHex:Z=!1}){let Y=X.chain,G=Z||yX.includes(Y),L=X.getBaseValue("number"),q=Q?void 0:Math.ceil(L+(await HX(Y))[W.FeeOption.Fastest]*5000);return{inputs:await E(Y).getUtxos({address:j,fetchTxHex:G,targetValue:q}),outputs:[{address:$,value:Q?0:L},...J?[{address:"",script:w(J),value:0}]:[]]}}async function r2({assetValue:X,recipient:$,memo:J,feeRate:j,sender:Q,fetchTxHex:Z=!1,enableRBF:Y=!1,sweep:G}){let L=X.chain,q=J?w(J):null,U=await d2({assetValue:X,fetchTxHex:Z,memo:J,recipient:$,sender:Q,sweep:G}),{inputs:_,outputs:z}=l({...U,chain:L,feeRate:j,sweep:G});if(!(_&&z))throw new W.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:Q});let B=new C.Transaction({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!q,version:1}),{inputs:N,tx:V}=e({chain:L,compiledMemo:q,enableRBF:Y,inputs:_,outputs:z,sender:Q,tx:B});return{inputs:N,tx:V,utxos:U.inputs}}async function n2({assetValue:X,feeOptionKey:$=W.FeeOption.Fast,feeRate:J,memo:j,sender:Q,recipient:Z,sweep:Y}){let G=X.chain,L=await d2({assetValue:X,memo:j,recipient:Z,sender:Q,sweep:Y}),q=J?Math.floor(J):(await HX(G))[$];return l({...L,chain:G,feeRate:q,sweep:Y})}function h0(X){return async function({from:J,memo:j,feeRate:Q,feeOptionKey:Z=W.FeeOption.Fast,recipient:Y=J,recipients:G=1}){let L=Q??(await HX(X))[Z],U=(await E(X).getUtxos({address:J,fetchTxHex:!1})).filter((V)=>V.value>Math.max(MX(X),s(V)*L));if(!U.length)return W.AssetValue.from({chain:X});let _=typeof G==="number"?Math.max(G,1):G.length,z=typeof G==="number"||_===0?Array.from({length:_||1},()=>({address:Y,value:0})):[...G];if(j)z.push({address:J,script:w(j),value:0});let{outputs:B}=l({chain:X,feeRate:L,inputs:U,outputs:z,sweep:!0}),N=B?.[0]?.value??0;return W.AssetValue.from({chain:X,value:BigInt(N)})}}function o0(X){return async function(J){let{fee:j}=await n2(J);return W.AssetValue.from({chain:X,value:W.SwapKitNumber.fromBigInt(BigInt(j),8).getValue("string")})}}function c0({chain:X,phrase:$,derivationPath:J,seed:j}){let Q=v(X),{privateKey:Z,publicKey:Y}=CX({chain:X,derivationPath:J,phrase:$,seed:j}),G=X===W.Chain.BitcoinCash?[C.BCHSigHash.ALL]:[C.SigHash.ALL];return{getAddress:()=>vX({chain:X,network:Q,publicKey:Y}),privateKey:Z,publicKey:Y,signTransaction:(L)=>{return L.sign(Z,G),L}}}function u0(X,$){return async function({memo:j,recipient:Q,feeOptionKey:Z,feeRate:Y,assetValue:G,enableRBF:L=!1,sweep:q}){let U=await $?.getAddress();if(!($&&U))throw new W.SwapKitError("toolbox_utxo_no_signer");if(!Q)throw new W.SwapKitError("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});W.warnOnce({condition:L&&!dX.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&&dX.includes(X),z=Y||(await HX(X))[Z||W.FeeOption.Fast],{tx:B}=await r2({assetValue:G,enableRBF:_,feeRate:z,memo:j,recipient:Q,sender:U,sweep:q}),N=await $.signTransaction(B);return N.finalize(),E(X).broadcastTx(t.hex.encode(N.extract()))}}function L2(X){return($)=>q2({address:$,chain:X})}function z2(X){let $=v(X);return function(j){if(!j)throw new W.SwapKitError("toolbox_utxo_invalid_params",{error:"Keys must be provided"});return vX({chain:X,network:$,publicKey:j.publicKey})}}function XX({chain:X,...$}){let J="phrase"in $?$.phrase:void 0,j="index"in $?$.index||0:0,Q=J?rX.mnemonicToSeedSync(J):void 0,Z="derivationPath"in $&&$.derivationPath?$.derivationPath:W.updateDerivationPath(W.NetworkDerivationPath[X],{index:j}),Y=W.derivationPathToString(Z),G=J?c0({chain:X,derivationPath:Y,phrase:J,seed:Q}):void 0,L="signer"in $?$.signer:void 0,q=G||L,U=J?CX({chain:X,derivationPath:Y,phrase:J,seed:Q}):void 0;function _(){if(q)return q.getAddress();return Promise.resolve(void 0)}function z(M){if(!J)return;let H=i({accountIndex:M,chain:X,derivationPath:Z});return x0({chain:X,derivationPath:W.derivationPathToString(H),phrase:J,seed:Q})}let B=z();function N(){if(!B)return;return B.publicExtendedKey}function V({accountIndex:M}={}){let H=M===void 0?B:z(M);if(!H)return;let k=i({accountIndex:M,chain:X,derivationPath:Z});return{accountIndex:ZX(k),path:W.derivationPathToString(k),xpub:H.publicExtendedKey}}function b({accountIndex:M,index:H,change:k=!1}){let I=M===void 0?B:z(M);if(!I)return;let T=_X({accountIndex:M,chain:X,change:k,derivationPath:Z,index:H}),m=v(X),h=I.deriveChild(Number(k)).deriveChild(H);if(!h.publicKey)throw new W.SwapKitError("toolbox_utxo_invalid_params",{error:"Could not derive public key"});let S=vX({chain:X,network:m,publicKey:h.publicKey}),n=t.hex.encode(h.publicKey);return{accountIndex:ZX(T),address:S,change:k,index:H,path:W.derivationPathToString(T),pubkey:n}}async function P(M){if(!dX.includes(X))return{reason:`RBF is not supported on ${X}`,supported:!1};let H=await E(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 $X({txid:M,newFeeRate:H,recipient:k,memo:I}){if(!dX.includes(X))throw new W.SwapKitError("toolbox_utxo_rbf_not_supported",{chain:X});let T=await E(X).getTransactionDetails(M);if(!T.isRBF)throw new W.SwapKitError("toolbox_utxo_tx_not_replaceable",{txid:M});if(T.confirmed)throw new W.SwapKitError("toolbox_utxo_tx_already_confirmed",{blockId:T.blockId,txid:M});let m=T.inputs.reduce((A,u)=>A+u.value,0),S=T.outputs.find((A)=>A.recipient===k)?.value||0;if(S===0)throw new W.SwapKitError("toolbox_utxo_invalid_params",{error:"Could not determine send amount from original transaction"});let n=await Promise.all(T.inputs.map(async(A)=>{let u=await E(X).getRawTx(A.transaction_hash);return{hash:A.transaction_hash,index:A.index,txHex:u,value:A.value,witnessUtxo:void 0}})),VX=I?w(I):null,mX=qX({feeRate:H,inputs:n.map((A)=>({...A,type:"P2WPKH"})),outputs:[{address:k,value:S}]}),jX=Math.ceil(mX*H);if(jX<=T.fee)throw new W.SwapKitError("toolbox_utxo_rbf_fee_too_low",{newFee:jX,originalFee:T.fee});let WX=jX-T.fee,UX=S-WX;if(UX<=0)throw new W.SwapKitError("toolbox_utxo_rbf_insufficient_change");let QX=new C.Transaction({allowLegacyWitnessUtxo:!0,version:1}),gX=[{address:k,value:UX},...I?[{address:"",script:w(I),value:0}]:[]],lX=m-UX-jX,kX=await _();if(lX>MX(X)&&kX)gX.push({address:kX,value:lX});return e({chain:X,compiledMemo:VX,inputs:n,outputs:gX,sender:kX||k,tx:QX}),{feeDelta:WX,newFee:jX,originalFee:T.fee,tx:QX}}async function JX({txid:M,newFeeRate:H,recipient:k,memo:I}){let{tx:T,originalFee:m,newFee:h}=await $X({memo:I,newFeeRate:H,recipient:k,txid:M}),S=await sX(T);S.finalize();let n=await E(X).broadcastTx(t.hex.encode(S.extract()));return{newFee:h,originalFee:m,txid:n}}function K({accountIndex:M,index:H,change:k=!1}){x("index",H);let I=M===void 0?B:z(M);if(!I)return;return I.deriveChild(Number(k)).deriveChild(H).privateKey||void 0}function c({tx:M,inputDerivations:H}){if(!B)throw new W.SwapKitError("toolbox_utxo_no_signer");let k=X===W.Chain.BitcoinCash?[C.BCHSigHash.ALL]:[C.SigHash.ALL];for(let I=0;I<H.length;I++){let T=H[I];if(!T)continue;let{derivationIndex:m,isChange:h}=T,S=K({change:h,index:m});if(!S)throw new W.SwapKitError("toolbox_utxo_invalid_params",{error:`Could not derive private key for input ${I} at index ${m}`});M.signIdx(S,I,k)}return M}async function wX({utxos:M,recipient:H,assetValue:k,memo:I,feeRate:T,feeOptionKey:m,changeAddress:h,sweep:S}){if(S)throw new W.SwapKitError("toolbox_utxo_invalid_params",{error:"Sweep is not supported for transfers from multiple addresses"});if(!B)throw new W.SwapKitError("toolbox_utxo_no_signer");let n=T||(await HX(X))[m||W.FeeOption.Fast],VX=I?w(I):null,mX=[{address:H,value:k.getBaseValue("number")}];if(VX)mX.push({address:"",script:VX,value:0});let jX=M.map(({hash:A,index:u,value:xX,txHex:Q0,witnessUtxo:aX})=>({hash:A,index:u,txHex:Q0,value:xX,witnessUtxo:aX?{script:aX.script,value:aX.value}:void 0})),{inputs:WX,outputs:UX}=l({chain:X,feeRate:n,inputs:jX,outputs:mX});if(!(WX&&UX))throw new W.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:k,sender:"multiple addresses"});let QX=new C.Transaction({allowLegacyWitnessUtxo:!0,version:1}),gX=M[0]?.address,lX=h||await _()||gX||H;e({chain:X,compiledMemo:VX,inputs:WX,outputs:UX,sender:lX,tx:QX});let kX=WX.map((A)=>{let u=M.find((xX)=>xX.hash===A.hash&&xX.index===A.index);return u?{derivationIndex:u.derivationIndex,isChange:u.isChange}:{derivationIndex:0,isChange:!1}});return c({inputDerivations:kX,tx:QX}),QX.finalize(),E(X).broadcastTx(t.hex.encode(QX.extract()))}function KX({address:M,gapLimit:H=20}){if(!B)return;for(let k=0;k<H;k++){let I=b({change:!1,index:k}),T=b({change:!0,index:k}),m=I?.address===M?!1:T?.address===M;if(I?.address===M||T?.address===M)return{change:m,index:k}}return}function sX(M){if(!q)throw new W.SwapKitError("toolbox_utxo_no_signer");return q.signTransaction(M)}async function j0(M){let H=await sX(M);return H.finalize(),await E(X).broadcastTx(t.hex.encode(H.extract()))}return{accumulative:l,broadcastTx:(M)=>E(X).broadcastTx(M),bumpFee:JX,calculateTxSize:qX,createKeysForPath:(M)=>CX({...M,chain:X}),createReplacementTransaction:$X,createTransaction:r2,deriveAddressAtIndex:b,derivePrivateKeyAtIndex:K,estimateMaxSendableAmount:h0(X),estimateTransactionFee:o0(X),getAddress:_,getAddressFromKeys:z2(X),getBalance:P2(X),getExtendedPublicKey:N,getExtendedPublicKeyInfo:V,getFeeRates:()=>HX(X),getInputsOutputsFee:n2,getNetworkForChain:()=>v(X),getPrivateKeyFromMnemonic:(M)=>l0(CX({...M,chain:X}).privateKey,X),isRBFEnabled:P,keys:U,resolveDerivationIndex:KX,signAndBroadcastTransaction:j0,signTransaction:sX,signTransactionWithMultipleKeys:c,transfer:u0(X,q),transferFromMultipleAddresses:wX,validateAddress:L2(X)}}var p2,t,G2,rX,W,C,Y2,yX,dX;var OX=y(()=>{eX();IX();DX();AX();p2=require("@noble/curves/secp256k1.js"),t=require("@scure/base"),G2=require("@scure/bip32"),rX=require("@scure/bip39"),W=require("@swapkit/helpers"),C=require("@swapkit/utxo-signer"),Y2=require("ts-pattern"),yX=[W.Chain.Dash,W.Chain.Dogecoin,W.Chain.Zcash,W.Chain.BitcoinCash],dX=[W.Chain.Bitcoin]});function SX(X){return LX(FX(X))}function p0(X){let $=v(o);function J(Q){return Q.sign(X.privateKey,[R.BCHSigHash.ALL]),Q}function j(){let Q=R.p2pkh(X.publicKey,$);if(!Q.hash)throw new F.SwapKitError("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});let Z=R.encodeCashAddr({hash:Q.hash,prefix:R.CashAddrPrefix.MAINNET,type:R.CashAddrType.P2PKH});return Promise.resolve(Z.replace(/^bitcoincash:/,""))}return{getAddress:j,signTransaction:J}}function U2(X){let $="phrase"in X?X.phrase:void 0,J="index"in X?X.index||0:0,j=F.derivationPathToString("derivationPath"in X&&X.derivationPath?X.derivationPath:F.updateDerivationPath(F.NetworkDerivationPath[o],{index:J})),Q=$?CX({chain:o,derivationPath:j,phrase:$}):void 0,Z=Q?p0(Q):("signer"in X)?X.signer:void 0;function Y(){return Promise.resolve(Z?.getAddress())}let{getBalance:G,getFeeRates:L,broadcastTx:q,...U}=XX({chain:o});function _(N,V=!0){return G(LX(FX(N)))}function z(N){if(!Z)throw new F.SwapKitError("toolbox_utxo_no_signer");return Z.signTransaction(N)}async function B(N){let V=await z(N);return V.finalize(),await q(W2.hex.encode(V.extract()))}return{...U,broadcastTx:q,buildTx:r0,createTransaction:i2,getAddress:Y,getAddressFromKeys:n0,getBalance:_,getFeeRates:L,signAndBroadcastTransaction:B,signTransaction:z,stripPrefix:LX,stripToCashAddress:SX,transfer:d0({broadcastTx:q,getFeeRates:L,signer:Z}),validateAddress:a}}async function i2({assetValue:X,recipient:$,memo:J,feeRate:j,sender:Q,sweep:Z}){if(!a($))throw new F.SwapKitError("toolbox_utxo_invalid_address",{address:$});let Y=Math.ceil(X.getBaseValue("number")+j*7500),G=await E(o).getUtxos({address:SX(Q),fetchTxHex:!0,targetValue:Z?void 0:Y}),L=J?w(J):null,q=[],U=d($);if(q.push({address:U,value:Z?0:X.getBaseValue("number")}),L)q.push({script:L,value:0});let{inputs:_,outputs:z}=l({chain:o,feeRate:j,inputs:G,outputs:q,sweep:Z});if(!(_&&z))throw new F.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:Q});let B=new R.Transaction({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!L,version:1}),N=d(Q),{inputs:V,tx:b}=e({chain:o,compiledMemo:L,inputs:_,outputs:z.map((P)=>("address"in P)&&P.address?{...P,address:d(P.address)}:P),sender:N,tx:B});return{inputs:V,tx:b,utxos:_}}function d0({broadcastTx:X,getFeeRates:$,signer:J}){return async function({recipient:Q,assetValue:Z,feeOptionKey:Y=F.FeeOption.Fast,sweep:G,...L}){let q=await J?.getAddress();if(!(J&&q))throw new F.SwapKitError("toolbox_utxo_no_signer");if(!Q)throw new F.SwapKitError("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let U=L.feeRate||(await $())[Y],{tx:_}=await i2({...L,assetValue:Z,feeRate:U,recipient:Q,sender:q,sweep:G}),z=await J.signTransaction(_);return z.finalize(),X(W2.hex.encode(z.extract()))}}async function r0({assetValue:X,recipient:$,memo:J,feeRate:j,sender:Q}){let Z=FX($);if(!a(Z))throw new F.SwapKitError("toolbox_utxo_invalid_address",{address:Z});let Y=Math.ceil(X.getBaseValue("number")+j*7500),G=await E(o).getUtxos({address:SX(Q),fetchTxHex:!0,targetValue:Y}),L=Number(j.toFixed(0)),q=J?w(J):null,U=[];if(U.push({address:d($),value:X.getBaseValue("number")}),q)U.push({script:q,value:0});let{inputs:_,outputs:z}=l({chain:o,feeRate:L,inputs:G,outputs:U});if(!(_&&z))throw new F.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:Q});let B=new R.Transaction({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!q,version:1}),{inputs:N,tx:V}=e({chain:o,compiledMemo:q,inputs:_,outputs:z,sender:d(Q),tx:B});return{inputs:N,tx:V,utxos:G}}function n0(X){let $=R.NETWORKS.bitcoinCash,J=R.p2pkh(X.publicKey,$);if(!J.hash)throw new F.SwapKitError("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return R.encodeCashAddr({hash:J.hash,prefix:R.CashAddrPrefix.MAINNET,type:R.CashAddrType.P2PKH}).replace(/^bitcoincash:/,"")}var W2,F,R,o;var nX=y(()=>{DX();OX();AX();W2=require("@scure/base"),F=require("@swapkit/helpers"),R=require("@swapkit/utxo-signer"),o=F.Chain.BitcoinCash});function N2(){let{isStagenet:X}=f.SKConfig.get("envs");return X?O.ZCASH_TEST_NETWORK:O.ZCASH_NETWORK}function s0(X){return i0.encode(X)}function a0({phrase:X,derivationPath:$}){let J=B2.mnemonicToSeedSync(X),Q=_2.HDKey.fromMasterSeed(J).derive($);if(!Q.privateKey||!Q.publicKey)throw new f.SwapKitError("toolbox_utxo_invalid_params");let{privateKey:Z,publicKey:Y}=Q,G=O.utils.hash160(Y),{isStagenet:L}=f.SKConfig.get("envs"),q=L?new Uint8Array([29,37]):new Uint8Array([28,184]),U=new Uint8Array(q.length+G.length);U.set(q,0),U.set(G,q.length);let _=s0(U);return{getAddress:()=>Promise.resolve(_),signTransaction:(z)=>{if(z instanceof O.ZcashPSBT){let B=z.toPCZT();return B.signAllInputs(Z,Y,O.ZcashSigHash.ALL),B.finalizeAllInputs(),Promise.resolve(B.extract())}if(z instanceof O.PCZT)return z.signAllInputs(Z,Y,O.ZcashSigHash.ALL),z.finalizeAllInputs(),Promise.resolve(z.extract());return z.signAllInputs(Z,Y,O.ZcashSigHash.ALL),Promise.resolve(z)}}}function t0({inputs:X,outputs:$,tx:J,sender:j,compiledMemo:Q}){let Z=N2();for(let Y of X){let G=O.Address(Z).decode(j),L=O.OutScript.encode(G);J.addInput({index:Y.index,script:L,sequence:4294967295,txid:iX.hex.decode(Y.hash),value:BigInt(Y.value)})}for(let Y of $){let G="address"in Y&&Y.address?Y.address:j,L=Y.script;if(L&&!Q)continue;if(L&&Q)J.addOutput({amount:0n,script:Q});else J.addOutputAddress(G,BigInt(Y.value),Z)}return{inputs:X,tx:J}}async function e0(){let{isStagenet:X}=f.SKConfig.get("envs");if(X)return O.ZcashConsensusBranchId.IRONWOOD;try{let $=await E(f.Chain.Zcash).getBlockHeight();return O.getZcashConsensusBranchId($+1)}catch{return O.ZcashConsensusBranchId.IRONWOOD}}async function s2(X){let{assetValue:$,recipient:J,memo:j,feeRate:Q,sender:Z,fetchTxHex:Y,sweep:G}=X,L=N2();if(!O.isTransparentZcashAddress(Z,L))throw new f.SwapKitError("toolbox_utxo_invalid_address",{address:Z});if(!O.isTransparentZcashAddress(J,L))throw new f.SwapKitError("toolbox_utxo_invalid_address",{address:J,error:"Zcash transaction creation currently supports transparent addresses only"});let q=j?w(j):null,U=await E(f.Chain.Zcash).getUtxos({address:Z,fetchTxHex:Y!==!1}),_=[{address:J,value:G?0:Number($.getBaseValue("string"))},...q?[{script:q,value:0}]:[]],{inputs:z,outputs:B}=l({chain:f.Chain.Zcash,changeAddress:Z,feeRate:Q,inputs:U,outputs:_,sweep:G});if(!(z&&B))throw new f.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:$,sender:Z});let N=O.createZcashTransaction({consensusBranchId:await e0(),expiryHeight:0,lockTime:0,version:4,versionGroupId:O.ZcashVersionGroupId.SAPLING}),{tx:V,inputs:b}=t0({compiledMemo:q,inputs:z,outputs:B,sender:Z,tx:N});return{inputs:b,outputs:B,tx:V}}function M2(X){let $=bX.match(X).with({signer:bX.P.not(bX.P.nullish)},({signer:L})=>L).with({phrase:bX.P.string},({phrase:L,derivationPath:q,index:U=0})=>{let _=q||f.NetworkDerivationPath[f.Chain.Zcash]||[44,133,0,0,0],z=f.updateDerivationPath(_,{index:U}),B=f.derivationPathToString(z);return a0({derivationPath:B,phrase:L})}).otherwise(()=>{return}),J=XX({chain:f.Chain.Zcash,signer:$});async function j(L){if(!$)throw new f.SwapKitError("toolbox_utxo_no_signer");return await $.signTransaction(L)}async function Q(L){let q=await j(L);return J.broadcastTx(q.toHex())}async function Z({recipient:L,assetValue:q,feeOptionKey:U=f.FeeOption.Fast,sweep:_,...z}){let B=await $?.getAddress();if(!($&&B))throw new f.SwapKitError("toolbox_utxo_no_signer");let N=z.feeRate||(await J.getFeeRates())[U],{tx:V}=await s2({...z,assetValue:q,feeRate:N,recipient:L,sender:B,sweep:_}),P=(await $.signTransaction(V)).toHex();return J.broadcastTx(P)}function Y({phrase:L,derivationPath:q="m/44'/133'/0'/0/0"}){let U=B2.mnemonicToSeedSync(L),z=_2.HDKey.fromMasterSeed(U).derive(q);if(!z.privateKey||!z.publicKey)throw new f.SwapKitError("toolbox_utxo_invalid_params");return{privateKey:z.privateKey,publicKey:z.publicKey}}function G({phrase:L,derivationPath:q="m/44'/133'/0'/0/0"}){let U=Y({derivationPath:q,phrase:L}),_=N2();return O.WIF(_).encode(U.privateKey)}return{...J,createKeysForPath:Y,createTransaction:s2,getPrivateKeyFromMnemonic:G,signAndBroadcastTransaction:Q,signTransaction:j,transfer:Z,validateAddress:zX.validateZcashAddress}}var iX,_2,B2,f,O,bX,i0;var D2=y(()=>{DX();OX();AX();iX=require("@scure/base"),_2=require("@scure/bip32"),B2=require("@scure/bip39"),f=require("@swapkit/helpers"),O=require("@swapkit/utxo-signer"),bX=require("ts-pattern");i0=iX.createBase58check(O.utils.sha256)});function X0({xpub:X,chain:$,count:J,startIndex:j=0,accountIndex:Q}){if(x("count",J),J<1)throw RangeError("count must be at least 1");x("startIndex",j);let Z=v($),Y=t2.HDKey.fromExtendedKey(X,Z.bip32),G=i({accountIndex:Q,chain:$}),L=ZX(G),q=[];for(let U of[!1,!0]){let _=Y.deriveChild(Number(U));for(let z=0;z<J;z++){let B=j+z,N=_.deriveChild(B);if(!N.publicKey)continue;let V=_X({accountIndex:Q,chain:$,change:U,index:B});q.push({accountIndex:L,address:vX({chain:$,network:Z,publicKey:N.publicKey}),change:U,index:B,path:e2.derivationPathToString(V),pubkey:a2.hex.encode(N.publicKey)})}}return q}var a2,t2,e2;var $0=y(()=>{IX();OX();a2=require("@scure/base"),t2=require("@scure/bip32"),e2=require("@swapkit/helpers")});function X1(X,$){switch(X){case r.Chain.BitcoinCash:return U2($||{});case r.Chain.Zcash:return M2($);case r.Chain.Bitcoin:case r.Chain.Dogecoin:case r.Chain.Litecoin:case r.Chain.Dash:return XX({chain:X,...$});default:throw new r.SwapKitError("toolbox_utxo_not_supported",{chain:X})}}var r;var J0=y(()=>{nX();OX();D2();IX();$0();nX();AX();r=require("@swapkit/helpers")});var $1={};_0($1,{validateZcashAddress:()=>zX.validateZcashAddress,validateUtxoAddress:()=>q2,validateBchAddress:()=>a,toLegacyAddress:()=>d,toCashAddress:()=>FX,stripToCashAddress:()=>SX,stripPrefix:()=>LX,nonSegwitChains:()=>yX,isValidAddress:()=>j2,getUtxoToolbox:()=>X1,getUtxoNetwork:()=>T0,getUtxoApi:()=>E,getUTXOAddressValidator:()=>L2,getUTXOAddressPath:()=>_X,getUTXOAccountPath:()=>i,getUTXOAccountIndexFromPath:()=>ZX,getScriptTypeForAddress:()=>NX,getOutputSize:()=>RX,getNetworkForChain:()=>v,getInputSize:()=>s,getDustThreshold:()=>MX,detectAddressNetwork:()=>Q2,deriveAddressesFromXpub:()=>X0,createZcashToolbox:()=>M2,createUTXOToolbox:()=>XX,createHDWalletHelpers:()=>f2,createCustomUtxoApi:()=>I0,createBCHToolbox:()=>U2,compileMemo:()=>w,calculateTxSize:()=>qX,assertDerivationIndex:()=>x,addressFromKeysGetter:()=>z2,addInputsAndOutputs:()=>e,accumulative:()=>l,UtxoNetwork:()=>J2,UTXOScriptType:()=>pX,TX_OVERHEAD:()=>cX,SEGWIT_MARKER_FLAG_WEIGHT:()=>uX,OutputSizes:()=>EX,OP_RETURN_OVERHEAD:()=>o2,MIN_TX_FEE:()=>w0,InputSizes:()=>oX});module.exports=z0($1);var J1=y(()=>{OX();IX();DX();J0();nX();D2()});J1();
@@ -1 +1 @@
1
- import{ea as J2,fa as N2}from"../../chunk-nvfkjbyq.js";import"../../chunk-xbdjxeqd.js";import{NetworkDerivationPath as p2}from"@swapkit/helpers";function w(X,$){if(!Number.isInteger($)||$<0)throw RangeError(`${X} must be a non-negative integer, got: ${$}`)}function n({accountIndex:X,chain:$,derivationPath:J}){if(X!==void 0)w("accountIndex",X);let j=[...J?.slice(0,3)??p2[$].slice(0,3)];if(X!==void 0)j[2]=X;return j}function NX({accountIndex:X,change:$=!1,chain:J,derivationPath:j,index:Q}){return w("index",Q),[...n({accountIndex:X,chain:J,derivationPath:j}),Number($),Q]}function ZX(X){return X[2]??0}function u2({deriveAddress:X,getBalance:$,getUtxos:J}){async function j(Y){let{accountIndex:q,count:G,startIndex:W=0,change:U=!1}=Y;if(w("count",G),G<1)throw RangeError("count must be at least 1");w("startIndex",W);let z=[];for(let _=0;_<G;_++){let B=await X({accountIndex:q,change:U,index:W+_});if(B)z.push(B)}return z}async function Q(Y){let{gapLimit:q=20,change:G=!1}=Y??{},W=[],U=0,z=0;while(U<q){let _=await X({change:G,index:z});if(!_)break;if((await $(_.address)).some((D)=>D.getValue("number")>0))W.push(_),U=0;else U++;z++}return W}async function Z(Y=20){let[q,G]=await Promise.all([Q({change:!1,gapLimit:Y}),Q({change:!0,gapLimit:Y})]),W=[...q,...G],U=await Promise.all(W.map(async(_)=>{let C=(await $(_.address)).reduce((D,V)=>D+V.getValue("number"),0);return{..._,balance:C}})),z=U.reduce((_,B)=>_+B.balance,0);return{addresses:U,total:z}}async function L(Y=20){let[q,G]=await Promise.all([Q({change:!1,gapLimit:Y}),Q({change:!0,gapLimit:Y})]),W=[...q,...G];return(await Promise.all(W.map(async(z)=>{return(await J(z.address)).map((B)=>({...B,address:z.address,derivationIndex:z.index,isChange:z.change}))}))).flat()}return{deriveAddresses:j,getAggregatedBalance:Z,getAggregatedUtxos:L,scanForAddresses:Q}}import{Chain as P,getRPCUrl as d2,RequestClient as FX,SKConfig as r2,SwapKitError as K,warnOnce as n2}from"@swapkit/helpers";import{NETWORKS as GX}from"@swapkit/utxo-signer";async function i2({chain:X,txHash:$}){let J=`${MX(X)}/push/transaction`,j=JSON.stringify({data:$});try{let Q=await FX.post(J,{body:j,headers:{"Content-Type":"application/json"}});if(Q.context.code!==200)throw new K("toolbox_utxo_broadcast_failed",{error:Q.context.error||"Transaction broadcast failed"});return Q.data?.transaction_hash||$}catch(Q){let Z=await d2(X);if(Z){let L=JSON.stringify({id:J2(),jsonrpc:"2.0",method:"sendrawtransaction",params:[$]}),Y=await FX.post(Z,{body:L,headers:{"Content-Type":"application/json"}});if(Y.error)throw new K("toolbox_utxo_broadcast_failed",{error:Y.error?.message});if(Y.result.includes('"code":-26'))throw new K("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return Y.result}throw Q}}function MX(X){return`https://api.blockchair.com/${s2(X)}`}function X2(X){switch(X){case P.Bitcoin:return 5;case P.Dogecoin:return 1e4;case P.Litecoin:return 1;case P.Zcash:return 1;default:return 2}}function s2(X){switch(X){case P.BitcoinCash:return"bitcoin-cash";case P.Litecoin:return"litecoin";case P.Dash:return"dash";case P.Dogecoin:return"dogecoin";case P.Zcash:return"zcash";case P.Polkadot:return"polkadot";default:return"bitcoin"}}async function a2(X){try{let{feePerKb:$}=await FX.get(`https://app.bitgo.com/api/v2/${X.toLowerCase()}/tx/fee`),J=$/1000;return Math.max(J,X2(X))}catch{return X2(X)}}async function EX(X,$){let J=await FX.get(`${X}${$?`${X.includes("?")?"&":"?"}key=${$}`:""}`);if(!J||J.context.code!==200)throw new K("toolbox_utxo_api_error",{error:`Failed to query ${X}`});return J.data}async function j2({address:X,chain:$,apiKey:J}){if(!X)throw new K("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await EX(`${MX($)}/dashboards/address/${X}?transaction_details=true`,J))[X]}catch{return{address:{balance:0,transaction_count:0},utxo:[]}}}async function t2({address:X,chain:$,apiKey:J}){return(await j2({address:X,apiKey:J,chain:$}))?.address.balance||0}async function Q2({chain:X,apiKey:$,txHash:J}){if(!J)throw new K("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await EX(`${MX(X)}/raw/transaction/${J}`,$))?.[J]?.raw_transaction||""}catch(j){let Q=j instanceof Error?j.message:String(j);return console.error(`Failed to fetch raw transaction: ${Q}`),""}}var e2=4294967294;async function X0({chain:X,apiKey:$,txHash:J}){if(!J)throw new K("toolbox_utxo_invalid_params",{error:"TxHash is required"});let Q=(await EX(`${MX(X)}/dashboards/transaction/${J}`,$))?.[J];if(!Q)throw new K("toolbox_utxo_tx_not_found",{txHash:J});let{transaction:Z,inputs:L,outputs:Y}=Q,q=L.map((W)=>W.spending_sequence),G=Z.is_rbf===!0||q.some((W)=>W<e2);return{blockId:Z.block_id,confirmed:Z.block_id!==-1,fee:Z.fee,inputs:L,isRBF:G,outputs:Y,sequences:q,size:Z.size,txid:Z.hash,weight:Z.weight}}async function $0({chain:X,address:$,apiKey:J,offset:j=0,limit:Q=30}){return(await EX(`${MX(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=${Q}&offset=${j}`,J)).map(({is_spent:q,script_hex:G,block_id:W,transaction_hash:U,index:z,value:_,spending_signature_hex:B})=>({hash:U,index:z,is_confirmed:W!==-1,is_spent:q,script_hex:G,txHex:B,value:_}))}function J0(X){return X.reduce(($,J)=>$+J.value,0)}function $2(X,$){let J=[...X].sort((j,Q)=>Q.value-j.value);if($){let j=[],Q=0;for(let Z of J)if(j.push(Z),Q+=Z.value,Q>=$)break;return j}return J}async function Z2({chain:X,address:$,apiKey:J,targetValue:j,accumulativeValue:Q=0,offset:Z=0,limit:L=30}){if(!$)throw new K("toolbox_utxo_invalid_params",{error:"Address is required"});try{let Y=await $0({address:$,apiKey:J,chain:X,limit:L,offset:Z,targetValue:j}),G=Y.length<L,W=Y.filter(({is_spent:D})=>!D),U=J0(W),z=Q+U,_=j&&z>=j;if(G||_)return $2(W,j);let B=await Z2({accumulativeValue:z,address:$,apiKey:J,chain:X,limit:L,offset:Z+L,targetValue:j}),C=[...W,...B];return $2(C,j)}catch(Y){let q=Y instanceof Error?Y.message:String(Y);return console.error(`Failed to fetch unspent UTXOs: ${q}`),[]}}async function j0({address:X,chain:$,apiKey:J,fetchTxHex:j=!0,targetValue:Q}){let Z=await Z2({address:X,apiKey:J,chain:$,targetValue:Q}),L=[];for(let{hash:Y,index:q,script_hex:G,value:W}of Z){let U;if(j)U=await Q2({apiKey:J,chain:$,txHash:Y});L.push({address:X,hash:Y,index:q,txHex:U,value:W,witnessUtxo:{script:Buffer.from(G,"hex"),value:W}})}return L}function f(X){let $=r2.get("apiKeys").blockchair||"";return n2({condition:!$,id:"no_blockchair_api_key_warning",warning:"No Blockchair API key found. Functionality will be limited."}),{broadcastTx:(J)=>i2({chain:X,txHash:J}),getAddressData:(J)=>j2({address:J,apiKey:$,chain:X}),getBalance:(J)=>t2({address:J,apiKey:$,chain:X}),getRawTx:(J)=>Q2({apiKey:$,chain:X,txHash:J}),getSuggestedTxFee:()=>a2(X),getTransactionDetails:(J)=>X0({apiKey:$,chain:X,txHash:J}),getUtxos:(J)=>j0({...J,apiKey:$,chain:X})}}function P1(X){return X}function T1(){return function($){switch($){case P.Bitcoin:return GX.bitcoin;case P.BitcoinCash:return GX.bitcoinCash;case P.Dash:return GX.dash;case P.Litecoin:return GX.litecoin;case P.Dogecoin:return GX.dogecoin;case P.Zcash:return GX.zcash;default:throw new K("toolbox_utxo_not_supported",{chain:$})}}}import{sha256 as z0}from"@noble/hashes/sha2.js";import{createBase58check as W0}from"@scure/base";import{SwapKitError as Y2}from"@swapkit/helpers";import{CashAddrType as RX,decodeCashAddr as Q0,encodeCashAddr as Z0}from"@swapkit/utxo-signer";var G0={P2PKH:RX.P2PKH,P2SH:RX.P2SH},Y0={[RX.P2PKH]:"P2PKH",[RX.P2SH]:"P2SH"};function q0(X,$,J){return Z0({hash:J,prefix:X,type:G0[$]})}function L0(X){let $=Q0(X),J=Y0[$.type];if(!J)throw Error(`Unknown CashAddr type: ${$.type}`);return{hash:$.hash,prefix:$.prefix,type:J}}var hX={decode:L0,encode:q0};var q2=W0(z0);var L2;((J)=>{J.Mainnet="mainnet";J.Testnet="testnet"})(L2||={});var i={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}};function z2(X){try{return AX(X),!0}catch{return!1}}function W2(X){return AX(X)?.network}function o(X){let $=AX(X);if($?.format==="legacy")return X;return B0($)}function yX(X){let $=AX(X);return N0($)}function AX(X){try{let $=U0(X);if($)return $}catch{}try{let $=_0(X);if($)return $}catch{}throw new Y2("toolbox_utxo_invalid_address",{address:X})}function U0(X){try{let $=q2.decode(X);if($.length!==21)throw new Y2("toolbox_utxo_invalid_address",{address:X});let J=$[0],j=Array.prototype.slice.call($,1);switch(J){case i.legacy.mainnet.p2pkh:return{format:"legacy",hash:j,network:"mainnet",type:"p2pkh"};case i.legacy.mainnet.p2sh:return{format:"legacy",hash:j,network:"mainnet",type:"p2sh"};case i.legacy.testnet.p2pkh:return{format:"legacy",hash:j,network:"testnet",type:"p2pkh"};case i.legacy.testnet.p2sh:return{format:"legacy",hash:j,network:"testnet",type:"p2sh"};case i.bitpay.mainnet.p2pkh:return{format:"bitpay",hash:j,network:"mainnet",type:"p2pkh"};case i.bitpay.mainnet.p2sh:return{format:"bitpay",hash:j,network:"mainnet",type:"p2sh"};default:return}}catch{return}}function _0(X){if(X.indexOf(":")!==-1)try{return G2(X)}catch{}else{let $=["bitcoincash","bchtest","bchreg"];for(let J of $)try{return G2(`${J}:${X}`)}catch{}}return}function G2(X){try{let{hash:$,prefix:J,type:j}=hX.decode(X);return{format:"cashaddr",hash:Array.prototype.slice.call($,0),network:J==="bitcoincash"?"mainnet":"testnet",type:j==="P2PKH"?"p2pkh":"p2sh"}}catch{return}}function B0(X){let $=i.legacy[X.network][X.type],J=Buffer.alloc(1+X.hash.length);return J[0]=$,J.set(X.hash,1),q2.encode(J)}function N0(X){let $=X.network==="mainnet"?"bitcoincash":"bchtest",J=X.type==="p2pkh"?"P2PKH":"P2SH",j=new Uint8Array(X.hash);return hX.encode($,J,j)}import{Chain as a,SwapKitError as dX}from"@swapkit/helpers";import{SwapKitError as M0}from"@swapkit/helpers";import{Script as D0}from"@swapkit/utxo-signer";var g1=1000,oX=10,pX=2,C0=10,H0=41,O0=107;function A(X){let $=new Uint8Array(Buffer.from(X,"utf8"));return D0.encode(["RETURN",$])}var uX;((J)=>{J.P2PKH="P2PKH";J.P2WPKH="P2WPKH"})(uX||={});var cX={["P2PKH"]:148,["P2WPKH"]:68},vX={["P2PKH"]:34,["P2WPKH"]:31},DX=(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})},YX=({inputs:X,outputs:$,feeRate:J})=>{let j=X[0]&&"address"in X[0]&&X[0].address?DX(X[0].address):"P2PKH",Z=(J?X.filter((G)=>G.value>=cX["type"in G&&G.type?G.type:"P2PKH"]*Math.ceil(J)):X).reduce((G,W)=>G+s(W),0),L=$?.reduce((G,W)=>G+SX(W),0)||vX[j],Y=oX+Z+L;return j==="P2WPKH"?Math.ceil(Y+pX/4):Y},s=(X)=>{if("type"in X&&X.type)return cX[X.type];if("address"in X&&X.address)return cX[DX(X.address)];return H0+O0},SX=(X,$)=>{if(X?.script)return C0+X.script.length+(X.script.length>=74?2:1);if($)return vX[$];if("address"in X&&X.address)return vX[DX(X.address)];return vX.P2PKH};function CX(X){switch(X){case a.Bitcoin:case a.BitcoinCash:return 550;case a.Dash:case a.Litecoin:return 5500;case a.Dogecoin:return 1e5;case a.Zcash:return 546;default:throw new dX("toolbox_utxo_not_supported",{chain:X})}}function v({inputs:X,outputs:$,feeRate:J=1,chain:j=a.Bitcoin,changeAddress:Q="",sweep:Z=!1}){let L=CX(j),Y=X.filter((D)=>{let V=s(D)*J;return Z?D.value>Math.max(V,L):V<=D.value});if(Z){let D=Math.ceil(J*YX({inputs:Y,outputs:$})),V=Y.reduce((R,l)=>R+l.value,0),p=V-D;if(p<=L)throw new dX("toolbox_sweep_amount_too_low",{available:V,dustThreshold:L,fee:D});let u=$.findIndex((R)=>("address"in R)&&R.address);if(u===-1)throw new dX("toolbox_utxo_invalid_params",{error:"Sweep requires a recipient output"});return{fee:D,inputs:Y,outputs:$.map((R,l)=>l===u?{...R,value:p}:R)}}let W=(X[0]&&"address"in X[0]&&X[0].address?DX(X[0].address):"P2PKH")==="P2WPKH"?Math.ceil(pX/4):0,U=oX+W+$.reduce((D,V)=>D+SX(V),0),z=$.reduce((D,V)=>D+V.value,0),_=U*J,B=0,C=[];for(let D of Y){let V=s(D),p=J*V;_+=p,B+=D.value,C.push(D);let u=_+z;if(B<u)continue;let R=B-u,l=J*SX({address:Q,value:0});if(R>l){let kX=l+_,VX=B-(z+Math.ceil(kX));if(VX>Math.max(s({value:0})*J,CX(j)))return{fee:Math.ceil(kX),inputs:C,outputs:$.concat({address:Q,value:VX})}}return{fee:Math.ceil(_),inputs:C,outputs:$}}return{fee:Math.ceil(J*YX({inputs:X,outputs:$}))}}import{Chain as UX,SwapKitError as O1}from"@swapkit/helpers";import{hex as T2}from"@scure/base";import{Chain as g0,derivationPathToString as l0,FeeOption as x0,NetworkDerivationPath as h0,SwapKitError as h,updateDerivationPath as c0}from"@swapkit/helpers";import{BCHSigHash as o0,CashAddrPrefix as F2,CashAddrType as E2,encodeCashAddr as R2,NETWORKS as p0,p2pkh as y2,Transaction as A2}from"@swapkit/utxo-signer";import{secp256k1 as b0}from"@noble/curves/secp256k1.js";import{hex as e}from"@scure/base";import{HDKey as M2}from"@scure/bip32";import{mnemonicToSeedSync as iX}from"@scure/bip39";import{AssetValue as rX,applyFeeMultiplier as U2,Chain as I,derivationPathToString as OX,FeeOption as m,NetworkDerivationPath as D2,SwapKitError as k,SwapKitNumber as k0,updateDerivationPath as V0,warnOnce as I0}from"@swapkit/helpers";import{Address as f0,BCHSigHash as sX,CashAddrPrefix as P0,CashAddrType as T0,encodeCashAddr as F0,NETWORKS as LX,p2pkh as _2,p2wpkh as E0,RBF_SEQUENCE as R0,SigHash as C2,Transaction as nX,WIF as H2}from"@swapkit/utxo-signer";import{match as O2}from"ts-pattern";import{validateZcashAddress as HX}from"@swapkit/utxo-signer";function qX(X){return X.replace(/(bchtest:|bitcoincash:)/,"")}function t(X){let $=qX(X);return z2($)&&W2($)==="mainnet"}var KX=[I.Dash,I.Dogecoin,I.Zcash,I.BitcoinCash],wX=[I.Bitcoin];function b2({address:X,chain:$}){return O2($).with(I.BitcoinCash,()=>t(X)).with(I.Zcash,()=>HX(X)).otherwise(()=>{try{return f0(F($)).decode(X),!0}catch{return!1}})}function F(X){return O2(X).with(I.Bitcoin,()=>LX.bitcoin).with(I.BitcoinCash,()=>LX.bitcoinCash).with(I.Dash,()=>LX.dash).with(I.Dogecoin,()=>LX.dogecoin).with(I.Litecoin,()=>LX.litecoin).with(I.Zcash,()=>LX.zcash).exhaustive()}function y0({phrase:X,derivationPath:$,network:J,seed:j}){let Q=j??iX(X),L=M2.fromMasterSeed(Q,J.bip32).derive($);if(!L.privateKey)throw new k("toolbox_utxo_invalid_params",{error:"Could not derive private key from phrase"});return L.privateKey}function B2(X){return b0.getPublicKey(X,!0)}function bX({publicKey:X,chain:$,network:J}){if($===I.BitcoinCash){let Z=_2(X,J);if(!Z.hash)throw new k("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return F0({hash:Z.hash,prefix:P0.MAINNET,type:T0.P2PKH}).replace(/^bitcoincash:/,"")}let Q=!KX.includes($)?E0(X,J):_2(X,J);if(!Q.address)throw new k("toolbox_utxo_invalid_address",{error:"Could not derive address"});return Q.address}function zX({phrase:X,derivationPath:$,chain:J,wif:j,seed:Q}){let Z=F(J);if(j){let G=H2(Z).decode(j),W=B2(G);return{privateKey:G,publicKey:W}}if(!X)throw new k("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let L=$||OX(D2[J]),Y=y0({derivationPath:L,network:Z,phrase:X,seed:Q}),q=B2(Y);return{privateKey:Y,publicKey:q}}function A0(X,$){return H2(F($)).encode(X)}function v0({phrase:X,derivationPath:$,chain:J,seed:j}){let Q=$.split("/");if(Q.length<4)throw new k("toolbox_utxo_invalid_params",{error:`Derivation path must have at least 4 levels (got ${Q.length}): ${$}`});let Z=F(J),L=j??iX(X),Y=M2.fromMasterSeed(L,Z.bip32),q=Q.slice(0,4).join("/");return Y.derive(q)}function XX({inputs:X,outputs:$,chain:J,tx:j,sender:Q,compiledMemo:Z,enableRBF:L=!1}){let Y=F(J),q=!KX.includes(J),G=L?R0:void 0,W=new Set;for(let U of X){let z=`${U.hash}:${U.index}`;if(W.has(z))throw new k("toolbox_utxo_invalid_params",{error:"Duplicate input detected"});W.add(z);let _=typeof U.hash==="string"?e.decode(U.hash):U.hash;if(q&&U.witnessUtxo)j.addInput({index:U.index,sequence:G,txid:_,witnessUtxo:{amount:BigInt(U.witnessUtxo.value),script:U.witnessUtxo.script}});else if(U.txHex)j.addInput({index:U.index,nonWitnessUtxo:e.decode(U.txHex),sequence:G,txid:_,...J===I.BitcoinCash?{sighashType:sX.ALL}:{}});else throw new k("toolbox_utxo_invalid_params",{error:"Input requires either witnessUtxo or txHex for non-segwit chains"})}for(let U of $){let z="address"in U&&U.address?U.address:Q;if(J===I.BitcoinCash)z=o(z);if(U.script){if(Z)j.addOutput({amount:0n,script:Z})}else j.addOutputAddress(z,BigInt(U.value),Y)}return{inputs:X,tx:j}}async function WX(X){let $=await f(X).getSuggestedTxFee();return{[m.Average]:$,[m.Fast]:U2($,m.Fast),[m.Fastest]:U2($,m.Fastest)}}async function k2({assetValue:X,recipient:$,memo:J,sender:j,sweep:Q,fetchTxHex:Z=!1}){let L=X.chain,Y=Z||KX.includes(L),q=X.getBaseValue("number"),G=Q?void 0:Math.ceil(q+(await WX(L))[m.Fastest]*5000);return{inputs:await f(L).getUtxos({address:j,fetchTxHex:Y,targetValue:G}),outputs:[{address:$,value:Q?0:q},...J?[{address:"",script:A(J),value:0}]:[]]}}async function V2({assetValue:X,recipient:$,memo:J,feeRate:j,sender:Q,fetchTxHex:Z=!1,enableRBF:L=!1,sweep:Y}){let q=X.chain,G=J?A(J):null,W=await k2({assetValue:X,fetchTxHex:Z,memo:J,recipient:$,sender:Q,sweep:Y}),{inputs:U,outputs:z}=v({...W,chain:q,feeRate:j,sweep:Y});if(!(U&&z))throw new k("toolbox_utxo_insufficient_balance",{assetValue:X,sender:Q});let _=new nX({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!G,version:1}),{inputs:B,tx:C}=XX({chain:q,compiledMemo:G,enableRBF:L,inputs:U,outputs:z,sender:Q,tx:_});return{inputs:B,tx:C,utxos:W.inputs}}async function I2({assetValue:X,feeOptionKey:$=m.Fast,feeRate:J,memo:j,sender:Q,recipient:Z,sweep:L}){let Y=X.chain,q=await k2({assetValue:X,memo:j,recipient:Z,sender:Q,sweep:L}),G=J?Math.floor(J):(await WX(Y))[$];return v({...q,chain:Y,feeRate:G,sweep:L})}function S0(X){return async function({from:J,memo:j,feeRate:Q,feeOptionKey:Z=m.Fast,recipient:L=J,recipients:Y=1}){let q=Q??(await WX(X))[Z],W=(await f(X).getUtxos({address:J,fetchTxHex:!1})).filter((C)=>C.value>Math.max(CX(X),s(C)*q));if(!W.length)return rX.from({chain:X});let U=typeof Y==="number"?Math.max(Y,1):Y.length,z=typeof Y==="number"||U===0?Array.from({length:U||1},()=>({address:L,value:0})):[...Y];if(j)z.push({address:J,script:A(j),value:0});let{outputs:_}=v({chain:X,feeRate:q,inputs:W,outputs:z,sweep:!0}),B=_?.[0]?.value??0;return rX.from({chain:X,value:BigInt(B)})}}function w0(X){return async function(J){let{fee:j}=await I2(J);return rX.from({chain:X,value:k0.fromBigInt(BigInt(j),8).getValue("string")})}}function K0({chain:X,phrase:$,derivationPath:J,seed:j}){let Q=F(X),{privateKey:Z,publicKey:L}=zX({chain:X,derivationPath:J,phrase:$,seed:j}),Y=X===I.BitcoinCash?[sX.ALL]:[C2.ALL];return{getAddress:()=>bX({chain:X,network:Q,publicKey:L}),privateKey:Z,publicKey:L,signTransaction:(q)=>{return q.sign(Z,Y),q}}}function m0(X,$){return async function({memo:j,recipient:Q,feeOptionKey:Z,feeRate:L,assetValue:Y,enableRBF:q=!1,sweep:G}){let W=await $?.getAddress();if(!($&&W))throw new k("toolbox_utxo_no_signer");if(!Q)throw new k("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});I0({condition:q&&!wX.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 U=q&&wX.includes(X),z=L||(await WX(X))[Z||m.Fast],{tx:_}=await V2({assetValue:Y,enableRBF:U,feeRate:z,memo:j,recipient:Q,sender:W,sweep:G}),B=await $.signTransaction(_);return B.finalize(),f(X).broadcastTx(e.encode(B.extract()))}}function f2(X){return($)=>b2({address:$,chain:X})}function P2(X){let $=F(X);return function(j){if(!j)throw new k("toolbox_utxo_invalid_params",{error:"Keys must be provided"});return bX({chain:X,network:$,publicKey:j.publicKey})}}function $X({chain:X,...$}){let J="phrase"in $?$.phrase:void 0,j="index"in $?$.index||0:0,Q=J?iX(J):void 0,Z="derivationPath"in $&&$.derivationPath?$.derivationPath:V0(D2[X],{index:j}),L=OX(Z),Y=J?K0({chain:X,derivationPath:L,phrase:J,seed:Q}):void 0,q="signer"in $?$.signer:void 0,G=Y||q,W=J?zX({chain:X,derivationPath:L,phrase:J,seed:Q}):void 0;function U(){if(G)return G.getAddress();return Promise.resolve(void 0)}function z(N){if(!J)return;let M=n({accountIndex:N,chain:X,derivationPath:Z});return v0({chain:X,derivationPath:OX(M),phrase:J,seed:Q})}let _=z();function B(){if(!_)return;return _.publicExtendedKey}function C({accountIndex:N}={}){let M=N===void 0?_:z(N);if(!M)return;let H=n({accountIndex:N,chain:X,derivationPath:Z});return{accountIndex:ZX(H),path:OX(H),xpub:M.publicExtendedKey}}function D({accountIndex:N,index:M,change:H=!1}){let O=N===void 0?_:z(N);if(!O)return;let b=NX({accountIndex:N,chain:X,change:H,derivationPath:Z,index:M}),y=F(X),S=O.deriveChild(Number(H)).deriveChild(M);if(!S.publicKey)throw new k("toolbox_utxo_invalid_params",{error:"Could not derive public key"});let E=bX({chain:X,network:y,publicKey:S.publicKey}),c=e.encode(S.publicKey);return{accountIndex:ZX(b),address:E,change:H,index:M,path:OX(b),pubkey:c}}async function V(N){if(!wX.includes(X))return{reason:`RBF is not supported on ${X}`,supported:!1};let M=await f(X).getTransactionDetails(N);return{canReplace:M.isRBF&&!M.confirmed,confirmed:M.confirmed,enabled:M.isRBF,fee:M.fee,sequences:M.sequences,supported:!0}}async function p({txid:N,newFeeRate:M,recipient:H,memo:O}){if(!wX.includes(X))throw new k("toolbox_utxo_rbf_not_supported",{chain:X});let b=await f(X).getTransactionDetails(N);if(!b.isRBF)throw new k("toolbox_utxo_tx_not_replaceable",{txid:N});if(b.confirmed)throw new k("toolbox_utxo_tx_already_confirmed",{blockId:b.blockId,txid:N});let y=b.inputs.reduce((T,x)=>T+x.value,0),E=b.outputs.find((T)=>T.recipient===H)?.value||0;if(E===0)throw new k("toolbox_utxo_invalid_params",{error:"Could not determine send amount from original transaction"});let c=await Promise.all(b.inputs.map(async(T)=>{let x=await f(X).getRawTx(T.transaction_hash);return{hash:T.transaction_hash,index:T.index,txHex:x,value:T.value,witnessUtxo:void 0}})),_X=O?A(O):null,IX=YX({feeRate:M,inputs:c.map((T)=>({...T,type:"P2WPKH"})),outputs:[{address:H,value:E}]}),d=Math.ceil(IX*M);if(d<=b.fee)throw new k("toolbox_utxo_rbf_fee_too_low",{newFee:d,originalFee:b.fee});let jX=d-b.fee,QX=E-jX;if(QX<=0)throw new k("toolbox_utxo_rbf_insufficient_change");let r=new nX({allowLegacyWitnessUtxo:!0,version:1}),fX=[{address:H,value:QX},...O?[{address:"",script:A(O),value:0}]:[]],PX=y-QX-d,BX=await U();if(PX>CX(X)&&BX)fX.push({address:BX,value:PX});return XX({chain:X,compiledMemo:_X,inputs:c,outputs:fX,sender:BX||H,tx:r}),{feeDelta:jX,newFee:d,originalFee:b.fee,tx:r}}async function u({txid:N,newFeeRate:M,recipient:H,memo:O}){let{tx:b,originalFee:y,newFee:S}=await p({memo:O,newFeeRate:M,recipient:H,txid:N}),E=await lX(b);E.finalize();let c=await f(X).broadcastTx(e.encode(E.extract()));return{newFee:S,originalFee:y,txid:c}}function R({accountIndex:N,index:M,change:H=!1}){w("index",M);let O=N===void 0?_:z(N);if(!O)return;return O.deriveChild(Number(H)).deriveChild(M).privateKey||void 0}function l({tx:N,inputDerivations:M}){if(!_)throw new k("toolbox_utxo_no_signer");let H=X===I.BitcoinCash?[sX.ALL]:[C2.ALL];for(let O=0;O<M.length;O++){let b=M[O];if(!b)continue;let{derivationIndex:y,isChange:S}=b,E=R({change:S,index:y});if(!E)throw new k("toolbox_utxo_invalid_params",{error:`Could not derive private key for input ${O} at index ${y}`});N.signIdx(E,O,H)}return N}async function kX({utxos:N,recipient:M,assetValue:H,memo:O,feeRate:b,feeOptionKey:y,changeAddress:S,sweep:E}){if(E)throw new k("toolbox_utxo_invalid_params",{error:"Sweep is not supported for transfers from multiple addresses"});if(!_)throw new k("toolbox_utxo_no_signer");let c=b||(await WX(X))[y||m.Fast],_X=O?A(O):null,IX=[{address:M,value:H.getBaseValue("number")}];if(_X)IX.push({address:"",script:_X,value:0});let d=N.map(({hash:T,index:x,value:TX,txHex:o2,witnessUtxo:xX})=>({hash:T,index:x,txHex:o2,value:TX,witnessUtxo:xX?{script:xX.script,value:xX.value}:void 0})),{inputs:jX,outputs:QX}=v({chain:X,feeRate:c,inputs:d,outputs:IX});if(!(jX&&QX))throw new k("toolbox_utxo_insufficient_balance",{assetValue:H,sender:"multiple addresses"});let r=new nX({allowLegacyWitnessUtxo:!0,version:1}),fX=N[0]?.address,PX=S||await U()||fX||M;XX({chain:X,compiledMemo:_X,inputs:jX,outputs:QX,sender:PX,tx:r});let BX=jX.map((T)=>{let x=N.find((TX)=>TX.hash===T.hash&&TX.index===T.index);return x?{derivationIndex:x.derivationIndex,isChange:x.isChange}:{derivationIndex:0,isChange:!1}});return l({inputDerivations:BX,tx:r}),r.finalize(),f(X).broadcastTx(e.encode(r.extract()))}function VX({address:N,gapLimit:M=20}){if(!_)return;for(let H=0;H<M;H++){let O=D({change:!1,index:H}),b=D({change:!0,index:H}),y=O?.address===N?!1:b?.address===N;if(O?.address===N||b?.address===N)return{change:y,index:H}}return}function lX(N){if(!G)throw new k("toolbox_utxo_no_signer");return G.signTransaction(N)}async function c2(N){let M=await lX(N);return M.finalize(),await f(X).broadcastTx(e.encode(M.extract()))}return{accumulative:v,broadcastTx:(N)=>f(X).broadcastTx(N),bumpFee:u,calculateTxSize:YX,createKeysForPath:(N)=>zX({...N,chain:X}),createReplacementTransaction:p,createTransaction:V2,deriveAddressAtIndex:D,derivePrivateKeyAtIndex:R,estimateMaxSendableAmount:S0(X),estimateTransactionFee:w0(X),getAddress:U,getAddressFromKeys:P2(X),getBalance:N2(X),getExtendedPublicKey:B,getExtendedPublicKeyInfo:C,getFeeRates:()=>WX(X),getInputsOutputsFee:I2,getNetworkForChain:()=>F(X),getPrivateKeyFromMnemonic:(N)=>A0(zX({...N,chain:X}).privateKey,X),isRBFEnabled:V,keys:W,resolveDerivationIndex:VX,signAndBroadcastTransaction:c2,signTransaction:lX,signTransactionWithMultipleKeys:l,transfer:m0(X,G),transferFromMultipleAddresses:kX,validateAddress:f2(X)}}var g=g0.BitcoinCash;function mX(X){return qX(yX(X))}function u0(X){let $=F(g);function J(Q){return Q.sign(X.privateKey,[o0.ALL]),Q}function j(){let Q=y2(X.publicKey,$);if(!Q.hash)throw new h("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});let Z=R2({hash:Q.hash,prefix:F2.MAINNET,type:E2.P2PKH});return Promise.resolve(Z.replace(/^bitcoincash:/,""))}return{getAddress:j,signTransaction:J}}function v2(X){let $="phrase"in X?X.phrase:void 0,J="index"in X?X.index||0:0,j=l0("derivationPath"in X&&X.derivationPath?X.derivationPath:c0(h0[g],{index:J})),Q=$?zX({chain:g,derivationPath:j,phrase:$}):void 0,Z=Q?u0(Q):("signer"in X)?X.signer:void 0;function L(){return Promise.resolve(Z?.getAddress())}let{getBalance:Y,getFeeRates:q,broadcastTx:G,...W}=$X({chain:g});function U(B,C=!0){return Y(qX(yX(B)))}function z(B){if(!Z)throw new h("toolbox_utxo_no_signer");return Z.signTransaction(B)}async function _(B){let C=await z(B);return C.finalize(),await G(T2.encode(C.extract()))}return{...W,broadcastTx:G,buildTx:r0,createTransaction:S2,getAddress:L,getAddressFromKeys:n0,getBalance:U,getFeeRates:q,signAndBroadcastTransaction:_,signTransaction:z,stripPrefix:qX,stripToCashAddress:mX,transfer:d0({broadcastTx:G,getFeeRates:q,signer:Z}),validateAddress:t}}async function S2({assetValue:X,recipient:$,memo:J,feeRate:j,sender:Q,sweep:Z}){if(!t($))throw new h("toolbox_utxo_invalid_address",{address:$});let L=Math.ceil(X.getBaseValue("number")+j*7500),Y=await f(g).getUtxos({address:mX(Q),fetchTxHex:!0,targetValue:Z?void 0:L}),q=J?A(J):null,G=[],W=o($);if(G.push({address:W,value:Z?0:X.getBaseValue("number")}),q)G.push({script:q,value:0});let{inputs:U,outputs:z}=v({chain:g,feeRate:j,inputs:Y,outputs:G,sweep:Z});if(!(U&&z))throw new h("toolbox_utxo_insufficient_balance",{assetValue:X,sender:Q});let _=new A2({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!q,version:1}),B=o(Q),{inputs:C,tx:D}=XX({chain:g,compiledMemo:q,inputs:U,outputs:z.map((V)=>("address"in V)&&V.address?{...V,address:o(V.address)}:V),sender:B,tx:_});return{inputs:C,tx:D,utxos:U}}function d0({broadcastTx:X,getFeeRates:$,signer:J}){return async function({recipient:Q,assetValue:Z,feeOptionKey:L=x0.Fast,sweep:Y,...q}){let G=await J?.getAddress();if(!(J&&G))throw new h("toolbox_utxo_no_signer");if(!Q)throw new h("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let W=q.feeRate||(await $())[L],{tx:U}=await S2({...q,assetValue:Z,feeRate:W,recipient:Q,sender:G,sweep:Y}),z=await J.signTransaction(U);return z.finalize(),X(T2.encode(z.extract()))}}async function r0({assetValue:X,recipient:$,memo:J,feeRate:j,sender:Q}){let Z=yX($);if(!t(Z))throw new h("toolbox_utxo_invalid_address",{address:Z});let L=Math.ceil(X.getBaseValue("number")+j*7500),Y=await f(g).getUtxos({address:mX(Q),fetchTxHex:!0,targetValue:L}),q=Number(j.toFixed(0)),G=J?A(J):null,W=[];if(W.push({address:o($),value:X.getBaseValue("number")}),G)W.push({script:G,value:0});let{inputs:U,outputs:z}=v({chain:g,feeRate:q,inputs:Y,outputs:W});if(!(U&&z))throw new h("toolbox_utxo_insufficient_balance",{assetValue:X,sender:Q});let _=new A2({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!G,version:1}),{inputs:B,tx:C}=XX({chain:g,compiledMemo:G,inputs:U,outputs:z,sender:o(Q),tx:_});return{inputs:B,tx:C,utxos:Y}}function n0(X){let $=p0.bitcoinCash,J=y2(X.publicKey,$);if(!J.hash)throw new h("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return R2({hash:J.hash,prefix:F2.MAINNET,type:E2.P2PKH}).replace(/^bitcoincash:/,"")}import{createBase58check as i0,hex as s0}from"@scure/base";import{HDKey as m2}from"@scure/bip32";import{mnemonicToSeedSync as g2}from"@scure/bip39";import{Chain as gX,derivationPathToString as a0,FeeOption as t0,NetworkDerivationPath as e0,SKConfig as l2,SwapKitError as JX,updateDerivationPath as X1}from"@swapkit/helpers";import{Address as $1,createZcashTransaction as J1,isTransparentZcashAddress as w2,OutScript as j1,PCZT as Q1,utils as x2,WIF as Z1,ZCASH_NETWORK as G1,ZCASH_TEST_NETWORK as Y1,ZcashConsensusBranchId as q1,ZcashPSBT as L1,ZcashSigHash as aX,ZcashVersionGroupId as z1}from"@swapkit/utxo-signer";import{match as W1,P as tX}from"ts-pattern";function eX(){let{isStagenet:X}=l2.get("envs");return X?Y1:G1}var U1=i0(x2.sha256);function _1(X){return U1.encode(X)}function B1({phrase:X,derivationPath:$}){let J=g2(X),Q=m2.fromMasterSeed(J).derive($);if(!Q.privateKey||!Q.publicKey)throw new JX("toolbox_utxo_invalid_params");let{privateKey:Z,publicKey:L}=Q,Y=x2.hash160(L),{isStagenet:q}=l2.get("envs"),G=q?new Uint8Array([29,37]):new Uint8Array([28,184]),W=new Uint8Array(G.length+Y.length);W.set(G,0),W.set(Y,G.length);let U=_1(W);return{getAddress:()=>Promise.resolve(U),signTransaction:(z)=>{if(z instanceof L1){let _=z.toPCZT();return _.signAllInputs(Z,L,aX.ALL),_.finalizeAllInputs(),Promise.resolve(_.extract())}if(z instanceof Q1)return z.signAllInputs(Z,L,aX.ALL),z.finalizeAllInputs(),Promise.resolve(z.extract());return z.signAllInputs(Z,L,aX.ALL),Promise.resolve(z)}}}function N1({inputs:X,outputs:$,tx:J,sender:j,compiledMemo:Q}){let Z=eX();for(let L of X){let Y=$1(Z).decode(j),q=j1.encode(Y);J.addInput({index:L.index,script:q,sequence:4294967295,txid:s0.decode(L.hash),value:BigInt(L.value)})}for(let L of $){let Y="address"in L&&L.address?L.address:j,q=L.script;if(q&&!Q)continue;if(q&&Q)J.addOutput({amount:0n,script:Q});else J.addOutputAddress(Y,BigInt(L.value),Z)}return{inputs:X,tx:J}}async function K2(X){let{assetValue:$,recipient:J,memo:j,feeRate:Q,sender:Z,fetchTxHex:L,sweep:Y}=X,q=eX();if(!w2(Z,q))throw new JX("toolbox_utxo_invalid_address",{address:Z});if(!w2(J,q))throw new JX("toolbox_utxo_invalid_address",{address:J,error:"Zcash transaction creation currently supports transparent addresses only"});let G=j?A(j):null,W=await f(gX.Zcash).getUtxos({address:Z,fetchTxHex:L!==!1}),U=[{address:J,value:Y?0:Number($.getBaseValue("string"))},...G?[{script:G,value:0}]:[]],{inputs:z,outputs:_}=v({chain:gX.Zcash,changeAddress:Z,feeRate:Q,inputs:W,outputs:U,sweep:Y});if(!(z&&_))throw new JX("toolbox_utxo_insufficient_balance",{assetValue:$,sender:Z});let B=J1({consensusBranchId:q1.NU6_2,expiryHeight:0,lockTime:0,version:4,versionGroupId:z1.SAPLING}),{tx:C,inputs:D}=N1({compiledMemo:G,inputs:z,outputs:_,sender:Z,tx:B});return{inputs:D,outputs:_,tx:C}}function h2(X){let $=W1(X).with({signer:tX.not(tX.nullish)},({signer:q})=>q).with({phrase:tX.string},({phrase:q,derivationPath:G,index:W=0})=>{let U=G||e0[gX.Zcash]||[44,133,0,0,0],z=X1(U,{index:W}),_=a0(z);return B1({derivationPath:_,phrase:q})}).otherwise(()=>{return}),J=$X({chain:gX.Zcash,signer:$});async function j(q){if(!$)throw new JX("toolbox_utxo_no_signer");return await $.signTransaction(q)}async function Q(q){let G=await j(q);return J.broadcastTx(G.toHex())}async function Z({recipient:q,assetValue:G,feeOptionKey:W=t0.Fast,sweep:U,...z}){let _=await $?.getAddress();if(!($&&_))throw new JX("toolbox_utxo_no_signer");let B=z.feeRate||(await J.getFeeRates())[W],{tx:C}=await K2({...z,assetValue:G,feeRate:B,recipient:q,sender:_,sweep:U}),V=(await $.signTransaction(C)).toHex();return J.broadcastTx(V)}function L({phrase:q,derivationPath:G="m/44'/133'/0'/0/0"}){let W=g2(q),z=m2.fromMasterSeed(W).derive(G);if(!z.privateKey||!z.publicKey)throw new JX("toolbox_utxo_invalid_params");return{privateKey:z.privateKey,publicKey:z.publicKey}}function Y({phrase:q,derivationPath:G="m/44'/133'/0'/0/0"}){let W=L({derivationPath:G,phrase:q}),U=eX();return Z1(U).encode(W.privateKey)}return{...J,createKeysForPath:L,createTransaction:K2,getPrivateKeyFromMnemonic:Y,signAndBroadcastTransaction:Q,signTransaction:j,transfer:Z,validateAddress:HX}}import{hex as M1}from"@scure/base";import{HDKey as D1}from"@scure/bip32";import{derivationPathToString as C1}from"@swapkit/helpers";function H1({xpub:X,chain:$,count:J,startIndex:j=0,accountIndex:Q}){if(w("count",J),J<1)throw RangeError("count must be at least 1");w("startIndex",j);let Z=F($),L=D1.fromExtendedKey(X,Z.bip32),Y=n({accountIndex:Q,chain:$}),q=ZX(Y),G=[];for(let W of[!1,!0]){let U=L.deriveChild(Number(W));for(let z=0;z<J;z++){let _=j+z,B=U.deriveChild(_);if(!B.publicKey)continue;let C=NX({accountIndex:Q,chain:$,change:W,index:_});G.push({accountIndex:q,address:bX({chain:$,network:Z,publicKey:B.publicKey}),change:W,index:_,path:C1(C),pubkey:M1.encode(B.publicKey)})}}return G}function K8(X,$){switch(X){case UX.BitcoinCash:return v2($||{});case UX.Zcash:return h2($);case UX.Bitcoin:case UX.Dogecoin:case UX.Litecoin:case UX.Dash:return $X({chain:X,...$});default:throw new O1("toolbox_utxo_not_supported",{chain:X})}}export{HX as validateZcashAddress,b2 as validateUtxoAddress,t as validateBchAddress,o as toLegacyAddress,yX as toCashAddress,mX as stripToCashAddress,qX as stripPrefix,KX as nonSegwitChains,z2 as isValidAddress,K8 as getUtxoToolbox,T1 as getUtxoNetwork,f as getUtxoApi,f2 as getUTXOAddressValidator,NX as getUTXOAddressPath,n as getUTXOAccountPath,ZX as getUTXOAccountIndexFromPath,DX as getScriptTypeForAddress,SX as getOutputSize,F as getNetworkForChain,s as getInputSize,CX as getDustThreshold,W2 as detectAddressNetwork,H1 as deriveAddressesFromXpub,h2 as createZcashToolbox,$X as createUTXOToolbox,u2 as createHDWalletHelpers,P1 as createCustomUtxoApi,v2 as createBCHToolbox,A as compileMemo,YX as calculateTxSize,w as assertDerivationIndex,P2 as addressFromKeysGetter,XX as addInputsAndOutputs,v as accumulative,L2 as UtxoNetwork,uX as UTXOScriptType,oX as TX_OVERHEAD,pX as SEGWIT_MARKER_FLAG_WEIGHT,vX as OutputSizes,C0 as OP_RETURN_OVERHEAD,g1 as MIN_TX_FEE,cX as InputSizes};
1
+ import{ea as j2,fa as M2}from"../../chunk-nvfkjbyq.js";import"../../chunk-xbdjxeqd.js";import{NetworkDerivationPath as p2}from"@swapkit/helpers";function K(X,$){if(!Number.isInteger($)||$<0)throw RangeError(`${X} must be a non-negative integer, got: ${$}`)}function n({accountIndex:X,chain:$,derivationPath:J}){if(X!==void 0)K("accountIndex",X);let j=[...J?.slice(0,3)??p2[$].slice(0,3)];if(X!==void 0)j[2]=X;return j}function MX({accountIndex:X,change:$=!1,chain:J,derivationPath:j,index:Q}){return K("index",Q),[...n({accountIndex:X,chain:J,derivationPath:j}),Number($),Q]}function ZX(X){return X[2]??0}function d2({deriveAddress:X,getBalance:$,getUtxos:J}){async function j(Y){let{accountIndex:q,count:G,startIndex:W=0,change:U=!1}=Y;if(K("count",G),G<1)throw RangeError("count must be at least 1");K("startIndex",W);let z=[];for(let _=0;_<G;_++){let N=await X({accountIndex:q,change:U,index:W+_});if(N)z.push(N)}return z}async function Q(Y){let{gapLimit:q=20,change:G=!1}=Y??{},W=[],U=0,z=0;while(U<q){let _=await X({change:G,index:z});if(!_)break;if((await $(_.address)).some((D)=>D.getValue("number")>0))W.push(_),U=0;else U++;z++}return W}async function Z(Y=20){let[q,G]=await Promise.all([Q({change:!1,gapLimit:Y}),Q({change:!0,gapLimit:Y})]),W=[...q,...G],U=await Promise.all(W.map(async(_)=>{let H=(await $(_.address)).reduce((D,V)=>D+V.getValue("number"),0);return{..._,balance:H}})),z=U.reduce((_,N)=>_+N.balance,0);return{addresses:U,total:z}}async function L(Y=20){let[q,G]=await Promise.all([Q({change:!1,gapLimit:Y}),Q({change:!0,gapLimit:Y})]),W=[...q,...G];return(await Promise.all(W.map(async(z)=>{return(await J(z.address)).map((N)=>({...N,address:z.address,derivationIndex:z.index,isChange:z.change}))}))).flat()}return{deriveAddresses:j,getAggregatedBalance:Z,getAggregatedUtxos:L,scanForAddresses:Q}}import{Chain as P,getRPCUrl as r2,RequestClient as RX,SKConfig as n2,SwapKitError as v,warnOnce as i2}from"@swapkit/helpers";import{NETWORKS as GX}from"@swapkit/utxo-signer";async function s2({chain:X,txHash:$}){let J=`${YX(X)}/push/transaction`,j=JSON.stringify({data:$});try{let Q=await RX.post(J,{body:j,headers:{"Content-Type":"application/json"}});if(Q.context.code!==200)throw new v("toolbox_utxo_broadcast_failed",{error:Q.context.error||"Transaction broadcast failed"});return Q.data?.transaction_hash||$}catch(Q){let Z=await r2(X);if(Z){let L=JSON.stringify({id:j2(),jsonrpc:"2.0",method:"sendrawtransaction",params:[$]}),Y=await RX.post(Z,{body:L,headers:{"Content-Type":"application/json"}});if(Y.error)throw new v("toolbox_utxo_broadcast_failed",{error:Y.error?.message});if(Y.result.includes('"code":-26'))throw new v("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return Y.result}throw Q}}function YX(X){return`https://api.blockchair.com/${a2(X)}`}function $2(X){switch(X){case P.Bitcoin:return 5;case P.Dogecoin:return 1e4;case P.Litecoin:return 1;case P.Zcash:return 1;default:return 2}}function a2(X){switch(X){case P.BitcoinCash:return"bitcoin-cash";case P.Litecoin:return"litecoin";case P.Dash:return"dash";case P.Dogecoin:return"dogecoin";case P.Zcash:return"zcash";case P.Polkadot:return"polkadot";default:return"bitcoin"}}async function t2(X){try{let{feePerKb:$}=await RX.get(`https://app.bitgo.com/api/v2/${X.toLowerCase()}/tx/fee`),J=$/1000;return Math.max(J,$2(X))}catch{return $2(X)}}async function DX(X,$){let J=await RX.get(`${X}${$?`${X.includes("?")?"&":"?"}key=${$}`:""}`);if(!J||J.context.code!==200)throw new v("toolbox_utxo_api_error",{error:`Failed to query ${X}`});return J.data}async function e2({chain:X,apiKey:$}){let J=await DX(`${YX(X)}/stats`,$);if(typeof J.best_block_height!=="number")throw new v("toolbox_utxo_api_error",{error:"Missing best_block_height in stats response"});return J.best_block_height}async function Q2({address:X,chain:$,apiKey:J}){if(!X)throw new v("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await DX(`${YX($)}/dashboards/address/${X}?transaction_details=true`,J))[X]}catch{return{address:{balance:0,transaction_count:0},utxo:[]}}}async function X0({address:X,chain:$,apiKey:J}){return(await Q2({address:X,apiKey:J,chain:$}))?.address.balance||0}async function Z2({chain:X,apiKey:$,txHash:J}){if(!J)throw new v("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await DX(`${YX(X)}/raw/transaction/${J}`,$))?.[J]?.raw_transaction||""}catch(j){let Q=j instanceof Error?j.message:String(j);return console.error(`Failed to fetch raw transaction: ${Q}`),""}}var $0=4294967294;async function J0({chain:X,apiKey:$,txHash:J}){if(!J)throw new v("toolbox_utxo_invalid_params",{error:"TxHash is required"});let Q=(await DX(`${YX(X)}/dashboards/transaction/${J}`,$))?.[J];if(!Q)throw new v("toolbox_utxo_tx_not_found",{txHash:J});let{transaction:Z,inputs:L,outputs:Y}=Q,q=L.map((W)=>W.spending_sequence),G=Z.is_rbf===!0||q.some((W)=>W<$0);return{blockId:Z.block_id,confirmed:Z.block_id!==-1,fee:Z.fee,inputs:L,isRBF:G,outputs:Y,sequences:q,size:Z.size,txid:Z.hash,weight:Z.weight}}async function j0({chain:X,address:$,apiKey:J,offset:j=0,limit:Q=30}){return(await DX(`${YX(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=${Q}&offset=${j}`,J)).map(({is_spent:q,script_hex:G,block_id:W,transaction_hash:U,index:z,value:_,spending_signature_hex:N})=>({hash:U,index:z,is_confirmed:W!==-1,is_spent:q,script_hex:G,txHex:N,value:_}))}function Q0(X){return X.reduce(($,J)=>$+J.value,0)}function J2(X,$){let J=[...X].sort((j,Q)=>Q.value-j.value);if($){let j=[],Q=0;for(let Z of J)if(j.push(Z),Q+=Z.value,Q>=$)break;return j}return J}async function G2({chain:X,address:$,apiKey:J,targetValue:j,accumulativeValue:Q=0,offset:Z=0,limit:L=30}){if(!$)throw new v("toolbox_utxo_invalid_params",{error:"Address is required"});try{let Y=await j0({address:$,apiKey:J,chain:X,limit:L,offset:Z,targetValue:j}),G=Y.length<L,W=Y.filter(({is_spent:D})=>!D),U=Q0(W),z=Q+U,_=j&&z>=j;if(G||_)return J2(W,j);let N=await G2({accumulativeValue:z,address:$,apiKey:J,chain:X,limit:L,offset:Z+L,targetValue:j}),H=[...W,...N];return J2(H,j)}catch(Y){let q=Y instanceof Error?Y.message:String(Y);return console.error(`Failed to fetch unspent UTXOs: ${q}`),[]}}async function Z0({address:X,chain:$,apiKey:J,fetchTxHex:j=!0,targetValue:Q}){let Z=await G2({address:X,apiKey:J,chain:$,targetValue:Q}),L=[];for(let{hash:Y,index:q,script_hex:G,value:W}of Z){let U;if(j)U=await Z2({apiKey:J,chain:$,txHash:Y});L.push({address:X,hash:Y,index:q,txHex:U,value:W,witnessUtxo:{script:Buffer.from(G,"hex"),value:W}})}return L}function I(X){let $=n2.get("apiKeys").blockchair||"";return i2({condition:!$,id:"no_blockchair_api_key_warning",warning:"No Blockchair API key found. Functionality will be limited."}),{broadcastTx:(J)=>s2({chain:X,txHash:J}),getAddressData:(J)=>Q2({address:J,apiKey:$,chain:X}),getBalance:(J)=>X0({address:J,apiKey:$,chain:X}),getBlockHeight:()=>e2({apiKey:$,chain:X}),getRawTx:(J)=>Z2({apiKey:$,chain:X,txHash:J}),getSuggestedTxFee:()=>t2(X),getTransactionDetails:(J)=>J0({apiKey:$,chain:X,txHash:J}),getUtxos:(J)=>Z0({...J,apiKey:$,chain:X})}}function E1(X){return X}function R1(){return function($){switch($){case P.Bitcoin:return GX.bitcoin;case P.BitcoinCash:return GX.bitcoinCash;case P.Dash:return GX.dash;case P.Litecoin:return GX.litecoin;case P.Dogecoin:return GX.dogecoin;case P.Zcash:return GX.zcash;default:throw new v("toolbox_utxo_not_supported",{chain:$})}}}import{sha256 as U0}from"@noble/hashes/sha2.js";import{createBase58check as _0}from"@scure/base";import{SwapKitError as q2}from"@swapkit/helpers";import{CashAddrType as AX,decodeCashAddr as G0,encodeCashAddr as Y0}from"@swapkit/utxo-signer";var q0={P2PKH:AX.P2PKH,P2SH:AX.P2SH},L0={[AX.P2PKH]:"P2PKH",[AX.P2SH]:"P2SH"};function z0(X,$,J){return Y0({hash:J,prefix:X,type:q0[$]})}function W0(X){let $=G0(X),J=L0[$.type];if(!J)throw Error(`Unknown CashAddr type: ${$.type}`);return{hash:$.hash,prefix:$.prefix,type:J}}var hX={decode:W0,encode:z0};var L2=_0(U0);var z2;((J)=>{J.Mainnet="mainnet";J.Testnet="testnet"})(z2||={});var i={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}};function W2(X){try{return vX(X),!0}catch{return!1}}function U2(X){return vX(X)?.network}function c(X){let $=vX(X);if($?.format==="legacy")return X;return M0($)}function yX(X){let $=vX(X);return D0($)}function vX(X){try{let $=N0(X);if($)return $}catch{}try{let $=B0(X);if($)return $}catch{}throw new q2("toolbox_utxo_invalid_address",{address:X})}function N0(X){try{let $=L2.decode(X);if($.length!==21)throw new q2("toolbox_utxo_invalid_address",{address:X});let J=$[0],j=Array.prototype.slice.call($,1);switch(J){case i.legacy.mainnet.p2pkh:return{format:"legacy",hash:j,network:"mainnet",type:"p2pkh"};case i.legacy.mainnet.p2sh:return{format:"legacy",hash:j,network:"mainnet",type:"p2sh"};case i.legacy.testnet.p2pkh:return{format:"legacy",hash:j,network:"testnet",type:"p2pkh"};case i.legacy.testnet.p2sh:return{format:"legacy",hash:j,network:"testnet",type:"p2sh"};case i.bitpay.mainnet.p2pkh:return{format:"bitpay",hash:j,network:"mainnet",type:"p2pkh"};case i.bitpay.mainnet.p2sh:return{format:"bitpay",hash:j,network:"mainnet",type:"p2sh"};default:return}}catch{return}}function B0(X){if(X.indexOf(":")!==-1)try{return Y2(X)}catch{}else{let $=["bitcoincash","bchtest","bchreg"];for(let J of $)try{return Y2(`${J}:${X}`)}catch{}}return}function Y2(X){try{let{hash:$,prefix:J,type:j}=hX.decode(X);return{format:"cashaddr",hash:Array.prototype.slice.call($,0),network:J==="bitcoincash"?"mainnet":"testnet",type:j==="P2PKH"?"p2pkh":"p2sh"}}catch{return}}function M0(X){let $=i.legacy[X.network][X.type],J=Buffer.alloc(1+X.hash.length);return J[0]=$,J.set(X.hash,1),L2.encode(J)}function D0(X){let $=X.network==="mainnet"?"bitcoincash":"bchtest",J=X.type==="p2pkh"?"P2PKH":"P2SH",j=new Uint8Array(X.hash);return hX.encode($,J,j)}import{Chain as a,SwapKitError as dX}from"@swapkit/helpers";import{SwapKitError as H0}from"@swapkit/helpers";import{Script as C0}from"@swapkit/utxo-signer";var h1=1000,cX=10,uX=2,O0=10,b0=41,k0=107;function y(X){let $=new Uint8Array(Buffer.from(X,"utf8"));return C0.encode(["RETURN",$])}var pX;((J)=>{J.P2PKH="P2PKH";J.P2WPKH="P2WPKH"})(pX||={});var oX={["P2PKH"]:148,["P2WPKH"]:68},SX={["P2PKH"]:34,["P2WPKH"]:31},HX=(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 H0("toolbox_utxo_invalid_address",{address:X})},qX=({inputs:X,outputs:$,feeRate:J})=>{let j=X[0]&&"address"in X[0]&&X[0].address?HX(X[0].address):"P2PKH",Z=(J?X.filter((G)=>G.value>=oX["type"in G&&G.type?G.type:"P2PKH"]*Math.ceil(J)):X).reduce((G,W)=>G+s(W),0),L=$?.reduce((G,W)=>G+wX(W),0)||SX[j],Y=cX+Z+L;return j==="P2WPKH"?Math.ceil(Y+uX/4):Y},s=(X)=>{if("type"in X&&X.type)return oX[X.type];if("address"in X&&X.address)return oX[HX(X.address)];return b0+k0},wX=(X,$)=>{if(X?.script)return O0+X.script.length+(X.script.length>=74?2:1);if($)return SX[$];if("address"in X&&X.address)return SX[HX(X.address)];return SX.P2PKH};function CX(X){switch(X){case a.Bitcoin:case a.BitcoinCash:return 550;case a.Dash:case a.Litecoin:return 5500;case a.Dogecoin:return 1e5;case a.Zcash:return 546;default:throw new dX("toolbox_utxo_not_supported",{chain:X})}}function S({inputs:X,outputs:$,feeRate:J=1,chain:j=a.Bitcoin,changeAddress:Q="",sweep:Z=!1}){let L=CX(j),Y=X.filter((D)=>{let V=s(D)*J;return Z?D.value>Math.max(V,L):V<=D.value});if(Z){let D=Math.ceil(J*qX({inputs:Y,outputs:$})),V=Y.reduce((R,l)=>R+l.value,0),u=V-D;if(u<=L)throw new dX("toolbox_sweep_amount_too_low",{available:V,dustThreshold:L,fee:D});let p=$.findIndex((R)=>("address"in R)&&R.address);if(p===-1)throw new dX("toolbox_utxo_invalid_params",{error:"Sweep requires a recipient output"});return{fee:D,inputs:Y,outputs:$.map((R,l)=>l===p?{...R,value:u}:R)}}let W=(X[0]&&"address"in X[0]&&X[0].address?HX(X[0].address):"P2PKH")==="P2WPKH"?Math.ceil(uX/4):0,U=cX+W+$.reduce((D,V)=>D+wX(V),0),z=$.reduce((D,V)=>D+V.value,0),_=U*J,N=0,H=[];for(let D of Y){let V=s(D),u=J*V;_+=u,N+=D.value,H.push(D);let p=_+z;if(N<p)continue;let R=N-p,l=J*wX({address:Q,value:0});if(R>l){let IX=l+_,fX=N-(z+Math.ceil(IX));if(fX>Math.max(s({value:0})*J,CX(j)))return{fee:Math.ceil(IX),inputs:H,outputs:$.concat({address:Q,value:fX})}}return{fee:Math.ceil(_),inputs:H,outputs:$}}return{fee:Math.ceil(J*qX({inputs:X,outputs:$}))}}import{Chain as _X,SwapKitError as V1}from"@swapkit/helpers";import{hex as F2}from"@scure/base";import{Chain as x0,derivationPathToString as h0,FeeOption as o0,NetworkDerivationPath as c0,SwapKitError as h,updateDerivationPath as u0}from"@swapkit/helpers";import{BCHSigHash as p0,CashAddrPrefix as E2,CashAddrType as R2,encodeCashAddr as A2,NETWORKS as d0,p2pkh as y2,Transaction as v2}from"@swapkit/utxo-signer";import{secp256k1 as V0}from"@noble/curves/secp256k1.js";import{hex as e}from"@scure/base";import{HDKey as D2}from"@scure/bip32";import{mnemonicToSeedSync as iX}from"@scure/bip39";import{AssetValue as rX,applyFeeMultiplier as _2,Chain as f,derivationPathToString as bX,FeeOption as m,NetworkDerivationPath as H2,SwapKitError as k,SwapKitNumber as I0,updateDerivationPath as f0,warnOnce as P0}from"@swapkit/helpers";import{Address as T0,BCHSigHash as sX,CashAddrPrefix as F0,CashAddrType as E0,encodeCashAddr as R0,NETWORKS as zX,p2pkh as N2,p2wpkh as A0,RBF_SEQUENCE as y0,SigHash as C2,Transaction as nX,WIF as O2}from"@swapkit/utxo-signer";import{match as b2}from"ts-pattern";import{validateZcashAddress as OX}from"@swapkit/utxo-signer";function LX(X){return X.replace(/(bchtest:|bitcoincash:)/,"")}function t(X){let $=LX(X);return W2($)&&U2($)==="mainnet"}var mX=[f.Dash,f.Dogecoin,f.Zcash,f.BitcoinCash],KX=[f.Bitcoin];function k2({address:X,chain:$}){return b2($).with(f.BitcoinCash,()=>t(X)).with(f.Zcash,()=>OX(X)).otherwise(()=>{try{return T0(F($)).decode(X),!0}catch{return!1}})}function F(X){return b2(X).with(f.Bitcoin,()=>zX.bitcoin).with(f.BitcoinCash,()=>zX.bitcoinCash).with(f.Dash,()=>zX.dash).with(f.Dogecoin,()=>zX.dogecoin).with(f.Litecoin,()=>zX.litecoin).with(f.Zcash,()=>zX.zcash).exhaustive()}function v0({phrase:X,derivationPath:$,network:J,seed:j}){let Q=j??iX(X),L=D2.fromMasterSeed(Q,J.bip32).derive($);if(!L.privateKey)throw new k("toolbox_utxo_invalid_params",{error:"Could not derive private key from phrase"});return L.privateKey}function B2(X){return V0.getPublicKey(X,!0)}function kX({publicKey:X,chain:$,network:J}){if($===f.BitcoinCash){let Z=N2(X,J);if(!Z.hash)throw new k("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return R0({hash:Z.hash,prefix:F0.MAINNET,type:E0.P2PKH}).replace(/^bitcoincash:/,"")}let Q=!mX.includes($)?A0(X,J):N2(X,J);if(!Q.address)throw new k("toolbox_utxo_invalid_address",{error:"Could not derive address"});return Q.address}function WX({phrase:X,derivationPath:$,chain:J,wif:j,seed:Q}){let Z=F(J);if(j){let G=O2(Z).decode(j),W=B2(G);return{privateKey:G,publicKey:W}}if(!X)throw new k("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let L=$||bX(H2[J]),Y=v0({derivationPath:L,network:Z,phrase:X,seed:Q}),q=B2(Y);return{privateKey:Y,publicKey:q}}function S0(X,$){return O2(F($)).encode(X)}function w0({phrase:X,derivationPath:$,chain:J,seed:j}){let Q=$.split("/");if(Q.length<4)throw new k("toolbox_utxo_invalid_params",{error:`Derivation path must have at least 4 levels (got ${Q.length}): ${$}`});let Z=F(J),L=j??iX(X),Y=D2.fromMasterSeed(L,Z.bip32),q=Q.slice(0,4).join("/");return Y.derive(q)}function XX({inputs:X,outputs:$,chain:J,tx:j,sender:Q,compiledMemo:Z,enableRBF:L=!1}){let Y=F(J),q=!mX.includes(J),G=L?y0:void 0,W=new Set;for(let U of X){let z=`${U.hash}:${U.index}`;if(W.has(z))throw new k("toolbox_utxo_invalid_params",{error:"Duplicate input detected"});W.add(z);let _=typeof U.hash==="string"?e.decode(U.hash):U.hash;if(q&&U.witnessUtxo)j.addInput({index:U.index,sequence:G,txid:_,witnessUtxo:{amount:BigInt(U.witnessUtxo.value),script:U.witnessUtxo.script}});else if(U.txHex)j.addInput({index:U.index,nonWitnessUtxo:e.decode(U.txHex),sequence:G,txid:_,...J===f.BitcoinCash?{sighashType:sX.ALL}:{}});else throw new k("toolbox_utxo_invalid_params",{error:"Input requires either witnessUtxo or txHex for non-segwit chains"})}for(let U of $){let z="address"in U&&U.address?U.address:Q;if(J===f.BitcoinCash)z=c(z);if(U.script){if(Z)j.addOutput({amount:0n,script:Z})}else j.addOutputAddress(z,BigInt(U.value),Y)}return{inputs:X,tx:j}}async function UX(X){let $=await I(X).getSuggestedTxFee();return{[m.Average]:$,[m.Fast]:_2($,m.Fast),[m.Fastest]:_2($,m.Fastest)}}async function V2({assetValue:X,recipient:$,memo:J,sender:j,sweep:Q,fetchTxHex:Z=!1}){let L=X.chain,Y=Z||mX.includes(L),q=X.getBaseValue("number"),G=Q?void 0:Math.ceil(q+(await UX(L))[m.Fastest]*5000);return{inputs:await I(L).getUtxos({address:j,fetchTxHex:Y,targetValue:G}),outputs:[{address:$,value:Q?0:q},...J?[{address:"",script:y(J),value:0}]:[]]}}async function I2({assetValue:X,recipient:$,memo:J,feeRate:j,sender:Q,fetchTxHex:Z=!1,enableRBF:L=!1,sweep:Y}){let q=X.chain,G=J?y(J):null,W=await V2({assetValue:X,fetchTxHex:Z,memo:J,recipient:$,sender:Q,sweep:Y}),{inputs:U,outputs:z}=S({...W,chain:q,feeRate:j,sweep:Y});if(!(U&&z))throw new k("toolbox_utxo_insufficient_balance",{assetValue:X,sender:Q});let _=new nX({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!G,version:1}),{inputs:N,tx:H}=XX({chain:q,compiledMemo:G,enableRBF:L,inputs:U,outputs:z,sender:Q,tx:_});return{inputs:N,tx:H,utxos:W.inputs}}async function f2({assetValue:X,feeOptionKey:$=m.Fast,feeRate:J,memo:j,sender:Q,recipient:Z,sweep:L}){let Y=X.chain,q=await V2({assetValue:X,memo:j,recipient:Z,sender:Q,sweep:L}),G=J?Math.floor(J):(await UX(Y))[$];return S({...q,chain:Y,feeRate:G,sweep:L})}function K0(X){return async function({from:J,memo:j,feeRate:Q,feeOptionKey:Z=m.Fast,recipient:L=J,recipients:Y=1}){let q=Q??(await UX(X))[Z],W=(await I(X).getUtxos({address:J,fetchTxHex:!1})).filter((H)=>H.value>Math.max(CX(X),s(H)*q));if(!W.length)return rX.from({chain:X});let U=typeof Y==="number"?Math.max(Y,1):Y.length,z=typeof Y==="number"||U===0?Array.from({length:U||1},()=>({address:L,value:0})):[...Y];if(j)z.push({address:J,script:y(j),value:0});let{outputs:_}=S({chain:X,feeRate:q,inputs:W,outputs:z,sweep:!0}),N=_?.[0]?.value??0;return rX.from({chain:X,value:BigInt(N)})}}function m0(X){return async function(J){let{fee:j}=await f2(J);return rX.from({chain:X,value:I0.fromBigInt(BigInt(j),8).getValue("string")})}}function g0({chain:X,phrase:$,derivationPath:J,seed:j}){let Q=F(X),{privateKey:Z,publicKey:L}=WX({chain:X,derivationPath:J,phrase:$,seed:j}),Y=X===f.BitcoinCash?[sX.ALL]:[C2.ALL];return{getAddress:()=>kX({chain:X,network:Q,publicKey:L}),privateKey:Z,publicKey:L,signTransaction:(q)=>{return q.sign(Z,Y),q}}}function l0(X,$){return async function({memo:j,recipient:Q,feeOptionKey:Z,feeRate:L,assetValue:Y,enableRBF:q=!1,sweep:G}){let W=await $?.getAddress();if(!($&&W))throw new k("toolbox_utxo_no_signer");if(!Q)throw new k("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});P0({condition:q&&!KX.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 U=q&&KX.includes(X),z=L||(await UX(X))[Z||m.Fast],{tx:_}=await I2({assetValue:Y,enableRBF:U,feeRate:z,memo:j,recipient:Q,sender:W,sweep:G}),N=await $.signTransaction(_);return N.finalize(),I(X).broadcastTx(e.encode(N.extract()))}}function P2(X){return($)=>k2({address:$,chain:X})}function T2(X){let $=F(X);return function(j){if(!j)throw new k("toolbox_utxo_invalid_params",{error:"Keys must be provided"});return kX({chain:X,network:$,publicKey:j.publicKey})}}function $X({chain:X,...$}){let J="phrase"in $?$.phrase:void 0,j="index"in $?$.index||0:0,Q=J?iX(J):void 0,Z="derivationPath"in $&&$.derivationPath?$.derivationPath:f0(H2[X],{index:j}),L=bX(Z),Y=J?g0({chain:X,derivationPath:L,phrase:J,seed:Q}):void 0,q="signer"in $?$.signer:void 0,G=Y||q,W=J?WX({chain:X,derivationPath:L,phrase:J,seed:Q}):void 0;function U(){if(G)return G.getAddress();return Promise.resolve(void 0)}function z(B){if(!J)return;let M=n({accountIndex:B,chain:X,derivationPath:Z});return w0({chain:X,derivationPath:bX(M),phrase:J,seed:Q})}let _=z();function N(){if(!_)return;return _.publicExtendedKey}function H({accountIndex:B}={}){let M=B===void 0?_:z(B);if(!M)return;let C=n({accountIndex:B,chain:X,derivationPath:Z});return{accountIndex:ZX(C),path:bX(C),xpub:M.publicExtendedKey}}function D({accountIndex:B,index:M,change:C=!1}){let O=B===void 0?_:z(B);if(!O)return;let b=MX({accountIndex:B,chain:X,change:C,derivationPath:Z,index:M}),A=F(X),w=O.deriveChild(Number(C)).deriveChild(M);if(!w.publicKey)throw new k("toolbox_utxo_invalid_params",{error:"Could not derive public key"});let E=kX({chain:X,network:A,publicKey:w.publicKey}),o=e.encode(w.publicKey);return{accountIndex:ZX(b),address:E,change:C,index:M,path:bX(b),pubkey:o}}async function V(B){if(!KX.includes(X))return{reason:`RBF is not supported on ${X}`,supported:!1};let M=await I(X).getTransactionDetails(B);return{canReplace:M.isRBF&&!M.confirmed,confirmed:M.confirmed,enabled:M.isRBF,fee:M.fee,sequences:M.sequences,supported:!0}}async function u({txid:B,newFeeRate:M,recipient:C,memo:O}){if(!KX.includes(X))throw new k("toolbox_utxo_rbf_not_supported",{chain:X});let b=await I(X).getTransactionDetails(B);if(!b.isRBF)throw new k("toolbox_utxo_tx_not_replaceable",{txid:B});if(b.confirmed)throw new k("toolbox_utxo_tx_already_confirmed",{blockId:b.blockId,txid:B});let A=b.inputs.reduce((T,x)=>T+x.value,0),E=b.outputs.find((T)=>T.recipient===C)?.value||0;if(E===0)throw new k("toolbox_utxo_invalid_params",{error:"Could not determine send amount from original transaction"});let o=await Promise.all(b.inputs.map(async(T)=>{let x=await I(X).getRawTx(T.transaction_hash);return{hash:T.transaction_hash,index:T.index,txHex:x,value:T.value,witnessUtxo:void 0}})),NX=O?y(O):null,PX=qX({feeRate:M,inputs:o.map((T)=>({...T,type:"P2WPKH"})),outputs:[{address:C,value:E}]}),d=Math.ceil(PX*M);if(d<=b.fee)throw new k("toolbox_utxo_rbf_fee_too_low",{newFee:d,originalFee:b.fee});let jX=d-b.fee,QX=E-jX;if(QX<=0)throw new k("toolbox_utxo_rbf_insufficient_change");let r=new nX({allowLegacyWitnessUtxo:!0,version:1}),TX=[{address:C,value:QX},...O?[{address:"",script:y(O),value:0}]:[]],FX=A-QX-d,BX=await U();if(FX>CX(X)&&BX)TX.push({address:BX,value:FX});return XX({chain:X,compiledMemo:NX,inputs:o,outputs:TX,sender:BX||C,tx:r}),{feeDelta:jX,newFee:d,originalFee:b.fee,tx:r}}async function p({txid:B,newFeeRate:M,recipient:C,memo:O}){let{tx:b,originalFee:A,newFee:w}=await u({memo:O,newFeeRate:M,recipient:C,txid:B}),E=await lX(b);E.finalize();let o=await I(X).broadcastTx(e.encode(E.extract()));return{newFee:w,originalFee:A,txid:o}}function R({accountIndex:B,index:M,change:C=!1}){K("index",M);let O=B===void 0?_:z(B);if(!O)return;return O.deriveChild(Number(C)).deriveChild(M).privateKey||void 0}function l({tx:B,inputDerivations:M}){if(!_)throw new k("toolbox_utxo_no_signer");let C=X===f.BitcoinCash?[sX.ALL]:[C2.ALL];for(let O=0;O<M.length;O++){let b=M[O];if(!b)continue;let{derivationIndex:A,isChange:w}=b,E=R({change:w,index:A});if(!E)throw new k("toolbox_utxo_invalid_params",{error:`Could not derive private key for input ${O} at index ${A}`});B.signIdx(E,O,C)}return B}async function IX({utxos:B,recipient:M,assetValue:C,memo:O,feeRate:b,feeOptionKey:A,changeAddress:w,sweep:E}){if(E)throw new k("toolbox_utxo_invalid_params",{error:"Sweep is not supported for transfers from multiple addresses"});if(!_)throw new k("toolbox_utxo_no_signer");let o=b||(await UX(X))[A||m.Fast],NX=O?y(O):null,PX=[{address:M,value:C.getBaseValue("number")}];if(NX)PX.push({address:"",script:NX,value:0});let d=B.map(({hash:T,index:x,value:EX,txHex:u2,witnessUtxo:xX})=>({hash:T,index:x,txHex:u2,value:EX,witnessUtxo:xX?{script:xX.script,value:xX.value}:void 0})),{inputs:jX,outputs:QX}=S({chain:X,feeRate:o,inputs:d,outputs:PX});if(!(jX&&QX))throw new k("toolbox_utxo_insufficient_balance",{assetValue:C,sender:"multiple addresses"});let r=new nX({allowLegacyWitnessUtxo:!0,version:1}),TX=B[0]?.address,FX=w||await U()||TX||M;XX({chain:X,compiledMemo:NX,inputs:jX,outputs:QX,sender:FX,tx:r});let BX=jX.map((T)=>{let x=B.find((EX)=>EX.hash===T.hash&&EX.index===T.index);return x?{derivationIndex:x.derivationIndex,isChange:x.isChange}:{derivationIndex:0,isChange:!1}});return l({inputDerivations:BX,tx:r}),r.finalize(),I(X).broadcastTx(e.encode(r.extract()))}function fX({address:B,gapLimit:M=20}){if(!_)return;for(let C=0;C<M;C++){let O=D({change:!1,index:C}),b=D({change:!0,index:C}),A=O?.address===B?!1:b?.address===B;if(O?.address===B||b?.address===B)return{change:A,index:C}}return}function lX(B){if(!G)throw new k("toolbox_utxo_no_signer");return G.signTransaction(B)}async function c2(B){let M=await lX(B);return M.finalize(),await I(X).broadcastTx(e.encode(M.extract()))}return{accumulative:S,broadcastTx:(B)=>I(X).broadcastTx(B),bumpFee:p,calculateTxSize:qX,createKeysForPath:(B)=>WX({...B,chain:X}),createReplacementTransaction:u,createTransaction:I2,deriveAddressAtIndex:D,derivePrivateKeyAtIndex:R,estimateMaxSendableAmount:K0(X),estimateTransactionFee:m0(X),getAddress:U,getAddressFromKeys:T2(X),getBalance:M2(X),getExtendedPublicKey:N,getExtendedPublicKeyInfo:H,getFeeRates:()=>UX(X),getInputsOutputsFee:f2,getNetworkForChain:()=>F(X),getPrivateKeyFromMnemonic:(B)=>S0(WX({...B,chain:X}).privateKey,X),isRBFEnabled:V,keys:W,resolveDerivationIndex:fX,signAndBroadcastTransaction:c2,signTransaction:lX,signTransactionWithMultipleKeys:l,transfer:l0(X,G),transferFromMultipleAddresses:IX,validateAddress:P2(X)}}var g=x0.BitcoinCash;function gX(X){return LX(yX(X))}function r0(X){let $=F(g);function J(Q){return Q.sign(X.privateKey,[p0.ALL]),Q}function j(){let Q=y2(X.publicKey,$);if(!Q.hash)throw new h("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});let Z=A2({hash:Q.hash,prefix:E2.MAINNET,type:R2.P2PKH});return Promise.resolve(Z.replace(/^bitcoincash:/,""))}return{getAddress:j,signTransaction:J}}function S2(X){let $="phrase"in X?X.phrase:void 0,J="index"in X?X.index||0:0,j=h0("derivationPath"in X&&X.derivationPath?X.derivationPath:u0(c0[g],{index:J})),Q=$?WX({chain:g,derivationPath:j,phrase:$}):void 0,Z=Q?r0(Q):("signer"in X)?X.signer:void 0;function L(){return Promise.resolve(Z?.getAddress())}let{getBalance:Y,getFeeRates:q,broadcastTx:G,...W}=$X({chain:g});function U(N,H=!0){return Y(LX(yX(N)))}function z(N){if(!Z)throw new h("toolbox_utxo_no_signer");return Z.signTransaction(N)}async function _(N){let H=await z(N);return H.finalize(),await G(F2.encode(H.extract()))}return{...W,broadcastTx:G,buildTx:i0,createTransaction:w2,getAddress:L,getAddressFromKeys:s0,getBalance:U,getFeeRates:q,signAndBroadcastTransaction:_,signTransaction:z,stripPrefix:LX,stripToCashAddress:gX,transfer:n0({broadcastTx:G,getFeeRates:q,signer:Z}),validateAddress:t}}async function w2({assetValue:X,recipient:$,memo:J,feeRate:j,sender:Q,sweep:Z}){if(!t($))throw new h("toolbox_utxo_invalid_address",{address:$});let L=Math.ceil(X.getBaseValue("number")+j*7500),Y=await I(g).getUtxos({address:gX(Q),fetchTxHex:!0,targetValue:Z?void 0:L}),q=J?y(J):null,G=[],W=c($);if(G.push({address:W,value:Z?0:X.getBaseValue("number")}),q)G.push({script:q,value:0});let{inputs:U,outputs:z}=S({chain:g,feeRate:j,inputs:Y,outputs:G,sweep:Z});if(!(U&&z))throw new h("toolbox_utxo_insufficient_balance",{assetValue:X,sender:Q});let _=new v2({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!q,version:1}),N=c(Q),{inputs:H,tx:D}=XX({chain:g,compiledMemo:q,inputs:U,outputs:z.map((V)=>("address"in V)&&V.address?{...V,address:c(V.address)}:V),sender:N,tx:_});return{inputs:H,tx:D,utxos:U}}function n0({broadcastTx:X,getFeeRates:$,signer:J}){return async function({recipient:Q,assetValue:Z,feeOptionKey:L=o0.Fast,sweep:Y,...q}){let G=await J?.getAddress();if(!(J&&G))throw new h("toolbox_utxo_no_signer");if(!Q)throw new h("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let W=q.feeRate||(await $())[L],{tx:U}=await w2({...q,assetValue:Z,feeRate:W,recipient:Q,sender:G,sweep:Y}),z=await J.signTransaction(U);return z.finalize(),X(F2.encode(z.extract()))}}async function i0({assetValue:X,recipient:$,memo:J,feeRate:j,sender:Q}){let Z=yX($);if(!t(Z))throw new h("toolbox_utxo_invalid_address",{address:Z});let L=Math.ceil(X.getBaseValue("number")+j*7500),Y=await I(g).getUtxos({address:gX(Q),fetchTxHex:!0,targetValue:L}),q=Number(j.toFixed(0)),G=J?y(J):null,W=[];if(W.push({address:c($),value:X.getBaseValue("number")}),G)W.push({script:G,value:0});let{inputs:U,outputs:z}=S({chain:g,feeRate:q,inputs:Y,outputs:W});if(!(U&&z))throw new h("toolbox_utxo_insufficient_balance",{assetValue:X,sender:Q});let _=new v2({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!G,version:1}),{inputs:N,tx:H}=XX({chain:g,compiledMemo:G,inputs:U,outputs:z,sender:c(Q),tx:_});return{inputs:N,tx:H,utxos:Y}}function s0(X){let $=d0.bitcoinCash,J=y2(X.publicKey,$);if(!J.hash)throw new h("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return A2({hash:J.hash,prefix:E2.MAINNET,type:R2.P2PKH}).replace(/^bitcoincash:/,"")}import{createBase58check as a0,hex as t0}from"@scure/base";import{HDKey as l2}from"@scure/bip32";import{mnemonicToSeedSync as x2}from"@scure/bip39";import{Chain as VX,derivationPathToString as e0,FeeOption as X1,NetworkDerivationPath as $1,SKConfig as eX,SwapKitError as JX,updateDerivationPath as J1}from"@swapkit/helpers";import{Address as j1,createZcashTransaction as Q1,getZcashConsensusBranchId as Z1,isTransparentZcashAddress as K2,OutScript as G1,PCZT as Y1,utils as h2,WIF as q1,ZCASH_NETWORK as L1,ZCASH_TEST_NETWORK as z1,ZcashConsensusBranchId as m2,ZcashPSBT as W1,ZcashSigHash as aX,ZcashVersionGroupId as U1}from"@swapkit/utxo-signer";import{match as _1,P as tX}from"ts-pattern";function X2(){let{isStagenet:X}=eX.get("envs");return X?z1:L1}var N1=a0(h2.sha256);function B1(X){return N1.encode(X)}function M1({phrase:X,derivationPath:$}){let J=x2(X),Q=l2.fromMasterSeed(J).derive($);if(!Q.privateKey||!Q.publicKey)throw new JX("toolbox_utxo_invalid_params");let{privateKey:Z,publicKey:L}=Q,Y=h2.hash160(L),{isStagenet:q}=eX.get("envs"),G=q?new Uint8Array([29,37]):new Uint8Array([28,184]),W=new Uint8Array(G.length+Y.length);W.set(G,0),W.set(Y,G.length);let U=B1(W);return{getAddress:()=>Promise.resolve(U),signTransaction:(z)=>{if(z instanceof W1){let _=z.toPCZT();return _.signAllInputs(Z,L,aX.ALL),_.finalizeAllInputs(),Promise.resolve(_.extract())}if(z instanceof Y1)return z.signAllInputs(Z,L,aX.ALL),z.finalizeAllInputs(),Promise.resolve(z.extract());return z.signAllInputs(Z,L,aX.ALL),Promise.resolve(z)}}}function D1({inputs:X,outputs:$,tx:J,sender:j,compiledMemo:Q}){let Z=X2();for(let L of X){let Y=j1(Z).decode(j),q=G1.encode(Y);J.addInput({index:L.index,script:q,sequence:4294967295,txid:t0.decode(L.hash),value:BigInt(L.value)})}for(let L of $){let Y="address"in L&&L.address?L.address:j,q=L.script;if(q&&!Q)continue;if(q&&Q)J.addOutput({amount:0n,script:Q});else J.addOutputAddress(Y,BigInt(L.value),Z)}return{inputs:X,tx:J}}async function H1(){let{isStagenet:X}=eX.get("envs");if(X)return m2.IRONWOOD;try{let $=await I(VX.Zcash).getBlockHeight();return Z1($+1)}catch{return m2.IRONWOOD}}async function g2(X){let{assetValue:$,recipient:J,memo:j,feeRate:Q,sender:Z,fetchTxHex:L,sweep:Y}=X,q=X2();if(!K2(Z,q))throw new JX("toolbox_utxo_invalid_address",{address:Z});if(!K2(J,q))throw new JX("toolbox_utxo_invalid_address",{address:J,error:"Zcash transaction creation currently supports transparent addresses only"});let G=j?y(j):null,W=await I(VX.Zcash).getUtxos({address:Z,fetchTxHex:L!==!1}),U=[{address:J,value:Y?0:Number($.getBaseValue("string"))},...G?[{script:G,value:0}]:[]],{inputs:z,outputs:_}=S({chain:VX.Zcash,changeAddress:Z,feeRate:Q,inputs:W,outputs:U,sweep:Y});if(!(z&&_))throw new JX("toolbox_utxo_insufficient_balance",{assetValue:$,sender:Z});let N=Q1({consensusBranchId:await H1(),expiryHeight:0,lockTime:0,version:4,versionGroupId:U1.SAPLING}),{tx:H,inputs:D}=D1({compiledMemo:G,inputs:z,outputs:_,sender:Z,tx:N});return{inputs:D,outputs:_,tx:H}}function o2(X){let $=_1(X).with({signer:tX.not(tX.nullish)},({signer:q})=>q).with({phrase:tX.string},({phrase:q,derivationPath:G,index:W=0})=>{let U=G||$1[VX.Zcash]||[44,133,0,0,0],z=J1(U,{index:W}),_=e0(z);return M1({derivationPath:_,phrase:q})}).otherwise(()=>{return}),J=$X({chain:VX.Zcash,signer:$});async function j(q){if(!$)throw new JX("toolbox_utxo_no_signer");return await $.signTransaction(q)}async function Q(q){let G=await j(q);return J.broadcastTx(G.toHex())}async function Z({recipient:q,assetValue:G,feeOptionKey:W=X1.Fast,sweep:U,...z}){let _=await $?.getAddress();if(!($&&_))throw new JX("toolbox_utxo_no_signer");let N=z.feeRate||(await J.getFeeRates())[W],{tx:H}=await g2({...z,assetValue:G,feeRate:N,recipient:q,sender:_,sweep:U}),V=(await $.signTransaction(H)).toHex();return J.broadcastTx(V)}function L({phrase:q,derivationPath:G="m/44'/133'/0'/0/0"}){let W=x2(q),z=l2.fromMasterSeed(W).derive(G);if(!z.privateKey||!z.publicKey)throw new JX("toolbox_utxo_invalid_params");return{privateKey:z.privateKey,publicKey:z.publicKey}}function Y({phrase:q,derivationPath:G="m/44'/133'/0'/0/0"}){let W=L({derivationPath:G,phrase:q}),U=X2();return q1(U).encode(W.privateKey)}return{...J,createKeysForPath:L,createTransaction:g2,getPrivateKeyFromMnemonic:Y,signAndBroadcastTransaction:Q,signTransaction:j,transfer:Z,validateAddress:OX}}import{hex as C1}from"@scure/base";import{HDKey as O1}from"@scure/bip32";import{derivationPathToString as b1}from"@swapkit/helpers";function k1({xpub:X,chain:$,count:J,startIndex:j=0,accountIndex:Q}){if(K("count",J),J<1)throw RangeError("count must be at least 1");K("startIndex",j);let Z=F($),L=O1.fromExtendedKey(X,Z.bip32),Y=n({accountIndex:Q,chain:$}),q=ZX(Y),G=[];for(let W of[!1,!0]){let U=L.deriveChild(Number(W));for(let z=0;z<J;z++){let _=j+z,N=U.deriveChild(_);if(!N.publicKey)continue;let H=MX({accountIndex:Q,chain:$,change:W,index:_});G.push({accountIndex:q,address:kX({chain:$,network:Z,publicKey:N.publicKey}),change:W,index:_,path:b1(H),pubkey:C1.encode(N.publicKey)})}}return G}function l8(X,$){switch(X){case _X.BitcoinCash:return S2($||{});case _X.Zcash:return o2($);case _X.Bitcoin:case _X.Dogecoin:case _X.Litecoin:case _X.Dash:return $X({chain:X,...$});default:throw new V1("toolbox_utxo_not_supported",{chain:X})}}export{OX as validateZcashAddress,k2 as validateUtxoAddress,t as validateBchAddress,c as toLegacyAddress,yX as toCashAddress,gX as stripToCashAddress,LX as stripPrefix,mX as nonSegwitChains,W2 as isValidAddress,l8 as getUtxoToolbox,R1 as getUtxoNetwork,I as getUtxoApi,P2 as getUTXOAddressValidator,MX as getUTXOAddressPath,n as getUTXOAccountPath,ZX as getUTXOAccountIndexFromPath,HX as getScriptTypeForAddress,wX as getOutputSize,F as getNetworkForChain,s as getInputSize,CX as getDustThreshold,U2 as detectAddressNetwork,k1 as deriveAddressesFromXpub,o2 as createZcashToolbox,$X as createUTXOToolbox,d2 as createHDWalletHelpers,E1 as createCustomUtxoApi,S2 as createBCHToolbox,y as compileMemo,qX as calculateTxSize,K as assertDerivationIndex,T2 as addressFromKeysGetter,XX as addInputsAndOutputs,S as accumulative,z2 as UtxoNetwork,pX as UTXOScriptType,cX as TX_OVERHEAD,uX as SEGWIT_MARKER_FLAG_WEIGHT,SX as OutputSizes,O0 as OP_RETURN_OVERHEAD,h1 as MIN_TX_FEE,oX as InputSizes};
@@ -13,6 +13,7 @@ export declare function getUtxoApi(chain: UTXOChain): {
13
13
  utxo: never[];
14
14
  } | undefined>;
15
15
  getBalance: (address: string) => Promise<number>;
16
+ getBlockHeight: () => Promise<number>;
16
17
  getRawTx: (txHash: string) => Promise<string>;
17
18
  getSuggestedTxFee: () => Promise<number>;
18
19
  getTransactionDetails: (txHash: string) => Promise<{
@@ -72,6 +73,7 @@ export declare function createCustomUtxoApi(methods: ReturnType<typeof getUtxoAp
72
73
  utxo: never[];
73
74
  } | undefined>;
74
75
  getBalance: (address: string) => Promise<number>;
76
+ getBlockHeight: () => Promise<number>;
75
77
  getRawTx: (txHash: string) => Promise<string>;
76
78
  getSuggestedTxFee: () => Promise<number>;
77
79
  getTransactionDetails: (txHash: string) => Promise<{
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "dependencies": { "@swapkit/helpers": "4.20.0", "@swapkit/utxo-signer": "2.2.3" },
2
+ "dependencies": { "@swapkit/helpers": "4.20.2", "@swapkit/utxo-signer": "2.3.0" },
3
3
  "description": "SwapKit - Toolboxes",
4
4
  "devDependencies": {
5
5
  "@aptos-labs/ts-sdk": "7.0.1",
@@ -205,5 +205,5 @@
205
205
  "type-check:go": "tsgo"
206
206
  },
207
207
  "type": "module",
208
- "version": "4.27.1"
208
+ "version": "4.28.1"
209
209
  }