@swapkit/toolboxes 5.2.0 → 5.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- import{ea as j2,fa as M2}from"../../chunk-nvfkjbyq.js";import"../../chunk-xbdjxeqd.js";import{NetworkDerivationPath as p2}from"@swapkit/helpers";function g(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)g("accountIndex",X);let[j,Q,Z]=J??p2[$];return[j,Q,X??Z]}function MX({accountIndex:X,change:$=!1,chain:J,derivationPath:j,index:Q}){return g("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(G){let{accountIndex:q,count:Y,startIndex:W=0,change:L=!1}=G;if(g("count",Y),Y<1)throw RangeError("count must be at least 1");g("startIndex",W);let U=[];for(let _=0;_<Y;_++){let B=await X({accountIndex:q,change:L,index:W+_});if(B)U.push(B)}return U}async function Q(G){let{gapLimit:q=20,change:Y=!1}=G??{},W=[],L=0,U=0;while(L<q){let _=await X({change:Y,index:U});if(!_)break;if((await $(_.address)).some((M)=>M.getValue("number")>0))W.push(_),L=0;else L++;U++}return W}async function Z(G=20){let[q,Y]=await Promise.all([Q({change:!1,gapLimit:G}),Q({change:!0,gapLimit:G})]),W=[...q,...Y],L=await Promise.all(W.map(async(_)=>{let H=(await $(_.address)).reduce((M,C)=>M+C.getValue("number"),0);return{..._,balance:H}})),U=L.reduce((_,B)=>_+B.balance,0);return{addresses:L,total:U}}async function z(G=20){let[q,Y]=await Promise.all([Q({change:!1,gapLimit:G}),Q({change:!0,gapLimit:G})]),W=[...q,...Y];return(await Promise.all(W.map(async(U)=>{return(await J(U.address)).map((B)=>({...B,address:U.address,derivationIndex:U.index,isChange:U.change}))}))).flat()}return{deriveAddresses:j,getAggregatedBalance:Z,getAggregatedUtxos:z,scanForAddresses:Q}}import{Chain as T,getRPCUrl as r2,RequestClient as AX,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 AX.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 z=JSON.stringify({id:j2(),jsonrpc:"2.0",method:"sendrawtransaction",params:[$]}),G=await AX.post(Z,{body:z,headers:{"Content-Type":"application/json"}});if(G.error)throw new v("toolbox_utxo_broadcast_failed",{error:G.error?.message});if(G.result.includes('"code":-26'))throw new v("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return G.result}throw Q}}function YX(X){return`https://api.blockchair.com/${a2(X)}`}function $2(X){switch(X){case T.Bitcoin:return 5;case T.Dogecoin:return 1e4;case T.Litecoin:return 1;case T.Zcash:return 1;default:return 2}}function a2(X){switch(X){case T.BitcoinCash:return"bitcoin-cash";case T.Litecoin:return"litecoin";case T.Dash:return"dash";case T.Dogecoin:return"dogecoin";case T.Zcash:return"zcash";case T.Polkadot:return"polkadot";default:return"bitcoin"}}async function t2(X){try{let{feePerKb:$}=await AX.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 AX.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:z,outputs:G}=Q,q=z.map((W)=>W.spending_sequence),Y=Z.is_rbf===!0||q.some((W)=>W<$0);return{blockId:Z.block_id,confirmed:Z.block_id!==-1,fee:Z.fee,inputs:z,isRBF:Y,outputs:G,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:Y,block_id:W,transaction_hash:L,index:U,value:_,spending_signature_hex:B})=>({hash:L,index:U,is_confirmed:W!==-1,is_spent:q,script_hex:Y,txHex:B,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:z=30}){if(!$)throw new v("toolbox_utxo_invalid_params",{error:"Address is required"});try{let G=await j0({address:$,apiKey:J,chain:X,limit:z,offset:Z,targetValue:j}),Y=G.length<z,W=G.filter(({is_spent:M})=>!M),L=Q0(W),U=Q+L,_=j&&U>=j;if(Y||_)return J2(W,j);let B=await G2({accumulativeValue:U,address:$,apiKey:J,chain:X,limit:z,offset:Z+z,targetValue:j}),H=[...W,...B];return J2(H,j)}catch(G){let q=G instanceof Error?G.message:String(G);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}),z=j?await Promise.all(Z.map(({hash:G})=>Z2({apiKey:J,chain:$,txHash:G}))):[];return Z.map(({hash:G,index:q,script_hex:Y,value:W},L)=>({address:X,hash:G,index:q,txHex:j?z[L]:void 0,value:W,witnessUtxo:{script:Buffer.from(Y,"hex"),value:W}}))}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 F1(X){return X}function E1(){return function($){switch($){case T.Bitcoin:return GX.bitcoin;case T.BitcoinCash:return GX.bitcoinCash;case T.Dash:return GX.dash;case T.Litecoin:return GX.litecoin;case T.Dogecoin:return GX.dogecoin;case T.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 yX,decodeCashAddr as G0,encodeCashAddr as Y0}from"@swapkit/utxo-signer";var q0={P2PKH:yX.P2PKH,P2SH:yX.P2SH},L0={[yX.P2PKH]:"P2PKH",[yX.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 RX(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 l1=1000,cX=10,uX=2,O0=10,k0=41,b0=107;function R(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((Y)=>Y.value>=oX["type"in Y&&Y.type?Y.type:"P2PKH"]*Math.ceil(J)):X).reduce((Y,W)=>Y+s(W),0),z=$?.reduce((Y,W)=>Y+wX(W),0)||SX[j],G=cX+Z+z;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[HX(X.address)];return k0+b0},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 z=CX(j),G=X.filter((M)=>{let C=s(M)*J;return Z?M.value>Math.max(C,z):C<=M.value});if(Z){let M=Math.ceil(J*qX({inputs:G,outputs:$})),C=G.reduce((A,l)=>A+l.value,0),u=C-M;if(u<=z)throw new dX("toolbox_sweep_amount_too_low",{available:C,dustThreshold:z,fee:M});let p=$.findIndex((A)=>("address"in A)&&A.address);if(p===-1)throw new dX("toolbox_utxo_invalid_params",{error:"Sweep requires a recipient output"});return{fee:M,inputs:G,outputs:$.map((A,l)=>l===p?{...A,value:u}:A)}}let W=(X[0]&&"address"in X[0]&&X[0].address?HX(X[0].address):"P2PKH")==="P2WPKH"?Math.ceil(uX/4):0,L=cX+W+$.reduce((M,C)=>M+wX(C),0),U=$.reduce((M,C)=>M+C.value,0),_=L*J,B=0,H=[];for(let M of G){let C=s(M),u=J*C;_+=u,B+=M.value,H.push(M);let p=_+U;if(B<p)continue;let A=B-p,l=J*wX({address:Q,value:0});if(A>l){let IX=l+_,PX=B-(U+Math.ceil(IX));if(PX>Math.max(s({value:0})*J,CX(j)))return{fee:Math.ceil(IX),inputs:H,outputs:$.concat({address:Q,value:PX})}}return{fee:Math.ceil(_),inputs:H,outputs:$}}return{fee:Math.ceil(J*qX({inputs:X,outputs:$}))}}import{Chain as _X,SwapKitError as k1}from"@swapkit/helpers";import{hex as E2}from"@scure/base";import{Chain as x0,derivationPathToString as h0,FeeOption as o0,resolveDerivationPath as c0,SwapKitError as h}from"@swapkit/helpers";import{BCHSigHash as u0,CashAddrPrefix as f2,CashAddrType as A2,encodeCashAddr as y2,NETWORKS as p0,p2pkh as R2,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 P,derivationPathToString as kX,FeeOption as w,NetworkDerivationPath as H2,SwapKitError as V,SwapKitNumber as I0,updateDerivationPath as P0,warnOnce as T0}from"@swapkit/helpers";import{Address as F0,BCHSigHash as sX,CashAddrPrefix as E0,CashAddrType as f0,encodeCashAddr as A0,NETWORKS as zX,p2pkh as N2,p2wpkh as y0,RBF_SEQUENCE as R0,SigHash as C2,Transaction as nX,WIF as O2}from"@swapkit/utxo-signer";import{match as k2}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=[P.Dash,P.Dogecoin,P.Zcash,P.BitcoinCash],KX=[P.Bitcoin];function b2({address:X,chain:$}){return k2($).with(P.BitcoinCash,()=>t(X)).with(P.Zcash,()=>OX(X)).otherwise(()=>{try{return F0(E($)).decode(X),!0}catch{return!1}})}function E(X){return k2(X).with(P.Bitcoin,()=>zX.bitcoin).with(P.BitcoinCash,()=>zX.bitcoinCash).with(P.Dash,()=>zX.dash).with(P.Dogecoin,()=>zX.dogecoin).with(P.Litecoin,()=>zX.litecoin).with(P.Zcash,()=>zX.zcash).exhaustive()}function v0({phrase:X,derivationPath:$,network:J,seed:j}){let Q=j??iX(X),z=D2.fromMasterSeed(Q,J.bip32).derive($);if(!z.privateKey)throw new V("toolbox_utxo_invalid_params",{error:"Could not derive private key from phrase"});return z.privateKey}function B2(X){return V0.getPublicKey(X,!0)}function bX({publicKey:X,chain:$,network:J}){if($===P.BitcoinCash){let Z=N2(X,J);if(!Z.hash)throw new V("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return A0({hash:Z.hash,prefix:E0.MAINNET,type:f0.P2PKH}).replace(/^bitcoincash:/,"")}let Q=!mX.includes($)?y0(X,J):N2(X,J);if(!Q.address)throw new V("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=E(J);if(j){let Y=O2(Z).decode(j),W=B2(Y);return{privateKey:Y,publicKey:W}}if(!X)throw new V("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let z=$||kX(H2[J]),G=v0({derivationPath:z,network:Z,phrase:X,seed:Q}),q=B2(G);return{privateKey:G,publicKey:q}}function S0(X,$){return O2(E($)).encode(X)}function w0({phrase:X,derivationPath:$,chain:J,seed:j}){let Q=$.split("/");if(Q.length<4)throw new V("toolbox_utxo_invalid_params",{error:`Derivation path must have at least 4 levels (got ${Q.length}): ${$}`});let Z=E(J),z=j??iX(X),G=D2.fromMasterSeed(z,Z.bip32),q=Q.slice(0,4).join("/");return G.derive(q)}function XX({inputs:X,outputs:$,chain:J,tx:j,sender:Q,compiledMemo:Z,enableRBF:z=!1}){let G=E(J),q=!mX.includes(J),Y=z?R0:void 0,W=new Set;for(let L of X){let U=`${L.hash}:${L.index}`;if(W.has(U))throw new V("toolbox_utxo_invalid_params",{error:"Duplicate input detected"});W.add(U);let _=typeof L.hash==="string"?e.decode(L.hash):L.hash;if(q&&L.witnessUtxo)j.addInput({index:L.index,sequence:Y,txid:_,witnessUtxo:{amount:BigInt(L.witnessUtxo.value),script:L.witnessUtxo.script}});else if(L.txHex)j.addInput({index:L.index,nonWitnessUtxo:e.decode(L.txHex),sequence:Y,txid:_,...J===P.BitcoinCash?{sighashType:sX.ALL}:{}});else throw new V("toolbox_utxo_invalid_params",{error:"Input requires either witnessUtxo or txHex for non-segwit chains"})}for(let L of $){let U="address"in L&&L.address?L.address:Q;if(J===P.BitcoinCash)U=c(U);if(L.script){if(Z)j.addOutput({amount:0n,script:Z})}else j.addOutputAddress(U,BigInt(L.value),G)}return{inputs:X,tx:j}}async function UX(X){let $=await I(X).getSuggestedTxFee();return{[w.Average]:$,[w.Fast]:_2($,w.Fast),[w.Fastest]:_2($,w.Fastest)}}async function V2({assetValue:X,recipient:$,memo:J,sender:j,sweep:Q,fetchTxHex:Z=!1},z){let G=X.chain,q=Z||mX.includes(G),Y=X.getBaseValue("number"),W=Q?void 0:z??(await UX(G))[w.Fastest],L=Q||W===void 0?void 0:Math.ceil(Y+W*5000);return{inputs:await I(G).getUtxos({address:j,fetchTxHex:q,targetValue:L}),outputs:[{address:$,value:Q?0:Y},...J?[{address:"",script:R(J),value:0}]:[]]}}async function I2({assetValue:X,recipient:$,memo:J,feeRate:j,sender:Q,fetchTxHex:Z=!1,enableRBF:z=!1,sweep:G}){let q=X.chain,Y=J?R(J):null,W=await V2({assetValue:X,fetchTxHex:Z,memo:J,recipient:$,sender:Q,sweep:G},j),{inputs:L,outputs:U}=S({...W,chain:q,feeRate:j,sweep:G});if(!(L&&U))throw new V("toolbox_utxo_insufficient_balance",{assetValue:X,sender:Q});let _=new nX({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!Y,version:1}),{inputs:B,tx:H}=XX({chain:q,compiledMemo:Y,enableRBF:z,inputs:L,outputs:U,sender:Q,tx:_});return{inputs:B,tx:H,utxos:W.inputs}}async function P2({assetValue:X,feeOptionKey:$=w.Fast,feeRate:J,memo:j,sender:Q,recipient:Z,sweep:z}){let G=X.chain,q,Y;if(J!==void 0)q=J,Y=Math.floor(J);else{let L=await UX(G);q=L[w.Fastest],Y=L[$]}let W=await V2({assetValue:X,memo:j,recipient:Z,sender:Q,sweep:z},q);return S({...W,chain:G,feeRate:Y,sweep:z})}function K0(X){return async function({from:J,memo:j,feeRate:Q,feeOptionKey:Z=w.Fast,recipient:z=J,recipients:G=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 L=typeof G==="number"?Math.max(G,1):G.length,U=typeof G==="number"||L===0?Array.from({length:L||1},()=>({address:z,value:0})):[...G];if(j)U.push({address:J,script:R(j),value:0});let{outputs:_}=S({chain:X,feeRate:q,inputs:W,outputs:U,sweep:!0}),B=_?.[0]?.value??0;return rX.from({chain:X,value:BigInt(B)})}}function m0(X){return async function(J){let{fee:j}=await P2(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=E(X),{privateKey:Z,publicKey:z}=WX({chain:X,derivationPath:J,phrase:$,seed:j}),G=X===P.BitcoinCash?[sX.ALL]:[C2.ALL];return{getAddress:()=>bX({chain:X,network:Q,publicKey:z}),privateKey:Z,publicKey:z,signTransaction:(q)=>{return q.sign(Z,G),q}}}function l0(X,$){return async function({memo:j,recipient:Q,feeOptionKey:Z,feeRate:z,assetValue:G,enableRBF:q=!1,sweep:Y}){let W=await $?.getAddress();if(!($&&W))throw new V("toolbox_utxo_no_signer");if(!Q)throw new V("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});T0({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 L=q&&KX.includes(X),U=z||(await UX(X))[Z||w.Fast],{tx:_}=await I2({assetValue:G,enableRBF:L,feeRate:U,memo:j,recipient:Q,sender:W,sweep:Y}),B=await $.signTransaction(_);return B.finalize(),I(X).broadcastTx(e.encode(B.extract()))}}function T2(X){return($)=>b2({address:$,chain:X})}function F2(X){let $=E(X);return function(j){if(!j)throw new V("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:P0(H2[X],{index:j}),z=kX(Z),G=J?g0({chain:X,derivationPath:z,phrase:J,seed:Q}):void 0,q="signer"in $?$.signer:void 0,Y=G||q,W=J?WX({chain:X,derivationPath:z,phrase:J,seed:Q}):void 0;function L(){if(Y)return Y.getAddress();return Promise.resolve(void 0)}function U(N){if(!J)return;let D=n({accountIndex:N,chain:X,derivationPath:Z});return w0({chain:X,derivationPath:kX(D),phrase:J,seed:Q})}let _=U();function B(){if(!_)return;return _.publicExtendedKey}function H({accountIndex:N}={}){let D=N===void 0?_:U(N);if(!D)return;let O=n({accountIndex:N,chain:X,derivationPath:Z});return{accountIndex:ZX(O),path:kX(O),xpub:D.publicExtendedKey}}function M({accountIndex:N,index:D,change:O=!1}){let k=N===void 0?_:U(N);if(!k)return;let b=MX({accountIndex:N,chain:X,change:O,derivationPath:Z,index:D}),y=E(X),m=k.deriveChild(Number(O)).deriveChild(D);if(!m.publicKey)throw new V("toolbox_utxo_invalid_params",{error:"Could not derive public key"});let f=bX({chain:X,network:y,publicKey:m.publicKey}),o=e.encode(m.publicKey);return{accountIndex:ZX(b),address:f,change:O,index:D,path:kX(b),pubkey:o}}async function C(N){if(!KX.includes(X))return{reason:`RBF is not supported on ${X}`,supported:!1};let D=await I(X).getTransactionDetails(N);return{canReplace:D.isRBF&&!D.confirmed,confirmed:D.confirmed,enabled:D.isRBF,fee:D.fee,sequences:D.sequences,supported:!0}}async function u({txid:N,newFeeRate:D,recipient:O,memo:k}){if(!KX.includes(X))throw new V("toolbox_utxo_rbf_not_supported",{chain:X});let b=await I(X).getTransactionDetails(N);if(!b.isRBF)throw new V("toolbox_utxo_tx_not_replaceable",{txid:N});if(b.confirmed)throw new V("toolbox_utxo_tx_already_confirmed",{blockId:b.blockId,txid:N});let y=b.inputs.reduce((F,x)=>F+x.value,0),f=b.outputs.find((F)=>F.recipient===O)?.value||0;if(f===0)throw new V("toolbox_utxo_invalid_params",{error:"Could not determine send amount from original transaction"});let o=await Promise.all(b.inputs.map(async(F)=>{let x=await I(X).getRawTx(F.transaction_hash);return{hash:F.transaction_hash,index:F.index,txHex:x,value:F.value,witnessUtxo:void 0}})),NX=k?R(k):null,TX=qX({feeRate:D,inputs:o.map((F)=>({...F,type:"P2WPKH"})),outputs:[{address:O,value:f}]}),d=Math.ceil(TX*D);if(d<=b.fee)throw new V("toolbox_utxo_rbf_fee_too_low",{newFee:d,originalFee:b.fee});let jX=d-b.fee,QX=f-jX;if(QX<=0)throw new V("toolbox_utxo_rbf_insufficient_change");let r=new nX({allowLegacyWitnessUtxo:!0,version:1}),FX=[{address:O,value:QX},...k?[{address:"",script:R(k),value:0}]:[]],EX=y-QX-d,BX=await L();if(EX>CX(X)&&BX)FX.push({address:BX,value:EX});return XX({chain:X,compiledMemo:NX,inputs:o,outputs:FX,sender:BX||O,tx:r}),{feeDelta:jX,newFee:d,originalFee:b.fee,tx:r}}async function p({txid:N,newFeeRate:D,recipient:O,memo:k}){let{tx:b,originalFee:y,newFee:m}=await u({memo:k,newFeeRate:D,recipient:O,txid:N}),f=await lX(b);f.finalize();let o=await I(X).broadcastTx(e.encode(f.extract()));return{newFee:m,originalFee:y,txid:o}}function A({accountIndex:N,index:D,change:O=!1}){g("index",D);let k=N===void 0?_:U(N);if(!k)return;return k.deriveChild(Number(O)).deriveChild(D).privateKey||void 0}function l({tx:N,inputDerivations:D}){if(!_)throw new V("toolbox_utxo_no_signer");let O=X===P.BitcoinCash?[sX.ALL]:[C2.ALL];for(let k=0;k<D.length;k++){let b=D[k];if(!b)continue;let{derivationIndex:y,isChange:m}=b,f=A({change:m,index:y});if(!f)throw new V("toolbox_utxo_invalid_params",{error:`Could not derive private key for input ${k} at index ${y}`});N.signIdx(f,k,O)}return N}async function IX({utxos:N,recipient:D,assetValue:O,memo:k,feeRate:b,feeOptionKey:y,changeAddress:m,sweep:f}){if(f)throw new V("toolbox_utxo_invalid_params",{error:"Sweep is not supported for transfers from multiple addresses"});if(!_)throw new V("toolbox_utxo_no_signer");let o=b||(await UX(X))[y||w.Fast],NX=k?R(k):null,TX=[{address:D,value:O.getBaseValue("number")}];if(NX)TX.push({address:"",script:NX,value:0});let d=N.map(({hash:F,index:x,value:fX,txHex:u2,witnessUtxo:xX})=>({hash:F,index:x,txHex:u2,value:fX,witnessUtxo:xX?{script:xX.script,value:xX.value}:void 0})),{inputs:jX,outputs:QX}=S({chain:X,feeRate:o,inputs:d,outputs:TX});if(!(jX&&QX))throw new V("toolbox_utxo_insufficient_balance",{assetValue:O,sender:"multiple addresses"});let r=new nX({allowLegacyWitnessUtxo:!0,version:1}),FX=N[0]?.address,EX=m||await L()||FX||D;XX({chain:X,compiledMemo:NX,inputs:jX,outputs:QX,sender:EX,tx:r});let BX=jX.map((F)=>{let x=N.find((fX)=>fX.hash===F.hash&&fX.index===F.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 PX({address:N,gapLimit:D=20}){if(!_)return;for(let O=0;O<D;O++){let k=M({change:!1,index:O}),b=M({change:!0,index:O}),y=k?.address===N?!1:b?.address===N;if(k?.address===N||b?.address===N)return{change:y,index:O}}return}function lX(N){if(!Y)throw new V("toolbox_utxo_no_signer");return Y.signTransaction(N)}async function c2(N){let D=await lX(N);return D.finalize(),await I(X).broadcastTx(e.encode(D.extract()))}return{accumulative:S,broadcastTx:(N)=>I(X).broadcastTx(N),bumpFee:p,calculateTxSize:qX,createKeysForPath:(N)=>WX({...N,chain:X}),createReplacementTransaction:u,createTransaction:I2,deriveAddressAtIndex:M,derivePrivateKeyAtIndex:A,estimateMaxSendableAmount:K0(X),estimateTransactionFee:m0(X),getAddress:L,getAddressFromKeys:F2(X),getBalance:M2(X),getExtendedPublicKey:B,getExtendedPublicKeyInfo:H,getFeeRates:()=>UX(X),getInputsOutputsFee:P2,getNetworkForChain:()=>E(X),getPrivateKeyFromMnemonic:(N)=>S0(WX({...N,chain:X}).privateKey,X),isRBFEnabled:C,keys:W,resolveDerivationIndex:PX,signAndBroadcastTransaction:c2,signTransaction:lX,signTransactionWithMultipleKeys:l,transfer:l0(X,Y),transferFromMultipleAddresses:IX,validateAddress:T2(X)}}var K=x0.BitcoinCash;function gX(X){return LX(RX(X))}function d0(X){let $=E(K);function J(Q){return Q.sign(X.privateKey,[u0.ALL]),Q}function j(){let Q=R2(X.publicKey,$);if(!Q.hash)throw new h("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});let Z=y2({hash:Q.hash,prefix:f2.MAINNET,type:A2.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="derivationPath"in X?X.derivationPath:void 0,Q=c0({chain:K,derivationPath:j,index:J}),Z=h0(Q),z=$?WX({chain:K,derivationPath:Z,phrase:$}):void 0,G=z?d0(z):("signer"in X)?X.signer:void 0;function q(){return Promise.resolve(G?.getAddress())}let{getBalance:Y,getFeeRates:W,broadcastTx:L,...U}=$X($?{chain:K,derivationPath:Q,phrase:$}:{chain:K});function _(M,C=!0){return Y(LX(RX(M)))}function B(M){if(!G)throw new h("toolbox_utxo_no_signer");return G.signTransaction(M)}async function H(M){let C=await B(M);return C.finalize(),await L(E2.encode(C.extract()))}return{...U,broadcastTx:L,buildTx:n0,createTransaction:w2,getAddress:q,getAddressFromKeys:i0,getBalance:_,getFeeRates:W,signAndBroadcastTransaction:H,signTransaction:B,stripPrefix:LX,stripToCashAddress:gX,transfer:r0({broadcastTx:L,getFeeRates:W,signer:G}),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 z=Math.ceil(X.getBaseValue("number")+j*7500),G=await I(K).getUtxos({address:gX(Q),fetchTxHex:!0,targetValue:Z?void 0:z}),q=J?R(J):null,Y=[],W=c($);if(Y.push({address:W,value:Z?0:X.getBaseValue("number")}),q)Y.push({script:q,value:0});let{inputs:L,outputs:U}=S({chain:K,feeRate:j,inputs:G,outputs:Y,sweep:Z});if(!(L&&U))throw new h("toolbox_utxo_insufficient_balance",{assetValue:X,sender:Q});let _=new v2({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!q,version:1}),B=c(Q),{inputs:H,tx:M}=XX({chain:K,compiledMemo:q,inputs:L,outputs:U.map((C)=>("address"in C)&&C.address?{...C,address:c(C.address)}:C),sender:B,tx:_});return{inputs:H,tx:M,utxos:L}}function r0({broadcastTx:X,getFeeRates:$,signer:J}){return async function({recipient:Q,assetValue:Z,feeOptionKey:z=o0.Fast,sweep:G,...q}){let Y=await J?.getAddress();if(!(J&&Y))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 $())[z],{tx:L}=await w2({...q,assetValue:Z,feeRate:W,recipient:Q,sender:Y,sweep:G}),U=await J.signTransaction(L);return U.finalize(),X(E2.encode(U.extract()))}}async function n0({assetValue:X,recipient:$,memo:J,feeRate:j,sender:Q}){let Z=RX($);if(!t(Z))throw new h("toolbox_utxo_invalid_address",{address:Z});let z=Math.ceil(X.getBaseValue("number")+j*7500),G=await I(K).getUtxos({address:gX(Q),fetchTxHex:!0,targetValue:z}),q=Number(j.toFixed(0)),Y=J?R(J):null,W=[];if(W.push({address:c($),value:X.getBaseValue("number")}),Y)W.push({script:Y,value:0});let{inputs:L,outputs:U}=S({chain:K,feeRate:q,inputs:G,outputs:W});if(!(L&&U))throw new h("toolbox_utxo_insufficient_balance",{assetValue:X,sender:Q});let _=new v2({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!Y,version:1}),{inputs:B,tx:H}=XX({chain:K,compiledMemo:Y,inputs:L,outputs:U,sender:c(Q),tx:_});return{inputs:B,tx:H,utxos:G}}function i0(X){let $=p0.bitcoinCash,J=R2(X.publicKey,$);if(!J.hash)throw new h("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return y2({hash:J.hash,prefix:f2.MAINNET,type:A2.P2PKH}).replace(/^bitcoincash:/,"")}import{createBase58check as s0,hex as a0}from"@scure/base";import{HDKey as l2}from"@scure/bip32";import{mnemonicToSeedSync as x2}from"@scure/bip39";import{Chain as VX,derivationPathToString as t0,FeeOption as e0,resolveDerivationPath as X1,SKConfig as eX,SwapKitError as JX}from"@swapkit/helpers";import{Address as $1,createZcashTransaction as J1,getZcashConsensusBranchId as j1,isTransparentZcashAddress as K2,OutScript as Q1,PCZT as Z1,utils as h2,WIF as G1,ZCASH_NETWORK as Y1,ZCASH_TEST_NETWORK as q1,ZcashConsensusBranchId as m2,ZcashPSBT as L1,ZcashSigHash as aX,ZcashVersionGroupId as z1}from"@swapkit/utxo-signer";import{match as W1,P as tX}from"ts-pattern";function X2(){let{isStagenet:X}=eX.get("envs");return X?q1:Y1}var U1=s0(h2.sha256);function _1(X){return U1.encode(X)}function N1({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:z}=Q,G=h2.hash160(z),{isStagenet:q}=eX.get("envs"),Y=q?new Uint8Array([29,37]):new Uint8Array([28,184]),W=new Uint8Array(Y.length+G.length);W.set(Y,0),W.set(G,Y.length);let L=_1(W);return{getAddress:()=>Promise.resolve(L),signTransaction:(U)=>{if(U instanceof L1){let _=U.toPCZT();return _.signAllInputs(Z,z,aX.ALL),_.finalizeAllInputs(),Promise.resolve(_.extract())}if(U instanceof Z1)return U.signAllInputs(Z,z,aX.ALL),U.finalizeAllInputs(),Promise.resolve(U.extract());return U.signAllInputs(Z,z,aX.ALL),Promise.resolve(U)}}}function B1({inputs:X,outputs:$,tx:J,sender:j,compiledMemo:Q}){let Z=X2();for(let z of X){let G=$1(Z).decode(j),q=Q1.encode(G);J.addInput({index:z.index,script:q,sequence:4294967295,txid:a0.decode(z.hash),value:BigInt(z.value)})}for(let z of $){let G="address"in z&&z.address?z.address:j,q=z.script;if(q&&!Q)continue;if(q&&Q)J.addOutput({amount:0n,script:Q});else J.addOutputAddress(G,BigInt(z.value),Z)}return{inputs:X,tx:J}}async function M1(){let{isStagenet:X}=eX.get("envs");if(X)return m2.IRONWOOD;try{let $=await I(VX.Zcash).getBlockHeight();return j1($+1)}catch{return m2.IRONWOOD}}async function g2(X){let{assetValue:$,recipient:J,memo:j,feeRate:Q,sender:Z,fetchTxHex:z,sweep:G}=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 Y=j?R(j):null,W=await I(VX.Zcash).getUtxos({address:Z,fetchTxHex:z!==!1}),L=[{address:J,value:G?0:Number($.getBaseValue("string"))},...Y?[{script:Y,value:0}]:[]],{inputs:U,outputs:_}=S({chain:VX.Zcash,changeAddress:Z,feeRate:Q,inputs:W,outputs:L,sweep:G});if(!(U&&_))throw new JX("toolbox_utxo_insufficient_balance",{assetValue:$,sender:Z});let B=J1({consensusBranchId:await M1(),expiryHeight:0,lockTime:0,version:4,versionGroupId:z1.SAPLING}),{tx:H,inputs:M}=B1({compiledMemo:Y,inputs:U,outputs:_,sender:Z,tx:B});return{inputs:M,outputs:_,tx:H}}function o2(X){let $=W1(X).with({signer:tX.not(tX.nullish)},({signer:q})=>q).with({phrase:tX.string},({phrase:q,derivationPath:Y,index:W=0})=>{let L=X1({chain:VX.Zcash,derivationPath:Y,index:W}),U=t0(L);return N1({derivationPath:U,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 Y=await j(q);return J.broadcastTx(Y.toHex())}async function Z({recipient:q,assetValue:Y,feeOptionKey:W=e0.Fast,sweep:L,...U}){let _=await $?.getAddress();if(!($&&_))throw new JX("toolbox_utxo_no_signer");let B=U.feeRate||(await J.getFeeRates())[W],{tx:H}=await g2({...U,assetValue:Y,feeRate:B,recipient:q,sender:_,sweep:L}),C=(await $.signTransaction(H)).toHex();return J.broadcastTx(C)}function z({phrase:q,derivationPath:Y="m/44'/133'/0'/0/0"}){let W=x2(q),U=l2.fromMasterSeed(W).derive(Y);if(!U.privateKey||!U.publicKey)throw new JX("toolbox_utxo_invalid_params");return{privateKey:U.privateKey,publicKey:U.publicKey}}function G({phrase:q,derivationPath:Y="m/44'/133'/0'/0/0"}){let W=z({derivationPath:Y,phrase:q}),L=X2();return G1(L).encode(W.privateKey)}return{...J,createKeysForPath:z,createTransaction:g2,getPrivateKeyFromMnemonic:G,signAndBroadcastTransaction:Q,signTransaction:j,transfer:Z,validateAddress:OX}}import{hex as D1}from"@scure/base";import{HDKey as H1}from"@scure/bip32";import{derivationPathToString as C1}from"@swapkit/helpers";function O1({xpub:X,chain:$,count:J,startIndex:j=0,accountIndex:Q}){if(g("count",J),J<1)throw RangeError("count must be at least 1");g("startIndex",j);let Z=E($),z=H1.fromExtendedKey(X,Z.bip32),G=n({accountIndex:Q,chain:$}),q=ZX(G),Y=[];for(let W of[!1,!0]){let L=z.deriveChild(Number(W));for(let U=0;U<J;U++){let _=j+U,B=L.deriveChild(_);if(!B.publicKey)continue;let H=MX({accountIndex:Q,chain:$,change:W,index:_});Y.push({accountIndex:q,address:bX({chain:$,network:Z,publicKey:B.publicKey}),change:W,index:_,path:C1(H),pubkey:D1.encode(B.publicKey)})}}return Y}function m8(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 k1("toolbox_utxo_not_supported",{chain:X})}}export{OX as validateZcashAddress,b2 as validateUtxoAddress,t as validateBchAddress,c as toLegacyAddress,RX as toCashAddress,gX as stripToCashAddress,LX as stripPrefix,mX as nonSegwitChains,W2 as isValidAddress,m8 as getUtxoToolbox,E1 as getUtxoNetwork,I as getUtxoApi,T2 as getUTXOAddressValidator,MX as getUTXOAddressPath,n as getUTXOAccountPath,ZX as getUTXOAccountIndexFromPath,HX as getScriptTypeForAddress,wX as getOutputSize,E as getNetworkForChain,s as getInputSize,CX as getDustThreshold,U2 as detectAddressNetwork,O1 as deriveAddressesFromXpub,o2 as createZcashToolbox,$X as createUTXOToolbox,d2 as createHDWalletHelpers,F1 as createCustomUtxoApi,S2 as createBCHToolbox,R as compileMemo,qX as calculateTxSize,g as assertDerivationIndex,F2 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,l1 as MIN_TX_FEE,oX as InputSizes};
1
+ import{ea as st,fa as xt}from"../../chunk-s1528ghz.js";import"../../chunk-k50sjysj.js";import{NetworkDerivationPath as $t}from"@swapkit/helpers";function R(e,t){if(!Number.isInteger(t)||t<0)throw RangeError(`${e} must be a non-negative integer, got: ${t}`)}function G({accountIndex:e,chain:t,derivationPath:n}){if(e!==void 0)R("accountIndex",e);let[r,s,o]=n??$t[t];return[r,s,e??o]}function xe({accountIndex:e,change:t=!1,chain:n,derivationPath:r,index:s}){return R("index",s),[...G({accountIndex:e,chain:n,derivationPath:r}),Number(t),s]}function ae(e){return e[2]??0}function Vt({deriveAddress:e,getBalance:t,getUtxos:n}){async function r(a){let{accountIndex:c,count:i,startIndex:p=0,change:u=!1}=a;if(R("count",i),i<1)throw RangeError("count must be at least 1");R("startIndex",p);let l=[];for(let h=0;h<i;h++){let m=await e({accountIndex:c,change:u,index:p+h});if(m)l.push(m)}return l}async function s(a){let{gapLimit:c=20,change:i=!1}=a??{},p=[],u=0,l=0;while(u<c){let h=await e({change:i,index:l});if(!h)break;if((await t(h.address)).some((g)=>g.getValue("number")>0))p.push(h),u=0;else u++;l++}return p}async function o(a=20){let[c,i]=await Promise.all([s({change:!1,gapLimit:a}),s({change:!0,gapLimit:a})]),p=[...c,...i],u=await Promise.all(p.map(async(h)=>{let T=(await t(h.address)).reduce((g,y)=>g+y.getValue("number"),0);return{...h,balance:T}})),l=u.reduce((h,m)=>h+m.balance,0);return{addresses:u,total:l}}async function d(a=20){let[c,i]=await Promise.all([s({change:!1,gapLimit:a}),s({change:!0,gapLimit:a})]),p=[...c,...i];return(await Promise.all(p.map(async(l)=>(await n(l.address)).map((m)=>({...m,address:l.address,derivationIndex:l.index,isChange:l.change}))))).flat()}return{deriveAddresses:r,getAggregatedBalance:o,getAggregatedUtxos:d,scanForAddresses:s}}import{Chain as U,getRPCUrl as qt,RequestClient as ke,SKConfig as Gt,SwapKitError as K,warnOnce as jt}from"@swapkit/helpers";import{NETWORKS as ie}from"@swapkit/utxo-signer";async function Jt({chain:e,txHash:t}){let n=`${ce(e)}/push/transaction`,r=JSON.stringify({data:t});try{let s=await ke.post(n,{body:r,headers:{"Content-Type":"application/json"}});if(s.context.code!==200)throw new K("toolbox_utxo_broadcast_failed",{error:s.context.error||"Transaction broadcast failed"});return s.data?.transaction_hash||t}catch(s){let o=await qt(e);if(o){let d=JSON.stringify({id:st(),jsonrpc:"2.0",method:"sendrawtransaction",params:[t]}),a=await ke.post(o,{body:d,headers:{"Content-Type":"application/json"}});if(a.error)throw new K("toolbox_utxo_broadcast_failed",{error:a.error?.message});if(a.result.includes('"code":-26'))throw new K("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return a.result}throw s}}function ce(e){return`https://api.blockchair.com/${Qt(e)}`}function nt(e){switch(e){case U.Bitcoin:return 5;case U.Dogecoin:return 1e4;case U.Litecoin:return 1;case U.Zcash:return 1;default:return 2}}function Qt(e){switch(e){case U.BitcoinCash:return"bitcoin-cash";case U.Litecoin:return"litecoin";case U.Dash:return"dash";case U.Dogecoin:return"dogecoin";case U.Zcash:return"zcash";case U.Polkadot:return"polkadot";default:return"bitcoin"}}async function Yt(e){try{let{feePerKb:t}=await ke.get(`https://app.bitgo.com/api/v2/${e.toLowerCase()}/tx/fee`),n=t/1000;return Math.max(n,nt(e))}catch{return nt(e)}}async function Te(e,t){let n=await ke.get(`${e}${t?`${e.includes("?")?"&":"?"}key=${t}`:""}`);if(!n||n.context.code!==200)throw new K("toolbox_utxo_api_error",{error:`Failed to query ${e}`});return n.data}async function en({chain:e,apiKey:t}){let n=await Te(`${ce(e)}/stats`,t);if(typeof n.best_block_height!=="number")throw new K("toolbox_utxo_api_error",{error:"Missing best_block_height in stats response"});return n.best_block_height}async function ot({address:e,chain:t,apiKey:n}){if(!e)throw new K("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await Te(`${ce(t)}/dashboards/address/${e}?transaction_details=true`,n))[e]}catch{return{address:{balance:0,transaction_count:0},utxo:[]}}}async function tn({address:e,chain:t,apiKey:n}){return(await ot({address:e,apiKey:n,chain:t}))?.address.balance||0}async function at({chain:e,apiKey:t,txHash:n}){if(!n)throw new K("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await Te(`${ce(e)}/raw/transaction/${n}`,t))?.[n]?.raw_transaction||""}catch(r){let s=r instanceof Error?r.message:String(r);return console.error(`Failed to fetch raw transaction: ${s}`),""}}var nn=4294967294;async function rn({chain:e,apiKey:t,txHash:n}){if(!n)throw new K("toolbox_utxo_invalid_params",{error:"TxHash is required"});let s=(await Te(`${ce(e)}/dashboards/transaction/${n}`,t))?.[n];if(!s)throw new K("toolbox_utxo_tx_not_found",{txHash:n});let{transaction:o,inputs:d,outputs:a}=s,c=d.map((p)=>p.spending_sequence),i=o.is_rbf===!0||c.some((p)=>p<nn);return{blockId:o.block_id,confirmed:o.block_id!==-1,fee:o.fee,inputs:d,isRBF:i,outputs:a,sequences:c,size:o.size,txid:o.hash,weight:o.weight}}async function sn({chain:e,address:t,apiKey:n,offset:r=0,limit:s=30}){return(await Te(`${ce(e)}/outputs?q=recipient(${t}),is_spent(false)&s=value(desc)&fields=is_spent,transaction_hash,index,value,script_hex,block_id,spending_signature_hex&limit=${s}&offset=${r}`,n)).map(({is_spent:c,script_hex:i,block_id:p,transaction_hash:u,index:l,value:h,spending_signature_hex:m})=>({hash:u,index:l,is_confirmed:p!==-1,is_spent:c,script_hex:i,txHex:m,value:h}))}function on(e){return e.reduce((t,n)=>t+n.value,0)}function rt(e,t){let n=[...e].sort((r,s)=>s.value-r.value);if(t){let r=[],s=0;for(let o of n)if(r.push(o),s+=o.value,s>=t)break;return r}return n}async function it({chain:e,address:t,apiKey:n,targetValue:r,accumulativeValue:s=0,offset:o=0,limit:d=30}){if(!t)throw new K("toolbox_utxo_invalid_params",{error:"Address is required"});try{let a=await sn({address:t,apiKey:n,chain:e,limit:d,offset:o,targetValue:r}),i=a.length<d,p=a.filter(({is_spent:g})=>!g),u=on(p),l=s+u,h=r&&l>=r;if(i||h)return rt(p,r);let m=await it({accumulativeValue:l,address:t,apiKey:n,chain:e,limit:d,offset:o+d,targetValue:r}),T=[...p,...m];return rt(T,r)}catch(a){let c=a instanceof Error?a.message:String(a);return console.error(`Failed to fetch unspent UTXOs: ${c}`),[]}}async function an({address:e,chain:t,apiKey:n,fetchTxHex:r=!0,targetValue:s}){let o=await it({address:e,apiKey:n,chain:t,targetValue:s}),d=r?await Promise.all(o.map(({hash:a})=>at({apiKey:n,chain:t,txHash:a}))):[];return o.map(({hash:a,index:c,script_hex:i,value:p},u)=>({address:e,hash:a,index:c,txHex:r?d[u]:void 0,value:p,witnessUtxo:{script:Buffer.from(i,"hex"),value:p}}))}function _(e){let t=Gt.get("apiKeys").blockchair||"";return jt({condition:!t,id:"no_blockchair_api_key_warning",warning:"No Blockchair API key found. Functionality will be limited."}),{broadcastTx:(n)=>Jt({chain:e,txHash:n}),getAddressData:(n)=>ot({address:n,apiKey:t,chain:e}),getBalance:(n)=>tn({address:n,apiKey:t,chain:e}),getBlockHeight:()=>en({apiKey:t,chain:e}),getRawTx:(n)=>at({apiKey:t,chain:e,txHash:n}),getSuggestedTxFee:()=>Yt(e),getTransactionDetails:(n)=>rn({apiKey:t,chain:e,txHash:n}),getUtxos:(n)=>an({...n,apiKey:t,chain:e})}}function Br(e){return e}function Sr(){return function(t){switch(t){case U.Bitcoin:return ie.bitcoin;case U.BitcoinCash:return ie.bitcoinCash;case U.Dash:return ie.dash;case U.Litecoin:return ie.litecoin;case U.Dogecoin:return ie.dogecoin;case U.Zcash:return ie.zcash;default:throw new K("toolbox_utxo_not_supported",{chain:t})}}}import{sha256 as fn}from"@noble/hashes/sha2.js";import{createBase58check as mn}from"@scure/base";import{SwapKitError as ut}from"@swapkit/helpers";import{CashAddrType as Xe,decodeCashAddr as cn,encodeCashAddr as un}from"@swapkit/utxo-signer";var dn={P2PKH:Xe.P2PKH,P2SH:Xe.P2SH},pn={[Xe.P2PKH]:"P2PKH",[Xe.P2SH]:"P2SH"};function ln(e,t,n){return un({hash:n,prefix:e,type:dn[t]})}function hn(e){let t=cn(e),n=pn[t.type];if(!n)throw Error(`Unknown CashAddr type: ${t.type}`);return{hash:t.hash,prefix:t.prefix,type:n}}var Ee={decode:hn,encode:ln};var dt=mn(fn);var pt;((n)=>{n.Mainnet="mainnet";n.Testnet="testnet"})(pt||={});var j={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}};function lt(e){try{return Fe(e),!0}catch{return!1}}function ht(e){return Fe(e)?.network}function Z(e){let t=Fe(e);if(t?.format==="legacy")return e;return Tn(t)}function Ke(e){let t=Fe(e);return yn(t)}function Fe(e){try{let t=gn(e);if(t)return t}catch{}try{let t=xn(e);if(t)return t}catch{}throw new ut("toolbox_utxo_invalid_address",{address:e})}function gn(e){try{let t=dt.decode(e);if(t.length!==21)throw new ut("toolbox_utxo_invalid_address",{address:e});let n=t[0],r=Array.prototype.slice.call(t,1);switch(n){case j.legacy.mainnet.p2pkh:return{format:"legacy",hash:r,network:"mainnet",type:"p2pkh"};case j.legacy.mainnet.p2sh:return{format:"legacy",hash:r,network:"mainnet",type:"p2sh"};case j.legacy.testnet.p2pkh:return{format:"legacy",hash:r,network:"testnet",type:"p2pkh"};case j.legacy.testnet.p2sh:return{format:"legacy",hash:r,network:"testnet",type:"p2sh"};case j.bitpay.mainnet.p2pkh:return{format:"bitpay",hash:r,network:"mainnet",type:"p2pkh"};case j.bitpay.mainnet.p2sh:return{format:"bitpay",hash:r,network:"mainnet",type:"p2sh"};default:return}}catch{return}}function xn(e){if(e.indexOf(":")!==-1)try{return ct(e)}catch{}else{let t=["bitcoincash","bchtest","bchreg"];for(let n of t)try{return ct(`${n}:${e}`)}catch{}}return}function ct(e){try{let{hash:t,prefix:n,type:r}=Ee.decode(e);return{format:"cashaddr",hash:Array.prototype.slice.call(t,0),network:n==="bitcoincash"?"mainnet":"testnet",type:r==="P2PKH"?"p2pkh":"p2sh"}}catch{return}}function Tn(e){let t=j.legacy[e.network][e.type],n=Buffer.alloc(1+e.hash.length);return n[0]=t,n.set(e.hash,1),dt.encode(n)}function yn(e){let t=e.network==="mainnet"?"bitcoincash":"bchtest",n=e.type==="p2pkh"?"P2PKH":"P2SH",r=new Uint8Array(e.hash);return Ee.encode(t,n,r)}import{Chain as Q,SwapKitError as Ve}from"@swapkit/helpers";import{SwapKitError as bn}from"@swapkit/helpers";import{Script as wn}from"@swapkit/utxo-signer";var Nr=1000,Le=10,ze=2,vn=10,Pn=41,_n=107;function X(e){let t=new Uint8Array(Buffer.from(e,"utf8"));return wn.encode(["RETURN",t])}var $e;((n)=>{n.P2PKH="P2PKH";n.P2WPKH="P2WPKH"})($e||={});var Ze={["P2PKH"]:148,["P2WPKH"]:68},De={["P2PKH"]:34,["P2WPKH"]:31},ye=(e)=>{if(e.startsWith("bc1")||e.startsWith("tb1")||e.startsWith("ltc1")||e.startsWith("tltc1"))return"P2WPKH";if(e.startsWith("1")||e.startsWith("m")||e.startsWith("n")||e.startsWith("bitcoincash:q")||e.startsWith("bitcoincash:p")||e.startsWith("q")||e.startsWith("p")||e.startsWith("L")||e.startsWith("M")||e.startsWith("3")||e.startsWith("D")||e.startsWith("A")||e.startsWith("9")||e.startsWith("X")||e.startsWith("7")||e.startsWith("y")||e.startsWith("t1")||e.startsWith("t3")||e.startsWith("tm"))return"P2PKH";throw new bn("toolbox_utxo_invalid_address",{address:e})},ue=({inputs:e,outputs:t,feeRate:n})=>{let r=e[0]&&"address"in e[0]&&e[0].address?ye(e[0].address):"P2PKH",o=(n?e.filter((i)=>i.value>=Ze["type"in i&&i.type?i.type:"P2PKH"]*Math.ceil(n)):e).reduce((i,p)=>i+J(p),0),d=t?.reduce((i,p)=>i+He(p),0)||De[r],a=Le+o+d;return r==="P2WPKH"?Math.ceil(a+ze/4):a},J=(e)=>{if("type"in e&&e.type)return Ze[e.type];if("address"in e&&e.address)return Ze[ye(e.address)];return Pn+_n},He=(e,t)=>{if(e?.script)return vn+e.script.length+(e.script.length>=74?2:1);if(t)return De[t];if("address"in e&&e.address)return De[ye(e.address)];return De.P2PKH};function be(e){switch(e){case Q.Bitcoin:case Q.BitcoinCash:return 550;case Q.Dash:case Q.Litecoin:return 5500;case Q.Dogecoin:return 1e5;case Q.Zcash:return 546;default:throw new Ve("toolbox_utxo_not_supported",{chain:e})}}function F({inputs:e,outputs:t,feeRate:n=1,chain:r=Q.Bitcoin,changeAddress:s="",sweep:o=!1}){let d=be(r),a=e.filter((g)=>{let y=J(g)*n;return o?g.value>Math.max(y,d):y<=g.value});if(o){let g=Math.ceil(n*ue({inputs:a,outputs:t})),y=a.reduce((S,W)=>S+W.value,0),L=y-g;if(L<=d)throw new Ve("toolbox_sweep_amount_too_low",{available:y,dustThreshold:d,fee:g});let z=t.findIndex((S)=>("address"in S)&&S.address);if(z===-1)throw new Ve("toolbox_utxo_invalid_params",{error:"Sweep requires a recipient output"});return{fee:g,inputs:a,outputs:t.map((S,W)=>W===z?{...S,value:L}:S)}}let p=(e[0]&&"address"in e[0]&&e[0].address?ye(e[0].address):"P2PKH")==="P2WPKH"?Math.ceil(ze/4):0,u=Le+p+t.reduce((g,y)=>g+He(y),0),l=t.reduce((g,y)=>g+y.value,0),h=u*n,m=0,T=[];for(let g of a){let y=J(g),L=n*y;h+=L,m+=g.value,T.push(g);let z=h+l;if(m<z)continue;let S=m-z,W=n*He({address:s,value:0});if(S>W){let Ae=W+h,Ue=m-(l+Math.ceil(Ae));if(Ue>Math.max(J({value:0})*n,be(r)))return{fee:Math.ceil(Ae),inputs:T,outputs:t.concat({address:s,value:Ue})}}return{fee:Math.ceil(h),inputs:T,outputs:t}}return{fee:Math.ceil(n*ue({inputs:e,outputs:t}))}}import{Chain as fe,SwapKitError as Pr}from"@swapkit/helpers";import{hex as Bt}from"@scure/base";import{Chain as En,derivationPathToString as Zn,FeeOption as Ln,resolveDerivationPath as zn,SwapKitError as N}from"@swapkit/helpers";import{BCHSigHash as $n,CashAddrPrefix as St,CashAddrType as kt,encodeCashAddr as Xt,NETWORKS as Vn,p2pkh as Kt,Transaction as Ft}from"@swapkit/utxo-signer";import{secp256k1 as An}from"@noble/curves/secp256k1.js";import{hex as ee}from"@scure/base";import{HDKey as Tt}from"@scure/bip32";import{mnemonicToSeedSync as je}from"@scure/bip39";import{AssetValue as qe,applyFeeMultiplier as ft,Chain as A,derivationPathToString as ve,FeeOption as D,NetworkDerivationPath as yt,SwapKitError as P,SwapKitNumber as Un,updateDerivationPath as On,warnOnce as Cn}from"@swapkit/helpers";import{Address as Bn,BCHSigHash as Je,CashAddrPrefix as Sn,CashAddrType as kn,encodeCashAddr as Xn,NETWORKS as pe,p2pkh as mt,p2wpkh as Kn,RBF_SEQUENCE as Fn,SigHash as bt,Transaction as Ge,WIF as wt}from"@swapkit/utxo-signer";import{match as vt}from"ts-pattern";import{validateZcashAddress as we}from"@swapkit/utxo-signer";function de(e){return e.replace(/(bchtest:|bitcoincash:)/,"")}function Y(e){let t=de(e);return lt(t)&&ht(t)==="mainnet"}var Re=[A.Dash,A.Dogecoin,A.Zcash,A.BitcoinCash],Ie=[A.Bitcoin];function Pt({address:e,chain:t}){return vt(t).with(A.BitcoinCash,()=>Y(e)).with(A.Zcash,()=>we(e)).otherwise(()=>{try{return Bn(C(t)).decode(e),!0}catch{return!1}})}function C(e){return vt(e).with(A.Bitcoin,()=>pe.bitcoin).with(A.BitcoinCash,()=>pe.bitcoinCash).with(A.Dash,()=>pe.dash).with(A.Dogecoin,()=>pe.dogecoin).with(A.Litecoin,()=>pe.litecoin).with(A.Zcash,()=>pe.zcash).exhaustive()}function Dn({phrase:e,derivationPath:t,network:n,seed:r}){let s=r??je(e),d=Tt.fromMasterSeed(s,n.bip32).derive(t);if(!d.privateKey)throw new P("toolbox_utxo_invalid_params",{error:"Could not derive private key from phrase"});return d.privateKey}function gt(e){return An.getPublicKey(e,!0)}function Pe({publicKey:e,chain:t,network:n}){if(t===A.BitcoinCash){let o=mt(e,n);if(!o.hash)throw new P("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return Xn({hash:o.hash,prefix:Sn.MAINNET,type:kn.P2PKH}).replace(/^bitcoincash:/,"")}let s=!Re.includes(t)?Kn(e,n):mt(e,n);if(!s.address)throw new P("toolbox_utxo_invalid_address",{error:"Could not derive address"});return s.address}function le({phrase:e,derivationPath:t,chain:n,wif:r,seed:s}){let o=C(n);if(r){let i=wt(o).decode(r),p=gt(i);return{privateKey:i,publicKey:p}}if(!e)throw new P("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let d=t||ve(yt[n]),a=Dn({derivationPath:d,network:o,phrase:e,seed:s}),c=gt(a);return{privateKey:a,publicKey:c}}function Hn(e,t){return wt(C(t)).encode(e)}function In({phrase:e,derivationPath:t,chain:n,seed:r}){let s=t.split("/");if(s.length<4)throw new P("toolbox_utxo_invalid_params",{error:`Derivation path must have at least 4 levels (got ${s.length}): ${t}`});let o=C(n),d=r??je(e),a=Tt.fromMasterSeed(d,o.bip32),c=s.slice(0,4).join("/");return a.derive(c)}function te({inputs:e,outputs:t,chain:n,tx:r,sender:s,compiledMemo:o,enableRBF:d=!1}){let a=C(n),c=!Re.includes(n),i=d?Fn:void 0,p=new Set;for(let u of e){let l=`${u.hash}:${u.index}`;if(p.has(l))throw new P("toolbox_utxo_invalid_params",{error:"Duplicate input detected"});p.add(l);let h=typeof u.hash==="string"?ee.decode(u.hash):u.hash;if(c&&u.witnessUtxo)r.addInput({index:u.index,sequence:i,txid:h,witnessUtxo:{amount:BigInt(u.witnessUtxo.value),script:u.witnessUtxo.script}});else if(u.txHex)r.addInput({index:u.index,nonWitnessUtxo:ee.decode(u.txHex),sequence:i,txid:h,...n===A.BitcoinCash?{sighashType:Je.ALL}:{}});else throw new P("toolbox_utxo_invalid_params",{error:"Input requires either witnessUtxo or txHex for non-segwit chains"})}for(let u of t){let l="address"in u&&u.address?u.address:s;if(n===A.BitcoinCash)l=Z(l);if(u.script){if(o)r.addOutput({amount:0n,script:o})}else r.addOutputAddress(l,BigInt(u.value),a)}return{inputs:e,tx:r}}async function he(e){let t=await _(e).getSuggestedTxFee();return{[D.Average]:t,[D.Fast]:ft(t,D.Fast),[D.Fastest]:ft(t,D.Fastest)}}async function _t({assetValue:e,recipient:t,memo:n,sender:r,sweep:s,fetchTxHex:o=!1},d){let a=e.chain,c=o||Re.includes(a),i=e.getBaseValue("number"),p=s?void 0:d??(await he(a))[D.Fastest],u=s||p===void 0?void 0:Math.ceil(i+p*5000);return{inputs:await _(a).getUtxos({address:r,fetchTxHex:c,targetValue:u}),outputs:[{address:t,value:s?0:i},...n?[{address:"",script:X(n),value:0}]:[]]}}async function At({assetValue:e,recipient:t,memo:n,feeRate:r,sender:s,fetchTxHex:o=!1,enableRBF:d=!1,sweep:a}){let c=e.chain,i=n?X(n):null,p=await _t({assetValue:e,fetchTxHex:o,memo:n,recipient:t,sender:s,sweep:a},r),{inputs:u,outputs:l}=F({...p,chain:c,feeRate:r,sweep:a});if(!(u&&l))throw new P("toolbox_utxo_insufficient_balance",{assetValue:e,sender:s});let h=new Ge({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!i,version:1}),{inputs:m,tx:T}=te({chain:c,compiledMemo:i,enableRBF:d,inputs:u,outputs:l,sender:s,tx:h});return{inputs:m,tx:T,utxos:p.inputs}}async function Ut({assetValue:e,feeOptionKey:t=D.Fast,feeRate:n,memo:r,sender:s,recipient:o,sweep:d}){let a=e.chain,c,i;if(n!==void 0)c=n,i=Math.floor(n);else{let u=await he(a);c=u[D.Fastest],i=u[t]}let p=await _t({assetValue:e,memo:r,recipient:o,sender:s,sweep:d},c);return F({...p,chain:a,feeRate:i,sweep:d})}function Rn(e){return async function({from:n,memo:r,feeRate:s,feeOptionKey:o=D.Fast,recipient:d=n,recipients:a=1}){let c=s??(await he(e))[o],p=(await _(e).getUtxos({address:n,fetchTxHex:!1})).filter((T)=>T.value>Math.max(be(e),J(T)*c));if(!p.length)return qe.from({chain:e});let u=typeof a==="number"?Math.max(a,1):a.length,l=typeof a==="number"||u===0?Array.from({length:u||1},()=>({address:d,value:0})):[...a];if(r)l.push({address:n,script:X(r),value:0});let{outputs:h}=F({chain:e,feeRate:c,inputs:p,outputs:l,sweep:!0}),m=h?.[0]?.value??0;return qe.from({chain:e,value:BigInt(m)})}}function Wn(e){return async function(n){let{fee:r}=await Ut(n);return qe.from({chain:e,value:Un.fromBigInt(BigInt(r),8).getValue("string")})}}function Mn({chain:e,phrase:t,derivationPath:n,seed:r}){let s=C(e),{privateKey:o,publicKey:d}=le({chain:e,derivationPath:n,phrase:t,seed:r}),a=e===A.BitcoinCash?[Je.ALL]:[bt.ALL];return{getAddress:()=>Pe({chain:e,network:s,publicKey:d}),privateKey:o,publicKey:d,signTransaction:(c)=>(c.sign(o,a),c)}}function Nn(e,t){return async function({memo:r,recipient:s,feeOptionKey:o,feeRate:d,assetValue:a,enableRBF:c=!1,sweep:i}){let p=await t?.getAddress();if(!(t&&p))throw new P("toolbox_utxo_no_signer");if(!s)throw new P("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});Cn({condition:c&&!Ie.includes(e),id:`rbf_not_supported_${e}`,warning:`RBF (Replace-by-Fee) is not reliably supported on ${e}. Transaction will be created without RBF signaling.`});let u=c&&Ie.includes(e),l=d||(await he(e))[o||D.Fast],{tx:h}=await At({assetValue:a,enableRBF:u,feeRate:l,memo:r,recipient:s,sender:p,sweep:i}),m=await t.signTransaction(h);return m.finalize(),_(e).broadcastTx(ee.encode(m.extract()))}}function Ot(e){return(t)=>Pt({address:t,chain:e})}function Ct(e){let t=C(e);return function(r){if(!r)throw new P("toolbox_utxo_invalid_params",{error:"Keys must be provided"});return Pe({chain:e,network:t,publicKey:r.publicKey})}}function ne({chain:e,...t}){let n="phrase"in t?t.phrase:void 0,r="index"in t?t.index||0:0,s=n?je(n):void 0,o="derivationPath"in t&&t.derivationPath?t.derivationPath:On(yt[e],{index:r}),d=ve(o),a=n?Mn({chain:e,derivationPath:d,phrase:n,seed:s}):void 0,c="signer"in t?t.signer:void 0,i=a||c,p=n?le({chain:e,derivationPath:d,phrase:n,seed:s}):void 0;function u(){if(i)return i.getAddress();return Promise.resolve(void 0)}function l(f){if(!n)return;let x=G({accountIndex:f,chain:e,derivationPath:o});return In({chain:e,derivationPath:ve(x),phrase:n,seed:s})}let h=l();function m(){if(!h)return;return h.publicExtendedKey}function T({accountIndex:f}={}){let x=f===void 0?h:l(f);if(!x)return;let b=G({accountIndex:f,chain:e,derivationPath:o});return{accountIndex:ae(b),path:ve(b),xpub:x.publicExtendedKey}}function g({accountIndex:f,index:x,change:b=!1}){let w=f===void 0?h:l(f);if(!w)return;let v=xe({accountIndex:f,chain:e,change:b,derivationPath:o,index:x}),k=C(e),I=w.deriveChild(Number(b)).deriveChild(x);if(!I.publicKey)throw new P("toolbox_utxo_invalid_params",{error:"Could not derive public key"});let B=Pe({chain:e,network:k,publicKey:I.publicKey}),E=ee.encode(I.publicKey);return{accountIndex:ae(v),address:B,change:b,index:x,path:ve(v),pubkey:E}}async function y(f){if(!Ie.includes(e))return{reason:`RBF is not supported on ${e}`,supported:!1};let x=await _(e).getTransactionDetails(f);return{canReplace:x.isRBF&&!x.confirmed,confirmed:x.confirmed,enabled:x.isRBF,fee:x.fee,sequences:x.sequences,supported:!0}}async function L({txid:f,newFeeRate:x,recipient:b,memo:w}){if(!Ie.includes(e))throw new P("toolbox_utxo_rbf_not_supported",{chain:e});let v=await _(e).getTransactionDetails(f);if(!v.isRBF)throw new P("toolbox_utxo_tx_not_replaceable",{txid:f});if(v.confirmed)throw new P("toolbox_utxo_tx_already_confirmed",{blockId:v.blockId,txid:f});let k=v.inputs.reduce((O,M)=>O+M.value,0),B=v.outputs.find((O)=>O.recipient===b)?.value||0;if(B===0)throw new P("toolbox_utxo_invalid_params",{error:"Could not determine send amount from original transaction"});let E=await Promise.all(v.inputs.map(async(O)=>{let M=await _(e).getRawTx(O.transaction_hash);return{hash:O.transaction_hash,index:O.index,txHex:M,value:O.value,witnessUtxo:void 0}})),me=w?X(w):null,Oe=ue({feeRate:x,inputs:E.map((O)=>({...O,type:"P2WPKH"})),outputs:[{address:b,value:B}]}),V=Math.ceil(Oe*x);if(V<=v.fee)throw new P("toolbox_utxo_rbf_fee_too_low",{newFee:V,originalFee:v.fee});let se=V-v.fee,oe=B-se;if(oe<=0)throw new P("toolbox_utxo_rbf_insufficient_change");let q=new Ge({allowLegacyWitnessUtxo:!0,version:1}),Ce=[{address:b,value:oe},...w?[{address:"",script:X(w),value:0}]:[]],Be=k-oe-V,ge=await u();if(Be>be(e)&&ge)Ce.push({address:ge,value:Be});return te({chain:e,compiledMemo:me,inputs:E,outputs:Ce,sender:ge||b,tx:q}),{feeDelta:se,newFee:V,originalFee:v.fee,tx:q}}async function z({txid:f,newFeeRate:x,recipient:b,memo:w}){let{tx:v,originalFee:k,newFee:I}=await L({memo:w,newFeeRate:x,recipient:b,txid:f}),B=await Me(v);B.finalize();let E=await _(e).broadcastTx(ee.encode(B.extract()));return{newFee:I,originalFee:k,txid:E}}function S({accountIndex:f,index:x,change:b=!1}){R("index",x);let w=f===void 0?h:l(f);if(!w)return;return w.deriveChild(Number(b)).deriveChild(x).privateKey||void 0}function W({tx:f,inputDerivations:x}){if(!h)throw new P("toolbox_utxo_no_signer");let b=e===A.BitcoinCash?[Je.ALL]:[bt.ALL];for(let w=0;w<x.length;w++){let v=x[w];if(!v)continue;let{derivationIndex:k,isChange:I}=v,B=S({change:I,index:k});if(!B)throw new P("toolbox_utxo_invalid_params",{error:`Could not derive private key for input ${w} at index ${k}`});f.signIdx(B,w,b)}return f}async function Ae({utxos:f,recipient:x,assetValue:b,memo:w,feeRate:v,feeOptionKey:k,changeAddress:I,sweep:B}){if(B)throw new P("toolbox_utxo_invalid_params",{error:"Sweep is not supported for transfers from multiple addresses"});if(!h)throw new P("toolbox_utxo_no_signer");let E=v||(await he(e))[k||D.Fast],me=w?X(w):null,Oe=[{address:x,value:b.getBaseValue("number")}];if(me)Oe.push({address:"",script:me,value:0});let V=f.map(({hash:O,index:M,value:Se,txHex:zt,witnessUtxo:Ne})=>({hash:O,index:M,txHex:zt,value:Se,witnessUtxo:Ne?{script:Ne.script,value:Ne.value}:void 0})),{inputs:se,outputs:oe}=F({chain:e,feeRate:E,inputs:V,outputs:Oe});if(!(se&&oe))throw new P("toolbox_utxo_insufficient_balance",{assetValue:b,sender:"multiple addresses"});let q=new Ge({allowLegacyWitnessUtxo:!0,version:1}),Ce=f[0]?.address,Be=I||await u()||Ce||x;te({chain:e,compiledMemo:me,inputs:se,outputs:oe,sender:Be,tx:q});let ge=se.map((O)=>{let M=f.find((Se)=>Se.hash===O.hash&&Se.index===O.index);return M?{derivationIndex:M.derivationIndex,isChange:M.isChange}:{derivationIndex:0,isChange:!1}});return W({inputDerivations:ge,tx:q}),q.finalize(),_(e).broadcastTx(ee.encode(q.extract()))}function Ue({address:f,gapLimit:x=20}){if(!h)return;for(let b=0;b<x;b++){let w=g({change:!1,index:b}),v=g({change:!0,index:b}),k=w?.address===f?!1:v?.address===f;if(w?.address===f||v?.address===f)return{change:k,index:b}}return}function Me(f){if(!i)throw new P("toolbox_utxo_no_signer");return i.signTransaction(f)}async function Lt(f){let x=await Me(f);return x.finalize(),await _(e).broadcastTx(ee.encode(x.extract()))}return{accumulative:F,broadcastTx:(f)=>_(e).broadcastTx(f),bumpFee:z,calculateTxSize:ue,createKeysForPath:(f)=>le({...f,chain:e}),createReplacementTransaction:L,createTransaction:At,deriveAddressAtIndex:g,derivePrivateKeyAtIndex:S,estimateMaxSendableAmount:Rn(e),estimateTransactionFee:Wn(e),getAddress:u,getAddressFromKeys:Ct(e),getBalance:xt(e),getExtendedPublicKey:m,getExtendedPublicKeyInfo:T,getFeeRates:()=>he(e),getInputsOutputsFee:Ut,getNetworkForChain:()=>C(e),getPrivateKeyFromMnemonic:(f)=>Hn(le({...f,chain:e}).privateKey,e),isRBFEnabled:y,keys:p,resolveDerivationIndex:Ue,signAndBroadcastTransaction:Lt,signTransaction:Me,signTransactionWithMultipleKeys:W,transfer:Nn(e,i),transferFromMultipleAddresses:Ae,validateAddress:Ot(e)}}var H=En.BitcoinCash;function We(e){return de(Ke(e))}function qn(e){let t=C(H);function n(s){return s.sign(e.privateKey,[$n.ALL]),s}function r(){let s=Kt(e.publicKey,t);if(!s.hash)throw new N("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});let o=Xt({hash:s.hash,prefix:St.MAINNET,type:kt.P2PKH});return Promise.resolve(o.replace(/^bitcoincash:/,""))}return{getAddress:r,signTransaction:n}}function Dt(e){let t="phrase"in e?e.phrase:void 0,n="index"in e?e.index||0:0,r="derivationPath"in e?e.derivationPath:void 0,s=zn({chain:H,derivationPath:r,index:n}),o=Zn(s),d=t?le({chain:H,derivationPath:o,phrase:t}):void 0,a=d?qn(d):("signer"in e)?e.signer:void 0;function c(){return Promise.resolve(a?.getAddress())}let{getBalance:i,getFeeRates:p,broadcastTx:u,...l}=ne(t?{chain:H,derivationPath:s,phrase:t}:{chain:H});function h(g,y=!0){return i(de(Ke(g)))}function m(g){if(!a)throw new N("toolbox_utxo_no_signer");return a.signTransaction(g)}async function T(g){let y=await m(g);return y.finalize(),await u(Bt.encode(y.extract()))}return{...l,broadcastTx:u,buildTx:jn,createTransaction:Ht,getAddress:c,getAddressFromKeys:Jn,getBalance:h,getFeeRates:p,signAndBroadcastTransaction:T,signTransaction:m,stripPrefix:de,stripToCashAddress:We,transfer:Gn({broadcastTx:u,getFeeRates:p,signer:a}),validateAddress:Y}}async function Ht({assetValue:e,recipient:t,memo:n,feeRate:r,sender:s,sweep:o}){if(!Y(t))throw new N("toolbox_utxo_invalid_address",{address:t});let d=Math.ceil(e.getBaseValue("number")+r*7500),a=await _(H).getUtxos({address:We(s),fetchTxHex:!0,targetValue:o?void 0:d}),c=n?X(n):null,i=[],p=Z(t);if(i.push({address:p,value:o?0:e.getBaseValue("number")}),c)i.push({script:c,value:0});let{inputs:u,outputs:l}=F({chain:H,feeRate:r,inputs:a,outputs:i,sweep:o});if(!(u&&l))throw new N("toolbox_utxo_insufficient_balance",{assetValue:e,sender:s});let h=new Ft({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!c,version:1}),m=Z(s),{inputs:T,tx:g}=te({chain:H,compiledMemo:c,inputs:u,outputs:l.map((y)=>("address"in y)&&y.address?{...y,address:Z(y.address)}:y),sender:m,tx:h});return{inputs:T,tx:g,utxos:u}}function Gn({broadcastTx:e,getFeeRates:t,signer:n}){return async function({recipient:s,assetValue:o,feeOptionKey:d=Ln.Fast,sweep:a,...c}){let i=await n?.getAddress();if(!(n&&i))throw new N("toolbox_utxo_no_signer");if(!s)throw new N("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let p=c.feeRate||(await t())[d],{tx:u}=await Ht({...c,assetValue:o,feeRate:p,recipient:s,sender:i,sweep:a}),l=await n.signTransaction(u);return l.finalize(),e(Bt.encode(l.extract()))}}async function jn({assetValue:e,recipient:t,memo:n,feeRate:r,sender:s}){let o=Ke(t);if(!Y(o))throw new N("toolbox_utxo_invalid_address",{address:o});let d=Math.ceil(e.getBaseValue("number")+r*7500),a=await _(H).getUtxos({address:We(s),fetchTxHex:!0,targetValue:d}),c=Number(r.toFixed(0)),i=n?X(n):null,p=[];if(p.push({address:Z(t),value:e.getBaseValue("number")}),i)p.push({script:i,value:0});let{inputs:u,outputs:l}=F({chain:H,feeRate:c,inputs:a,outputs:p});if(!(u&&l))throw new N("toolbox_utxo_insufficient_balance",{assetValue:e,sender:s});let h=new Ft({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!i,version:1}),{inputs:m,tx:T}=te({chain:H,compiledMemo:i,inputs:u,outputs:l,sender:Z(s),tx:h});return{inputs:m,tx:T,utxos:a}}function Jn(e){let t=Vn.bitcoinCash,n=Kt(e.publicKey,t);if(!n.hash)throw new N("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return Xt({hash:n.hash,prefix:St.MAINNET,type:kt.P2PKH}).replace(/^bitcoincash:/,"")}import{createBase58check as Qn,hex as Yn}from"@scure/base";import{HDKey as Mt}from"@scure/bip32";import{mnemonicToSeedSync as Nt}from"@scure/bip39";import{Chain as _e,derivationPathToString as er,FeeOption as tr,resolveDerivationPath as nr,SKConfig as et,SwapKitError as re}from"@swapkit/helpers";import{Address as rr,createZcashTransaction as sr,getZcashConsensusBranchId as or,isTransparentZcashAddress as It,OutScript as ar,PCZT as ir,utils as Et,WIF as cr,ZCASH_NETWORK as ur,ZCASH_TEST_NETWORK as dr,ZcashConsensusBranchId as Rt,ZcashPSBT as pr,ZcashSigHash as Qe,ZcashVersionGroupId as lr}from"@swapkit/utxo-signer";import{match as hr,P as Ye}from"ts-pattern";function tt(){let{isStagenet:e}=et.get("envs");return e?dr:ur}var fr=Qn(Et.sha256);function mr(e){return fr.encode(e)}function gr({phrase:e,derivationPath:t}){let n=Nt(e),s=Mt.fromMasterSeed(n).derive(t);if(!s.privateKey||!s.publicKey)throw new re("toolbox_utxo_invalid_params");let{privateKey:o,publicKey:d}=s,a=Et.hash160(d),{isStagenet:c}=et.get("envs"),i=c?new Uint8Array([29,37]):new Uint8Array([28,184]),p=new Uint8Array(i.length+a.length);p.set(i,0),p.set(a,i.length);let u=mr(p);return{getAddress:()=>Promise.resolve(u),signTransaction:(l)=>{if(l instanceof pr){let h=l.toPCZT();return h.signAllInputs(o,d,Qe.ALL),h.finalizeAllInputs(),Promise.resolve(h.extract())}if(l instanceof ir)return l.signAllInputs(o,d,Qe.ALL),l.finalizeAllInputs(),Promise.resolve(l.extract());return l.signAllInputs(o,d,Qe.ALL),Promise.resolve(l)}}}function xr({inputs:e,outputs:t,tx:n,sender:r,compiledMemo:s}){let o=tt();for(let d of e){let a=rr(o).decode(r),c=ar.encode(a);n.addInput({index:d.index,script:c,sequence:4294967295,txid:Yn.decode(d.hash),value:BigInt(d.value)})}for(let d of t){let a="address"in d&&d.address?d.address:r,c=d.script;if(c&&!s)continue;if(c&&s)n.addOutput({amount:0n,script:s});else n.addOutputAddress(a,BigInt(d.value),o)}return{inputs:e,tx:n}}async function Tr(){let{isStagenet:e}=et.get("envs");if(e)return Rt.IRONWOOD;try{let t=await _(_e.Zcash).getBlockHeight();return or(t+1)}catch{return Rt.IRONWOOD}}async function Wt(e){let{assetValue:t,recipient:n,memo:r,feeRate:s,sender:o,fetchTxHex:d,sweep:a}=e,c=tt();if(!It(o,c))throw new re("toolbox_utxo_invalid_address",{address:o});if(!It(n,c))throw new re("toolbox_utxo_invalid_address",{address:n,error:"Zcash transaction creation currently supports transparent addresses only"});let i=r?X(r):null,p=await _(_e.Zcash).getUtxos({address:o,fetchTxHex:d!==!1}),u=[{address:n,value:a?0:Number(t.getBaseValue("string"))},...i?[{script:i,value:0}]:[]],{inputs:l,outputs:h}=F({chain:_e.Zcash,changeAddress:o,feeRate:s,inputs:p,outputs:u,sweep:a});if(!(l&&h))throw new re("toolbox_utxo_insufficient_balance",{assetValue:t,sender:o});let m=sr({consensusBranchId:await Tr(),expiryHeight:0,lockTime:0,version:4,versionGroupId:lr.SAPLING}),{tx:T,inputs:g}=xr({compiledMemo:i,inputs:l,outputs:h,sender:o,tx:m});return{inputs:g,outputs:h,tx:T}}function Zt(e){let t=hr(e).with({signer:Ye.not(Ye.nullish)},({signer:c})=>c).with({phrase:Ye.string},({phrase:c,derivationPath:i,index:p=0})=>{let u=nr({chain:_e.Zcash,derivationPath:i,index:p}),l=er(u);return gr({derivationPath:l,phrase:c})}).otherwise(()=>{return}),n=ne({chain:_e.Zcash,signer:t});async function r(c){if(!t)throw new re("toolbox_utxo_no_signer");return await t.signTransaction(c)}async function s(c){let i=await r(c);return n.broadcastTx(i.toHex())}async function o({recipient:c,assetValue:i,feeOptionKey:p=tr.Fast,sweep:u,...l}){let h=await t?.getAddress();if(!(t&&h))throw new re("toolbox_utxo_no_signer");let m=l.feeRate||(await n.getFeeRates())[p],{tx:T}=await Wt({...l,assetValue:i,feeRate:m,recipient:c,sender:h,sweep:u}),y=(await t.signTransaction(T)).toHex();return n.broadcastTx(y)}function d({phrase:c,derivationPath:i="m/44'/133'/0'/0/0"}){let p=Nt(c),l=Mt.fromMasterSeed(p).derive(i);if(!l.privateKey||!l.publicKey)throw new re("toolbox_utxo_invalid_params");return{privateKey:l.privateKey,publicKey:l.publicKey}}function a({phrase:c,derivationPath:i="m/44'/133'/0'/0/0"}){let p=d({derivationPath:i,phrase:c}),u=tt();return cr(u).encode(p.privateKey)}return{...n,createKeysForPath:d,createTransaction:Wt,getPrivateKeyFromMnemonic:a,signAndBroadcastTransaction:s,signTransaction:r,transfer:o,validateAddress:we}}import{hex as yr}from"@scure/base";import{HDKey as br}from"@scure/bip32";import{derivationPathToString as wr}from"@swapkit/helpers";function vr({xpub:e,chain:t,count:n,startIndex:r=0,accountIndex:s}){if(R("count",n),n<1)throw RangeError("count must be at least 1");R("startIndex",r);let o=C(t),d=br.fromExtendedKey(e,o.bip32),a=G({accountIndex:s,chain:t}),c=ae(a),i=[];for(let p of[!1,!0]){let u=d.deriveChild(Number(p));for(let l=0;l<n;l++){let h=r+l,m=u.deriveChild(h);if(!m.publicKey)continue;let T=xe({accountIndex:s,chain:t,change:p,index:h});i.push({accountIndex:c,address:Pe({chain:t,network:o,publicKey:m.publicKey}),change:p,index:h,path:wr(T),pubkey:yr.encode(m.publicKey)})}}return i}function Ws(e,t){switch(e){case fe.BitcoinCash:return Dt(t||{});case fe.Zcash:return Zt(t);case fe.Bitcoin:case fe.Dogecoin:case fe.Litecoin:case fe.Dash:return ne({chain:e,...t});default:throw new Pr("toolbox_utxo_not_supported",{chain:e})}}export{Ze as InputSizes,Nr as MIN_TX_FEE,vn as OP_RETURN_OVERHEAD,De as OutputSizes,ze as SEGWIT_MARKER_FLAG_WEIGHT,Le as TX_OVERHEAD,$e as UTXOScriptType,pt as UtxoNetwork,F as accumulative,te as addInputsAndOutputs,Ct as addressFromKeysGetter,R as assertDerivationIndex,ue as calculateTxSize,X as compileMemo,Dt as createBCHToolbox,Br as createCustomUtxoApi,Vt as createHDWalletHelpers,ne as createUTXOToolbox,Zt as createZcashToolbox,vr as deriveAddressesFromXpub,ht as detectAddressNetwork,be as getDustThreshold,J as getInputSize,C as getNetworkForChain,He as getOutputSize,ye as getScriptTypeForAddress,ae as getUTXOAccountIndexFromPath,G as getUTXOAccountPath,xe as getUTXOAddressPath,Ot as getUTXOAddressValidator,_ as getUtxoApi,Sr as getUtxoNetwork,Ws as getUtxoToolbox,lt as isValidAddress,Re as nonSegwitChains,de as stripPrefix,We as stripToCashAddress,Ke as toCashAddress,Z as toLegacyAddress,Y as validateBchAddress,Pt as validateUtxoAddress,we as validateZcashAddress};
@@ -28,9 +28,9 @@ export declare function BaseEVMToolbox<P extends Provider | BrowserProvider, S e
28
28
  }): {
29
29
  approve: ({ assetAddress, spenderAddress, feeOptionKey, amount, gasLimitFallback, from: fromParam, nonce, }: ApproveParams) => Promise<string>;
30
30
  approvedAmount: ({ assetAddress, spenderAddress, from }: IsApprovedParams) => Promise<bigint>;
31
- broadcastTransaction: ((signedTx: string) => Promise<import("ethers").TransactionResponse>) | ((signedTx: string) => Promise<import("ethers").TransactionResponse>);
31
+ broadcastTransaction: (signedTx: string) => Promise<import("ethers").TransactionResponse>;
32
32
  call: <T>({ callProvider, contractAddress, abi, funcName, funcParams, txOverrides, feeOption, }: CallParams) => Promise<T>;
33
- createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam }: ApproveParams) => Promise<{
33
+ createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam, nonce, }: ApproveParams) => Promise<{
34
34
  value: string;
35
35
  to: string;
36
36
  data: string;
@@ -7,9 +7,9 @@ export declare function ETHToolbox(params: EVMToolboxParams): {
7
7
  }[], multicallAddress?: string, funcName?: string, feeOptionKey?: FeeOption) => Promise<string>;
8
8
  approve: ({ assetAddress, spenderAddress, feeOptionKey, amount, gasLimitFallback, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<string>;
9
9
  approvedAmount: ({ assetAddress, spenderAddress, from }: import("..").IsApprovedParams) => Promise<bigint>;
10
- broadcastTransaction: ((signedTx: string) => Promise<import("ethers").TransactionResponse>) | ((signedTx: string) => Promise<import("ethers").TransactionResponse>);
10
+ broadcastTransaction: (signedTx: string) => Promise<import("ethers").TransactionResponse>;
11
11
  call: <T>({ callProvider, contractAddress, abi, funcName, funcParams, txOverrides, feeOption, }: import("..").CallParams) => Promise<T>;
12
- createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam }: import("..").ApproveParams) => Promise<{
12
+ createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<{
13
13
  value: string;
14
14
  to: string;
15
15
  data: string;
@@ -179,9 +179,9 @@ export declare function ETHToolbox(params: EVMToolboxParams): {
179
179
  export declare const ADIToolbox: ({ provider, ...toolboxParams }: EVMToolboxParams) => {
180
180
  approve: ({ assetAddress, spenderAddress, feeOptionKey, amount, gasLimitFallback, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<string>;
181
181
  approvedAmount: ({ assetAddress, spenderAddress, from }: import("..").IsApprovedParams) => Promise<bigint>;
182
- broadcastTransaction: ((signedTx: string) => Promise<import("ethers").TransactionResponse>) | ((signedTx: string) => Promise<import("ethers").TransactionResponse>);
182
+ broadcastTransaction: (signedTx: string) => Promise<import("ethers").TransactionResponse>;
183
183
  call: <T>({ callProvider, contractAddress, abi, funcName, funcParams, txOverrides, feeOption, }: import("..").CallParams) => Promise<T>;
184
- createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam }: import("..").ApproveParams) => Promise<{
184
+ createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<{
185
185
  value: string;
186
186
  to: string;
187
187
  data: string;
@@ -351,9 +351,9 @@ export declare const ADIToolbox: ({ provider, ...toolboxParams }: EVMToolboxPara
351
351
  export declare const ARBToolbox: ({ provider, ...toolboxParams }: EVMToolboxParams) => {
352
352
  approve: ({ assetAddress, spenderAddress, feeOptionKey, amount, gasLimitFallback, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<string>;
353
353
  approvedAmount: ({ assetAddress, spenderAddress, from }: import("..").IsApprovedParams) => Promise<bigint>;
354
- broadcastTransaction: ((signedTx: string) => Promise<import("ethers").TransactionResponse>) | ((signedTx: string) => Promise<import("ethers").TransactionResponse>);
354
+ broadcastTransaction: (signedTx: string) => Promise<import("ethers").TransactionResponse>;
355
355
  call: <T>({ callProvider, contractAddress, abi, funcName, funcParams, txOverrides, feeOption, }: import("..").CallParams) => Promise<T>;
356
- createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam }: import("..").ApproveParams) => Promise<{
356
+ createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<{
357
357
  value: string;
358
358
  to: string;
359
359
  data: string;
@@ -523,9 +523,9 @@ export declare const ARBToolbox: ({ provider, ...toolboxParams }: EVMToolboxPara
523
523
  export declare const AURORAToolbox: ({ provider, ...toolboxParams }: EVMToolboxParams) => {
524
524
  approve: ({ assetAddress, spenderAddress, feeOptionKey, amount, gasLimitFallback, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<string>;
525
525
  approvedAmount: ({ assetAddress, spenderAddress, from }: import("..").IsApprovedParams) => Promise<bigint>;
526
- broadcastTransaction: ((signedTx: string) => Promise<import("ethers").TransactionResponse>) | ((signedTx: string) => Promise<import("ethers").TransactionResponse>);
526
+ broadcastTransaction: (signedTx: string) => Promise<import("ethers").TransactionResponse>;
527
527
  call: <T>({ callProvider, contractAddress, abi, funcName, funcParams, txOverrides, feeOption, }: import("..").CallParams) => Promise<T>;
528
- createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam }: import("..").ApproveParams) => Promise<{
528
+ createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<{
529
529
  value: string;
530
530
  to: string;
531
531
  data: string;
@@ -695,9 +695,9 @@ export declare const AURORAToolbox: ({ provider, ...toolboxParams }: EVMToolboxP
695
695
  export declare const AVAXToolbox: ({ provider, ...toolboxParams }: EVMToolboxParams) => {
696
696
  approve: ({ assetAddress, spenderAddress, feeOptionKey, amount, gasLimitFallback, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<string>;
697
697
  approvedAmount: ({ assetAddress, spenderAddress, from }: import("..").IsApprovedParams) => Promise<bigint>;
698
- broadcastTransaction: ((signedTx: string) => Promise<import("ethers").TransactionResponse>) | ((signedTx: string) => Promise<import("ethers").TransactionResponse>);
698
+ broadcastTransaction: (signedTx: string) => Promise<import("ethers").TransactionResponse>;
699
699
  call: <T>({ callProvider, contractAddress, abi, funcName, funcParams, txOverrides, feeOption, }: import("..").CallParams) => Promise<T>;
700
- createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam }: import("..").ApproveParams) => Promise<{
700
+ createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<{
701
701
  value: string;
702
702
  to: string;
703
703
  data: string;
@@ -874,9 +874,9 @@ export declare const BASEToolbox: ({ provider, ...toolboxSignerParams }: EVMTool
874
874
  getL1GasPrice: () => Promise<bigint | undefined>;
875
875
  approve: ({ assetAddress, spenderAddress, feeOptionKey, amount, gasLimitFallback, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<string>;
876
876
  approvedAmount: ({ assetAddress, spenderAddress, from }: import("..").IsApprovedParams) => Promise<bigint>;
877
- broadcastTransaction: ((signedTx: string) => Promise<import("ethers").TransactionResponse>) | ((signedTx: string) => Promise<import("ethers").TransactionResponse>);
877
+ broadcastTransaction: (signedTx: string) => Promise<import("ethers").TransactionResponse>;
878
878
  call: <T>({ callProvider, contractAddress, abi, funcName, funcParams, txOverrides, feeOption, }: import("..").CallParams) => Promise<T>;
879
- createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam }: import("..").ApproveParams) => Promise<{
879
+ createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<{
880
880
  value: string;
881
881
  to: string;
882
882
  data: string;
@@ -1045,9 +1045,9 @@ export declare const BASEToolbox: ({ provider, ...toolboxSignerParams }: EVMTool
1045
1045
  export declare const BERAToolbox: ({ provider, ...toolboxParams }: EVMToolboxParams) => {
1046
1046
  approve: ({ assetAddress, spenderAddress, feeOptionKey, amount, gasLimitFallback, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<string>;
1047
1047
  approvedAmount: ({ assetAddress, spenderAddress, from }: import("..").IsApprovedParams) => Promise<bigint>;
1048
- broadcastTransaction: ((signedTx: string) => Promise<import("ethers").TransactionResponse>) | ((signedTx: string) => Promise<import("ethers").TransactionResponse>);
1048
+ broadcastTransaction: (signedTx: string) => Promise<import("ethers").TransactionResponse>;
1049
1049
  call: <T>({ callProvider, contractAddress, abi, funcName, funcParams, txOverrides, feeOption, }: import("..").CallParams) => Promise<T>;
1050
- createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam }: import("..").ApproveParams) => Promise<{
1050
+ createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<{
1051
1051
  value: string;
1052
1052
  to: string;
1053
1053
  data: string;
@@ -1217,9 +1217,9 @@ export declare const BERAToolbox: ({ provider, ...toolboxParams }: EVMToolboxPar
1217
1217
  export declare const BSCToolbox: ({ provider, ...toolboxParams }: EVMToolboxParams) => {
1218
1218
  approve: ({ assetAddress, spenderAddress, feeOptionKey, amount, gasLimitFallback, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<string>;
1219
1219
  approvedAmount: ({ assetAddress, spenderAddress, from }: import("..").IsApprovedParams) => Promise<bigint>;
1220
- broadcastTransaction: ((signedTx: string) => Promise<import("ethers").TransactionResponse>) | ((signedTx: string) => Promise<import("ethers").TransactionResponse>);
1220
+ broadcastTransaction: (signedTx: string) => Promise<import("ethers").TransactionResponse>;
1221
1221
  call: <T>({ callProvider, contractAddress, abi, funcName, funcParams, txOverrides, feeOption, }: import("..").CallParams) => Promise<T>;
1222
- createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam }: import("..").ApproveParams) => Promise<{
1222
+ createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<{
1223
1223
  value: string;
1224
1224
  to: string;
1225
1225
  data: string;
@@ -1389,9 +1389,9 @@ export declare const BSCToolbox: ({ provider, ...toolboxParams }: EVMToolboxPara
1389
1389
  export declare const BotanixToolbox: ({ provider, ...toolboxParams }: EVMToolboxParams) => {
1390
1390
  approve: ({ assetAddress, spenderAddress, feeOptionKey, amount, gasLimitFallback, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<string>;
1391
1391
  approvedAmount: ({ assetAddress, spenderAddress, from }: import("..").IsApprovedParams) => Promise<bigint>;
1392
- broadcastTransaction: ((signedTx: string) => Promise<import("ethers").TransactionResponse>) | ((signedTx: string) => Promise<import("ethers").TransactionResponse>);
1392
+ broadcastTransaction: (signedTx: string) => Promise<import("ethers").TransactionResponse>;
1393
1393
  call: <T>({ callProvider, contractAddress, abi, funcName, funcParams, txOverrides, feeOption, }: import("..").CallParams) => Promise<T>;
1394
- createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam }: import("..").ApproveParams) => Promise<{
1394
+ createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<{
1395
1395
  value: string;
1396
1396
  to: string;
1397
1397
  data: string;
@@ -1561,9 +1561,9 @@ export declare const BotanixToolbox: ({ provider, ...toolboxParams }: EVMToolbox
1561
1561
  export declare const COREToolbox: ({ provider, ...toolboxParams }: EVMToolboxParams) => {
1562
1562
  approve: ({ assetAddress, spenderAddress, feeOptionKey, amount, gasLimitFallback, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<string>;
1563
1563
  approvedAmount: ({ assetAddress, spenderAddress, from }: import("..").IsApprovedParams) => Promise<bigint>;
1564
- broadcastTransaction: ((signedTx: string) => Promise<import("ethers").TransactionResponse>) | ((signedTx: string) => Promise<import("ethers").TransactionResponse>);
1564
+ broadcastTransaction: (signedTx: string) => Promise<import("ethers").TransactionResponse>;
1565
1565
  call: <T>({ callProvider, contractAddress, abi, funcName, funcParams, txOverrides, feeOption, }: import("..").CallParams) => Promise<T>;
1566
- createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam }: import("..").ApproveParams) => Promise<{
1566
+ createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<{
1567
1567
  value: string;
1568
1568
  to: string;
1569
1569
  data: string;
@@ -1733,9 +1733,9 @@ export declare const COREToolbox: ({ provider, ...toolboxParams }: EVMToolboxPar
1733
1733
  export declare const CORNToolbox: ({ provider, ...toolboxParams }: EVMToolboxParams) => {
1734
1734
  approve: ({ assetAddress, spenderAddress, feeOptionKey, amount, gasLimitFallback, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<string>;
1735
1735
  approvedAmount: ({ assetAddress, spenderAddress, from }: import("..").IsApprovedParams) => Promise<bigint>;
1736
- broadcastTransaction: ((signedTx: string) => Promise<import("ethers").TransactionResponse>) | ((signedTx: string) => Promise<import("ethers").TransactionResponse>);
1736
+ broadcastTransaction: (signedTx: string) => Promise<import("ethers").TransactionResponse>;
1737
1737
  call: <T>({ callProvider, contractAddress, abi, funcName, funcParams, txOverrides, feeOption, }: import("..").CallParams) => Promise<T>;
1738
- createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam }: import("..").ApproveParams) => Promise<{
1738
+ createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<{
1739
1739
  value: string;
1740
1740
  to: string;
1741
1741
  data: string;
@@ -1905,9 +1905,9 @@ export declare const CORNToolbox: ({ provider, ...toolboxParams }: EVMToolboxPar
1905
1905
  export declare const CROToolbox: ({ provider, ...toolboxParams }: EVMToolboxParams) => {
1906
1906
  approve: ({ assetAddress, spenderAddress, feeOptionKey, amount, gasLimitFallback, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<string>;
1907
1907
  approvedAmount: ({ assetAddress, spenderAddress, from }: import("..").IsApprovedParams) => Promise<bigint>;
1908
- broadcastTransaction: ((signedTx: string) => Promise<import("ethers").TransactionResponse>) | ((signedTx: string) => Promise<import("ethers").TransactionResponse>);
1908
+ broadcastTransaction: (signedTx: string) => Promise<import("ethers").TransactionResponse>;
1909
1909
  call: <T>({ callProvider, contractAddress, abi, funcName, funcParams, txOverrides, feeOption, }: import("..").CallParams) => Promise<T>;
1910
- createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam }: import("..").ApproveParams) => Promise<{
1910
+ createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<{
1911
1911
  value: string;
1912
1912
  to: string;
1913
1913
  data: string;
@@ -2077,9 +2077,9 @@ export declare const CROToolbox: ({ provider, ...toolboxParams }: EVMToolboxPara
2077
2077
  export declare const GNOToolbox: ({ provider, ...toolboxParams }: EVMToolboxParams) => {
2078
2078
  approve: ({ assetAddress, spenderAddress, feeOptionKey, amount, gasLimitFallback, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<string>;
2079
2079
  approvedAmount: ({ assetAddress, spenderAddress, from }: import("..").IsApprovedParams) => Promise<bigint>;
2080
- broadcastTransaction: ((signedTx: string) => Promise<import("ethers").TransactionResponse>) | ((signedTx: string) => Promise<import("ethers").TransactionResponse>);
2080
+ broadcastTransaction: (signedTx: string) => Promise<import("ethers").TransactionResponse>;
2081
2081
  call: <T>({ callProvider, contractAddress, abi, funcName, funcParams, txOverrides, feeOption, }: import("..").CallParams) => Promise<T>;
2082
- createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam }: import("..").ApproveParams) => Promise<{
2082
+ createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<{
2083
2083
  value: string;
2084
2084
  to: string;
2085
2085
  data: string;
@@ -2249,9 +2249,9 @@ export declare const GNOToolbox: ({ provider, ...toolboxParams }: EVMToolboxPara
2249
2249
  export declare const HOODToolbox: ({ provider, ...toolboxParams }: EVMToolboxParams) => {
2250
2250
  approve: ({ assetAddress, spenderAddress, feeOptionKey, amount, gasLimitFallback, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<string>;
2251
2251
  approvedAmount: ({ assetAddress, spenderAddress, from }: import("..").IsApprovedParams) => Promise<bigint>;
2252
- broadcastTransaction: ((signedTx: string) => Promise<import("ethers").TransactionResponse>) | ((signedTx: string) => Promise<import("ethers").TransactionResponse>);
2252
+ broadcastTransaction: (signedTx: string) => Promise<import("ethers").TransactionResponse>;
2253
2253
  call: <T>({ callProvider, contractAddress, abi, funcName, funcParams, txOverrides, feeOption, }: import("..").CallParams) => Promise<T>;
2254
- createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam }: import("..").ApproveParams) => Promise<{
2254
+ createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<{
2255
2255
  value: string;
2256
2256
  to: string;
2257
2257
  data: string;
@@ -2421,9 +2421,9 @@ export declare const HOODToolbox: ({ provider, ...toolboxParams }: EVMToolboxPar
2421
2421
  export declare const HYPEREVMToolbox: ({ provider, ...toolboxParams }: EVMToolboxParams) => {
2422
2422
  approve: ({ assetAddress, spenderAddress, feeOptionKey, amount, gasLimitFallback, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<string>;
2423
2423
  approvedAmount: ({ assetAddress, spenderAddress, from }: import("..").IsApprovedParams) => Promise<bigint>;
2424
- broadcastTransaction: ((signedTx: string) => Promise<import("ethers").TransactionResponse>) | ((signedTx: string) => Promise<import("ethers").TransactionResponse>);
2424
+ broadcastTransaction: (signedTx: string) => Promise<import("ethers").TransactionResponse>;
2425
2425
  call: <T>({ callProvider, contractAddress, abi, funcName, funcParams, txOverrides, feeOption, }: import("..").CallParams) => Promise<T>;
2426
- createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam }: import("..").ApproveParams) => Promise<{
2426
+ createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<{
2427
2427
  value: string;
2428
2428
  to: string;
2429
2429
  data: string;
@@ -2593,9 +2593,9 @@ export declare const HYPEREVMToolbox: ({ provider, ...toolboxParams }: EVMToolbo
2593
2593
  export declare const LINEAToolbox: ({ provider, ...toolboxParams }: EVMToolboxParams) => {
2594
2594
  approve: ({ assetAddress, spenderAddress, feeOptionKey, amount, gasLimitFallback, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<string>;
2595
2595
  approvedAmount: ({ assetAddress, spenderAddress, from }: import("..").IsApprovedParams) => Promise<bigint>;
2596
- broadcastTransaction: ((signedTx: string) => Promise<import("ethers").TransactionResponse>) | ((signedTx: string) => Promise<import("ethers").TransactionResponse>);
2596
+ broadcastTransaction: (signedTx: string) => Promise<import("ethers").TransactionResponse>;
2597
2597
  call: <T>({ callProvider, contractAddress, abi, funcName, funcParams, txOverrides, feeOption, }: import("..").CallParams) => Promise<T>;
2598
- createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam }: import("..").ApproveParams) => Promise<{
2598
+ createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<{
2599
2599
  value: string;
2600
2600
  to: string;
2601
2601
  data: string;
@@ -2765,9 +2765,9 @@ export declare const LINEAToolbox: ({ provider, ...toolboxParams }: EVMToolboxPa
2765
2765
  export declare const MATICToolbox: ({ provider, ...toolboxParams }: EVMToolboxParams) => {
2766
2766
  approve: ({ assetAddress, spenderAddress, feeOptionKey, amount, gasLimitFallback, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<string>;
2767
2767
  approvedAmount: ({ assetAddress, spenderAddress, from }: import("..").IsApprovedParams) => Promise<bigint>;
2768
- broadcastTransaction: ((signedTx: string) => Promise<import("ethers").TransactionResponse>) | ((signedTx: string) => Promise<import("ethers").TransactionResponse>);
2768
+ broadcastTransaction: (signedTx: string) => Promise<import("ethers").TransactionResponse>;
2769
2769
  call: <T>({ callProvider, contractAddress, abi, funcName, funcParams, txOverrides, feeOption, }: import("..").CallParams) => Promise<T>;
2770
- createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam }: import("..").ApproveParams) => Promise<{
2770
+ createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<{
2771
2771
  value: string;
2772
2772
  to: string;
2773
2773
  data: string;
@@ -2937,9 +2937,9 @@ export declare const MATICToolbox: ({ provider, ...toolboxParams }: EVMToolboxPa
2937
2937
  export declare const MEGAETHToolbox: ({ provider, ...toolboxParams }: EVMToolboxParams) => {
2938
2938
  approve: ({ assetAddress, spenderAddress, feeOptionKey, amount, gasLimitFallback, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<string>;
2939
2939
  approvedAmount: ({ assetAddress, spenderAddress, from }: import("..").IsApprovedParams) => Promise<bigint>;
2940
- broadcastTransaction: ((signedTx: string) => Promise<import("ethers").TransactionResponse>) | ((signedTx: string) => Promise<import("ethers").TransactionResponse>);
2940
+ broadcastTransaction: (signedTx: string) => Promise<import("ethers").TransactionResponse>;
2941
2941
  call: <T>({ callProvider, contractAddress, abi, funcName, funcParams, txOverrides, feeOption, }: import("..").CallParams) => Promise<T>;
2942
- createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam }: import("..").ApproveParams) => Promise<{
2942
+ createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<{
2943
2943
  value: string;
2944
2944
  to: string;
2945
2945
  data: string;
@@ -3109,9 +3109,9 @@ export declare const MEGAETHToolbox: ({ provider, ...toolboxParams }: EVMToolbox
3109
3109
  export declare const MONADToolbox: ({ provider, ...toolboxParams }: EVMToolboxParams) => {
3110
3110
  approve: ({ assetAddress, spenderAddress, feeOptionKey, amount, gasLimitFallback, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<string>;
3111
3111
  approvedAmount: ({ assetAddress, spenderAddress, from }: import("..").IsApprovedParams) => Promise<bigint>;
3112
- broadcastTransaction: ((signedTx: string) => Promise<import("ethers").TransactionResponse>) | ((signedTx: string) => Promise<import("ethers").TransactionResponse>);
3112
+ broadcastTransaction: (signedTx: string) => Promise<import("ethers").TransactionResponse>;
3113
3113
  call: <T>({ callProvider, contractAddress, abi, funcName, funcParams, txOverrides, feeOption, }: import("..").CallParams) => Promise<T>;
3114
- createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam }: import("..").ApproveParams) => Promise<{
3114
+ createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<{
3115
3115
  value: string;
3116
3116
  to: string;
3117
3117
  data: string;
@@ -3281,9 +3281,9 @@ export declare const MONADToolbox: ({ provider, ...toolboxParams }: EVMToolboxPa
3281
3281
  export declare const PLASMAToolbox: ({ provider, ...toolboxParams }: EVMToolboxParams) => {
3282
3282
  approve: ({ assetAddress, spenderAddress, feeOptionKey, amount, gasLimitFallback, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<string>;
3283
3283
  approvedAmount: ({ assetAddress, spenderAddress, from }: import("..").IsApprovedParams) => Promise<bigint>;
3284
- broadcastTransaction: ((signedTx: string) => Promise<import("ethers").TransactionResponse>) | ((signedTx: string) => Promise<import("ethers").TransactionResponse>);
3284
+ broadcastTransaction: (signedTx: string) => Promise<import("ethers").TransactionResponse>;
3285
3285
  call: <T>({ callProvider, contractAddress, abi, funcName, funcParams, txOverrides, feeOption, }: import("..").CallParams) => Promise<T>;
3286
- createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam }: import("..").ApproveParams) => Promise<{
3286
+ createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<{
3287
3287
  value: string;
3288
3288
  to: string;
3289
3289
  data: string;
@@ -3453,9 +3453,9 @@ export declare const PLASMAToolbox: ({ provider, ...toolboxParams }: EVMToolboxP
3453
3453
  export declare const SONICToolbox: ({ provider, ...toolboxParams }: EVMToolboxParams) => {
3454
3454
  approve: ({ assetAddress, spenderAddress, feeOptionKey, amount, gasLimitFallback, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<string>;
3455
3455
  approvedAmount: ({ assetAddress, spenderAddress, from }: import("..").IsApprovedParams) => Promise<bigint>;
3456
- broadcastTransaction: ((signedTx: string) => Promise<import("ethers").TransactionResponse>) | ((signedTx: string) => Promise<import("ethers").TransactionResponse>);
3456
+ broadcastTransaction: (signedTx: string) => Promise<import("ethers").TransactionResponse>;
3457
3457
  call: <T>({ callProvider, contractAddress, abi, funcName, funcParams, txOverrides, feeOption, }: import("..").CallParams) => Promise<T>;
3458
- createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam }: import("..").ApproveParams) => Promise<{
3458
+ createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<{
3459
3459
  value: string;
3460
3460
  to: string;
3461
3461
  data: string;
@@ -3632,9 +3632,9 @@ export declare const UNIToolbox: ({ provider, ...toolboxSignerParams }: EVMToolb
3632
3632
  getL1GasPrice: () => Promise<bigint | undefined>;
3633
3633
  approve: ({ assetAddress, spenderAddress, feeOptionKey, amount, gasLimitFallback, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<string>;
3634
3634
  approvedAmount: ({ assetAddress, spenderAddress, from }: import("..").IsApprovedParams) => Promise<bigint>;
3635
- broadcastTransaction: ((signedTx: string) => Promise<import("ethers").TransactionResponse>) | ((signedTx: string) => Promise<import("ethers").TransactionResponse>);
3635
+ broadcastTransaction: (signedTx: string) => Promise<import("ethers").TransactionResponse>;
3636
3636
  call: <T>({ callProvider, contractAddress, abi, funcName, funcParams, txOverrides, feeOption, }: import("..").CallParams) => Promise<T>;
3637
- createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam }: import("..").ApproveParams) => Promise<{
3637
+ createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<{
3638
3638
  value: string;
3639
3639
  to: string;
3640
3640
  data: string;
@@ -3803,9 +3803,9 @@ export declare const UNIToolbox: ({ provider, ...toolboxSignerParams }: EVMToolb
3803
3803
  export declare const XLayerToolbox: ({ provider, ...toolboxParams }: EVMToolboxParams) => {
3804
3804
  approve: ({ assetAddress, spenderAddress, feeOptionKey, amount, gasLimitFallback, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<string>;
3805
3805
  approvedAmount: ({ assetAddress, spenderAddress, from }: import("..").IsApprovedParams) => Promise<bigint>;
3806
- broadcastTransaction: ((signedTx: string) => Promise<import("ethers").TransactionResponse>) | ((signedTx: string) => Promise<import("ethers").TransactionResponse>);
3806
+ broadcastTransaction: (signedTx: string) => Promise<import("ethers").TransactionResponse>;
3807
3807
  call: <T>({ callProvider, contractAddress, abi, funcName, funcParams, txOverrides, feeOption, }: import("..").CallParams) => Promise<T>;
3808
- createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam }: import("..").ApproveParams) => Promise<{
3808
+ createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<{
3809
3809
  value: string;
3810
3810
  to: string;
3811
3811
  data: string;
@@ -12,9 +12,9 @@ export declare function createOPStackToolbox(chain: Chain.Optimism | Chain.Base
12
12
  getL1GasPrice: () => Promise<bigint | undefined>;
13
13
  approve: ({ assetAddress, spenderAddress, feeOptionKey, amount, gasLimitFallback, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<string>;
14
14
  approvedAmount: ({ assetAddress, spenderAddress, from }: import("..").IsApprovedParams) => Promise<bigint>;
15
- broadcastTransaction: ((signedTx: string) => Promise<import("ethers").TransactionResponse>) | ((signedTx: string) => Promise<import("ethers").TransactionResponse>);
15
+ broadcastTransaction: (signedTx: string) => Promise<import("ethers").TransactionResponse>;
16
16
  call: <T>({ callProvider, contractAddress, abi, funcName, funcParams, txOverrides, feeOption, }: import("..").CallParams) => Promise<T>;
17
- createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam }: import("..").ApproveParams) => Promise<{
17
+ createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<{
18
18
  value: string;
19
19
  to: string;
20
20
  data: string;
@@ -190,9 +190,9 @@ export declare const OPToolbox: ({ provider, ...toolboxSignerParams }: EVMToolbo
190
190
  getL1GasPrice: () => Promise<bigint | undefined>;
191
191
  approve: ({ assetAddress, spenderAddress, feeOptionKey, amount, gasLimitFallback, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<string>;
192
192
  approvedAmount: ({ assetAddress, spenderAddress, from }: import("..").IsApprovedParams) => Promise<bigint>;
193
- broadcastTransaction: ((signedTx: string) => Promise<import("ethers").TransactionResponse>) | ((signedTx: string) => Promise<import("ethers").TransactionResponse>);
193
+ broadcastTransaction: (signedTx: string) => Promise<import("ethers").TransactionResponse>;
194
194
  call: <T>({ callProvider, contractAddress, abi, funcName, funcParams, txOverrides, feeOption, }: import("..").CallParams) => Promise<T>;
195
- createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam }: import("..").ApproveParams) => Promise<{
195
+ createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam, nonce, }: import("..").ApproveParams) => Promise<{
196
196
  value: string;
197
197
  to: string;
198
198
  data: string;
@@ -1,4 +1,4 @@
1
- import type { TronSignedTransaction, TronTransaction } from "../types";
1
+ import type { TronGridResponse, TronSignedTransaction, TronTransaction } from "../types";
2
2
  export declare function fetchAccountFromTronGrid(address: string): Promise<{
3
3
  balance: number;
4
4
  trc20: import("../types").TronGridTRC20Balance;
@@ -7,7 +7,7 @@ export declare function buildTrxTransaction({ from, to, amount }: {
7
7
  from: string;
8
8
  to: string;
9
9
  amount: number;
10
- }): Promise<TronTransaction>;
10
+ }): Promise<TronGridResponse<TronTransaction>>;
11
11
  export declare function buildContractTransaction({ ownerAddress, contractAddress, functionSelector, parameter, feeLimit, callValue, }: {
12
12
  ownerAddress: string;
13
13
  contractAddress: string;
@@ -24,6 +24,13 @@ export interface TronTransaction {
24
24
  contractRet?: string;
25
25
  }>;
26
26
  }
27
+ /**
28
+ * TronGrid answers contract validation failures with HTTP 200 and an `Error` field rather than an
29
+ * error status, so every response body may carry one alongside (or instead of) the expected shape.
30
+ */
31
+ export type TronGridResponse<T> = T & {
32
+ Error?: string;
33
+ };
27
34
  export type TronTransactionMetadata = {
28
35
  data?: string;
29
36
  value?: string;
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "dependencies": { "@swapkit/helpers": "5.2.0", "@swapkit/utxo-signer": "3.0.0" },
2
+ "dependencies": { "@swapkit/helpers": "5.3.0", "@swapkit/utxo-signer": "3.0.0" },
3
3
  "description": "SwapKit - Toolboxes",
4
4
  "devDependencies": {
5
5
  "@aptos-labs/ts-sdk": "7.0.1",
@@ -131,5 +131,5 @@
131
131
  "type-check:go": "tsgo"
132
132
  },
133
133
  "type": "module",
134
- "version": "5.2.0"
134
+ "version": "5.3.0"
135
135
  }
@@ -1 +0,0 @@
1
- var r;((x)=>{x.Test="goerli";x.Main="homestead"})(r||={});export{r as a};