@swapkit/toolboxes 4.20.0 → 4.20.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -0
- package/dist/{chunk-r2htb2ce.js → chunk-x9db9hmg.js} +1 -1
- package/dist/chunk-xs0j1eze.js +2 -0
- package/dist/src/evm/index.cjs +1 -1
- package/dist/src/evm/index.js +1 -1
- package/dist/src/hypercore/index.cjs +1 -1
- package/dist/src/hypercore/index.js +1 -1
- package/dist/src/index.cjs +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/ton/index.cjs +1 -1
- package/dist/src/ton/index.js +1 -1
- package/dist/src/tron/index.cjs +1 -1
- package/dist/src/tron/index.js +1 -1
- package/dist/src/utxo/index.cjs +1 -1
- package/dist/src/utxo/index.js +1 -1
- package/dist/types/evm/toolbox/baseEVMToolbox.d.ts +90 -5
- package/dist/types/evm/toolbox/evm.d.ts +1584 -88
- package/dist/types/evm/toolbox/op.d.ts +72 -4
- package/dist/types/evm/types.d.ts +7 -7
- package/dist/types/ton/toolbox.d.ts +5 -5
- package/dist/types/ton/types.d.ts +5 -0
- package/dist/types/tron/index.d.ts +2 -2
- package/dist/types/tron/toolbox.d.ts +3 -1
- package/dist/types/tron/types.d.ts +5 -0
- package/dist/types/utxo/toolbox/validators.d.ts +1 -1
- package/package.json +2 -2
- package/dist/chunk-4q573g5z.js +0 -2
package/dist/src/utxo/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ca as aX,da as z2}from"../../chunk-54gntgt1.js";import"../../chunk-ntbvmmch.js";import{NetworkDerivationPath as h2}from"@swapkit/helpers";function A(X,$){if(!Number.isInteger($)||$<0)throw RangeError(`${X} must be a non-negative integer, got: ${$}`)}function o({accountIndex:X,chain:$,derivationPath:J}){if(X!==void 0)A("accountIndex",X);let j=[...J?.slice(0,3)??h2[$].slice(0,3)];if(X!==void 0)j[2]=X;return j}function zX({accountIndex:X,change:$=!1,chain:J,derivationPath:j,index:Q}){return A("index",Q),[...o({accountIndex:X,chain:J,derivationPath:j}),Number($),Q]}function e(X){return X[2]??0}function p2({deriveAddress:X,getBalance:$,getUtxos:J}){async function j(q){let{accountIndex:Y,count:G,startIndex:U=0,change:z=!1}=q;if(A("count",G),G<1)throw RangeError("count must be at least 1");A("startIndex",U);let W=[];for(let _=0;_<G;_++){let B=await X({accountIndex:Y,change:z,index:U+_});if(B)W.push(B)}return W}async function Q(q){let{gapLimit:Y=20,change:G=!1}=q??{},U=[],z=0,W=0;while(z<Y){let _=await X({change:G,index:W});if(!_)break;if((await $(_.address)).some((k)=>k.getValue("number")>0))U.push(_),z=0;else z++;W++}return U}async function Z(q=20){let[Y,G]=await Promise.all([Q({change:!1,gapLimit:q}),Q({change:!0,gapLimit:q})]),U=[...Y,...G],z=await Promise.all(U.map(async(_)=>{let D=(await $(_.address)).reduce((k,t)=>k+t.getValue("number"),0);return{..._,balance:D}})),W=z.reduce((_,B)=>_+B.balance,0);return{addresses:z,total:W}}async function L(q=20){let[Y,G]=await Promise.all([Q({change:!1,gapLimit:q}),Q({change:!0,gapLimit:q})]),U=[...Y,...G];return(await Promise.all(U.map(async(W)=>{return(await J(W.address)).map((B)=>({...B,address:W.address,derivationIndex:W.index,isChange:W.change}))}))).flat()}return{deriveAddresses:j,getAggregatedBalance:Z,getAggregatedUtxos:L,scanForAddresses:Q}}import{Chain as E,getRPCUrl as u2,RequestClient as bX,SKConfig as o2,SwapKitError as w,warnOnce as c2}from"@swapkit/helpers";import{NETWORKS as XX}from"@swapkit/utxo-signer";async function d2({chain:X,txHash:$}){let J=`${UX(X)}/push/transaction`,j=JSON.stringify({data:$});try{let Q=await bX.post(J,{body:j,headers:{"Content-Type":"application/json"}});if(Q.context.code!==200)throw new w("toolbox_utxo_broadcast_failed",{error:Q.context.error||"Transaction broadcast failed"});return Q.data?.transaction_hash||$}catch(Q){let Z=await u2(X);if(Z){let L=JSON.stringify({id:aX(),jsonrpc:"2.0",method:"sendrawtransaction",params:[$]}),q=await bX.post(Z,{body:L,headers:{"Content-Type":"application/json"}});if(q.error)throw new w("toolbox_utxo_broadcast_failed",{error:q.error?.message});if(q.result.includes('"code":-26'))throw new w("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return q.result}throw Q}}function UX(X){return`https://api.blockchair.com/${r2(X)}`}function iX(X){switch(X){case E.Bitcoin:return 5;case E.Dogecoin:return 1e4;case E.Litecoin:return 1;case E.Zcash:return 1;default:return 2}}function r2(X){switch(X){case E.BitcoinCash:return"bitcoin-cash";case E.Litecoin:return"litecoin";case E.Dash:return"dash";case E.Dogecoin:return"dogecoin";case E.Zcash:return"zcash";case E.Polkadot:return"polkadot";default:return"bitcoin"}}async function n2(X){try{let{feePerKb:$}=await bX.get(`https://app.bitgo.com/api/v2/${X.toLowerCase()}/tx/fee`),J=$/1000;return Math.max(J,iX(X))}catch{return iX(X)}}async function IX(X,$){let J=await bX.get(`${X}${$?`${X.includes("?")?"&":"?"}key=${$}`:""}`);if(!J||J.context.code!==200)throw new w("toolbox_utxo_api_error",{error:`Failed to query ${X}`});return J.data}async function tX({address:X,chain:$,apiKey:J}){if(!X)throw new w("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await IX(`${UX($)}/dashboards/address/${X}?transaction_details=true`,J))[X]}catch{return{address:{balance:0,transaction_count:0},utxo:[]}}}async function i2({address:X,chain:$,apiKey:J}){return(await tX({address:X,apiKey:J,chain:$}))?.address.balance||0}async function eX({chain:X,apiKey:$,txHash:J}){if(!J)throw new w("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await IX(`${UX(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 s2=4294967294;async function a2({chain:X,apiKey:$,txHash:J}){if(!J)throw new w("toolbox_utxo_invalid_params",{error:"TxHash is required"});let Q=(await IX(`${UX(X)}/dashboards/transaction/${J}`,$))?.[J];if(!Q)throw new w("toolbox_utxo_tx_not_found",{txHash:J});let{transaction:Z,inputs:L,outputs:q}=Q,Y=L.map((U)=>U.spending_sequence),G=Z.is_rbf===!0||Y.some((U)=>U<s2);return{blockId:Z.block_id,confirmed:Z.block_id!==-1,fee:Z.fee,inputs:L,isRBF:G,outputs:q,sequences:Y,size:Z.size,txid:Z.hash,weight:Z.weight}}async function t2({chain:X,address:$,apiKey:J,offset:j=0,limit:Q=30}){return(await IX(`${UX(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:Y,script_hex:G,block_id:U,transaction_hash:z,index:W,value:_,spending_signature_hex:B})=>({hash:z,index:W,is_confirmed:U!==-1,is_spent:Y,script_hex:G,txHex:B,value:_}))}function e2(X){return X.reduce(($,J)=>$+J.value,0)}function sX(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 X2({chain:X,address:$,apiKey:J,targetValue:j,accumulativeValue:Q=0,offset:Z=0,limit:L=30}){if(!$)throw new w("toolbox_utxo_invalid_params",{error:"Address is required"});try{let q=await t2({address:$,apiKey:J,chain:X,limit:L,offset:Z,targetValue:j}),G=q.length<L,U=q.filter(({is_spent:k})=>!k),z=e2(U),W=Q+z,_=j&&W>=j;if(G||_)return sX(U,j);let B=await X2({accumulativeValue:W,address:$,apiKey:J,chain:X,limit:L,offset:Z+L,targetValue:j}),D=[...U,...B];return sX(D,j)}catch(q){let Y=q instanceof Error?q.message:String(q);return console.error(`Failed to fetch unspent UTXOs: ${Y}`),[]}}async function X0({address:X,chain:$,apiKey:J,fetchTxHex:j=!0,targetValue:Q}){let Z=await X2({address:X,apiKey:J,chain:$,targetValue:Q}),L=[];for(let{hash:q,index:Y,script_hex:G,value:U}of Z){let z;if(j)z=await eX({apiKey:J,chain:$,txHash:q});L.push({address:X,hash:q,index:Y,txHex:z,value:U,witnessUtxo:{script:Buffer.from(G,"hex"),value:U}})}return L}function I(X){let $=o2.get("apiKeys").blockchair||"";return c2({condition:!$,id:"no_blockchair_api_key_warning",warning:"No Blockchair API key found. Functionality will be limited."}),{broadcastTx:(J)=>d2({chain:X,txHash:J}),getAddressData:(J)=>tX({address:J,apiKey:$,chain:X}),getBalance:(J)=>i2({address:J,apiKey:$,chain:X}),getRawTx:(J)=>eX({apiKey:$,chain:X,txHash:J}),getSuggestedTxFee:()=>n2(X),getTransactionDetails:(J)=>a2({apiKey:$,chain:X,txHash:J}),getUtxos:(J)=>X0({...J,apiKey:$,chain:X})}}function E1(X){return X}function F1(){return function($){switch($){case E.Bitcoin:return XX.bitcoin;case E.BitcoinCash:return XX.bitcoinCash;case E.Dash:return XX.dash;case E.Litecoin:return XX.litecoin;case E.Dogecoin:return XX.dogecoin;case E.Zcash:return XX.zcash;default:throw new w("toolbox_utxo_not_supported",{chain:$})}}}import{sha256 as Y0}from"@noble/hashes/sha2.js";import{createBase58check as q0}from"@scure/base";import{SwapKitError as J2}from"@swapkit/helpers";import{CashAddrType as TX,decodeCashAddr as $0,encodeCashAddr as J0}from"@swapkit/utxo-signer";var j0={P2PKH:TX.P2PKH,P2SH:TX.P2SH},Q0={[TX.P2PKH]:"P2PKH",[TX.P2SH]:"P2SH"};function Z0(X,$,J){return J0({hash:J,prefix:X,type:j0[$]})}function G0(X){let $=$0(X),J=Q0[$.type];if(!J)throw Error(`Unknown CashAddr type: ${$.type}`);return{hash:$.hash,prefix:$.prefix,type:J}}var lX={decode:G0,encode:Z0};var j2=q0(Y0);var Q2;((J)=>{J.Mainnet="mainnet";J.Testnet="testnet"})(Q2||={});var c={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}};function Z2(X){try{return FX(X),!0}catch{return!1}}function G2(X){return FX(X)?.network}function u(X){let $=FX(X);if($?.format==="legacy")return X;return U0($)}function EX(X){let $=FX(X);return W0($)}function FX(X){try{let $=L0(X);if($)return $}catch{}try{let $=z0(X);if($)return $}catch{}throw new J2("toolbox_utxo_invalid_address",{address:X})}function L0(X){try{let $=j2.decode(X);if($.length!==21)throw new J2("toolbox_utxo_invalid_address",{address:X});let J=$[0],j=Array.prototype.slice.call($,1);switch(J){case c.legacy.mainnet.p2pkh:return{format:"legacy",hash:j,network:"mainnet",type:"p2pkh"};case c.legacy.mainnet.p2sh:return{format:"legacy",hash:j,network:"mainnet",type:"p2sh"};case c.legacy.testnet.p2pkh:return{format:"legacy",hash:j,network:"testnet",type:"p2pkh"};case c.legacy.testnet.p2sh:return{format:"legacy",hash:j,network:"testnet",type:"p2sh"};case c.bitpay.mainnet.p2pkh:return{format:"bitpay",hash:j,network:"mainnet",type:"p2pkh"};case c.bitpay.mainnet.p2sh:return{format:"bitpay",hash:j,network:"mainnet",type:"p2sh"};default:return}}catch{return}}function z0(X){if(X.indexOf(":")!==-1)try{return $2(X)}catch{}else{let $=["bitcoincash","bchtest","bchreg"];for(let J of $)try{return $2(`${J}:${X}`)}catch{}}return}function $2(X){try{let{hash:$,prefix:J,type:j}=lX.decode(X);return{format:"cashaddr",hash:Array.prototype.slice.call($,0),network:J==="bitcoincash"?"mainnet":"testnet",type:j==="P2PKH"?"p2pkh":"p2sh"}}catch{return}}function U0(X){let $=c.legacy[X.network][X.type],J=Buffer.alloc(1+X.hash.length);return J[0]=$,J.set(X.hash,1),j2.encode(J)}function W0(X){let $=X.network==="mainnet"?"bitcoincash":"bchtest",J=X.type==="p2pkh"?"P2PKH":"P2SH",j=new Uint8Array(X.hash);return lX.encode($,J,j)}import{Chain as r,SwapKitError as C0}from"@swapkit/helpers";import{SwapKitError as _0}from"@swapkit/helpers";import{Script as B0}from"@swapkit/utxo-signer";var g1=1000,hX=10,pX=2,M0=10,N0=41,D0=107;function R(X){let $=new Uint8Array(Buffer.from(X,"utf8"));return B0.encode(["RETURN",$])}var uX;((J)=>{J.P2PKH="P2PKH";J.P2WPKH="P2WPKH"})(uX||={});var xX={["P2PKH"]:148,["P2WPKH"]:68},fX={["P2PKH"]:34,["P2WPKH"]:31},WX=(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 _0("toolbox_utxo_invalid_address",{address:X})},$X=({inputs:X,outputs:$,feeRate:J})=>{let j=X[0]&&"address"in X[0]&&X[0].address?WX(X[0].address):"P2PKH",Z=(J?X.filter((G)=>G.value>=xX["type"in G&&G.type?G.type:"P2PKH"]*Math.ceil(J)):X).reduce((G,U)=>G+d(U),0),L=$?.reduce((G,U)=>G+PX(U),0)||fX[j],q=hX+Z+L;return j==="P2WPKH"?Math.ceil(q+pX/4):q},d=(X)=>{if("type"in X&&X.type)return xX[X.type];if("address"in X&&X.address)return xX[WX(X.address)];return N0+D0},PX=(X,$)=>{if(X?.script)return M0+X.script.length+(X.script.length>=74?2:1);if($)return fX[$];if("address"in X&&X.address)return fX[WX(X.address)];return fX.P2PKH};function RX(X){switch(X){case r.Bitcoin:case r.BitcoinCash:return 550;case r.Dash:case r.Litecoin:return 5500;case r.Dogecoin:return 1e5;case r.Zcash:return 546;default:throw new C0("toolbox_utxo_not_supported",{chain:X})}}function S({inputs:X,outputs:$,feeRate:J=1,chain:j=r.Bitcoin,changeAddress:Q=""}){let Z=X[0]&&"address"in X[0]&&X[0].address?WX(X[0].address):"P2PKH",L=X.filter((B)=>d(B)*J<=B.value),Y=Z==="P2WPKH"?Math.ceil(pX/4):0,G=hX+Y+$.reduce((B,D)=>B+PX(D),0),U=$.reduce((B,D)=>B+D.value,0),z=G*J,W=0,_=[];for(let B of L){let D=d(B),k=J*D;z+=k,W+=B.value,_.push(B);let t=z+U;if(W<t)continue;let DX=W-t,CX=J*PX({address:Q,value:0});if(DX>CX){let YX=CX+z,qX=W-(U+Math.ceil(YX));if(qX>Math.max(d({value:0})*J,RX(j)))return{fee:Math.ceil(YX),inputs:_,outputs:$.concat({address:Q,value:qX})}}return{fee:Math.ceil(z),inputs:_,outputs:$}}return{fee:Math.ceil(J*$X({inputs:X,outputs:$}))}}import{Chain as GX,SwapKitError as O1}from"@swapkit/helpers";import{hex as k2}from"@scure/base";import{Chain as g0,derivationPathToString as l0,FeeOption as x0,NetworkDerivationPath as h0,SwapKitError as l,updateDerivationPath as p0}from"@swapkit/helpers";import{BCHSigHash as u0,CashAddrPrefix as b2,CashAddrType as I2,encodeCashAddr as T2,NETWORKS as o0,p2pkh as E2,Transaction as F2}from"@swapkit/utxo-signer";import{secp256k1 as V0}from"@noble/curves/secp256k1.js";import{hex as i}from"@scure/base";import{HDKey as U2}from"@scure/bip32";import{mnemonicToSeedSync as cX}from"@scure/bip39";import{AssetValue as yX,applyFeeMultiplier as Y2,Chain as b,derivationPathToString as BX,FeeOption as K,NetworkDerivationPath as W2,SwapKitError as V,SwapKitNumber as k0,updateDerivationPath as b0,warnOnce as I0}from"@swapkit/helpers";import{Address as T0,BCHSigHash as dX,CashAddrPrefix as E0,CashAddrType as F0,encodeCashAddr as f0,NETWORKS as jX,p2pkh as q2,p2wpkh as P0,RBF_SEQUENCE as R0,SigHash as _2,Transaction as oX,WIF as B2}from"@swapkit/utxo-signer";import{match as M2}from"ts-pattern";import{Address as H0,ZCASH_NETWORK as O0}from"@swapkit/utxo-signer";function JX(X){return X.replace(/(bchtest:|bitcoincash:)/,"")}function n(X){let $=JX(X);return Z2($)&&G2($)==="mainnet"}function _X(X){try{if(X.startsWith("z"))return console.warn("Shielded Zcash addresses (z-addresses) are not supported. Use transparent addresses (t1/t3) only."),!1;let J=H0(O0).decode(X);return J.type==="pkh"||J.type==="sh"}catch{return!1}}var AX=[b.Dash,b.Dogecoin,b.Zcash,b.BitcoinCash],vX=[b.Bitcoin];function N2({address:X,chain:$}){return M2($).with(b.BitcoinCash,()=>n(X)).with(b.Zcash,()=>_X(X)).otherwise(()=>{try{return T0(F($)).decode(X),!0}catch{return!1}})}function F(X){return M2(X).with(b.Bitcoin,()=>jX.bitcoin).with(b.BitcoinCash,()=>jX.bitcoinCash).with(b.Dash,()=>jX.dash).with(b.Dogecoin,()=>jX.dogecoin).with(b.Litecoin,()=>jX.litecoin).with(b.Zcash,()=>jX.zcash).exhaustive()}function y0({phrase:X,derivationPath:$,network:J,seed:j}){let Q=j??cX(X),L=U2.fromMasterSeed(Q,J.bip32).derive($);if(!L.privateKey)throw new V("toolbox_utxo_invalid_params",{error:"Could not derive private key from phrase"});return L.privateKey}function L2(X){return V0.getPublicKey(X,!0)}function MX({publicKey:X,chain:$,network:J}){if($===b.BitcoinCash){let Z=q2(X,J);if(!Z.hash)throw new V("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return f0({hash:Z.hash,prefix:E0.MAINNET,type:F0.P2PKH}).replace(/^bitcoincash:/,"")}let Q=!AX.includes($)?P0(X,J):q2(X,J);if(!Q.address)throw new V("toolbox_utxo_invalid_address",{error:"Could not derive address"});return Q.address}function QX({phrase:X,derivationPath:$,chain:J,wif:j,seed:Q}){let Z=F(J);if(j){let G=B2(Z).decode(j),U=L2(G);return{privateKey:G,publicKey:U}}if(!X)throw new V("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let L=$||BX(W2[J]),q=y0({derivationPath:L,network:Z,phrase:X,seed:Q}),Y=L2(q);return{privateKey:q,publicKey:Y}}function v0(X,$){return B2(F($)).encode(X)}function A0({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=F(J),L=j??cX(X),q=U2.fromMasterSeed(L,Z.bip32),Y=Q.slice(0,4).join("/");return q.derive(Y)}function s({inputs:X,outputs:$,chain:J,tx:j,sender:Q,compiledMemo:Z,enableRBF:L=!1}){let q=F(J),Y=!AX.includes(J),G=L?R0:void 0,U=new Set;for(let z of X){let W=`${z.hash}:${z.index}`;if(U.has(W))throw new V("toolbox_utxo_invalid_params",{error:"Duplicate input detected"});U.add(W);let _=typeof z.hash==="string"?i.decode(z.hash):z.hash;if(Y&&z.witnessUtxo)j.addInput({index:z.index,sequence:G,txid:_,witnessUtxo:{amount:BigInt(z.witnessUtxo.value),script:z.witnessUtxo.script}});else if(z.txHex)j.addInput({index:z.index,nonWitnessUtxo:i.decode(z.txHex),sequence:G,txid:_,...J===b.BitcoinCash?{sighashType:dX.ALL}:{}});else throw new V("toolbox_utxo_invalid_params",{error:"Input requires either witnessUtxo or txHex for non-segwit chains"})}for(let z of $){let W="address"in z&&z.address?z.address:Q;if(J===b.BitcoinCash)W=u(W);if(z.script){if(Z)j.addOutput({amount:0n,script:Z})}else j.addOutputAddress(W,BigInt(z.value),q)}return{inputs:X,tx:j}}async function ZX(X){let $=await I(X).getSuggestedTxFee();return{[K.Average]:$,[K.Fast]:Y2($,K.Fast),[K.Fastest]:Y2($,K.Fastest)}}async function D2({assetValue:X,recipient:$,memo:J,sender:j,fetchTxHex:Q=!1}){let Z=X.chain,L=(await ZX(Z))[K.Fastest],q=Q||AX.includes(Z),Y=X.getBaseValue("number"),G=Math.ceil(Y+L*5000);return{inputs:await I(Z).getUtxos({address:j,fetchTxHex:q,targetValue:G}),outputs:[{address:$,value:Y},...J?[{address:"",script:R(J),value:0}]:[]]}}async function C2({assetValue:X,recipient:$,memo:J,feeRate:j,sender:Q,fetchTxHex:Z=!1,enableRBF:L=!1}){let q=X.chain,Y=J?R(J):null,G=await D2({assetValue:X,fetchTxHex:Z,memo:J,recipient:$,sender:Q}),{inputs:U,outputs:z}=S({...G,chain:q,feeRate:j});if(!(U&&z))throw new V("toolbox_utxo_insufficient_balance",{assetValue:X,sender:Q});let W=new oX({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!Y,version:1}),{inputs:_,tx:B}=s({chain:q,compiledMemo:Y,enableRBF:L,inputs:U,outputs:z,sender:Q,tx:W});return{inputs:_,tx:B,utxos:G.inputs}}async function H2({assetValue:X,feeOptionKey:$=K.Fast,feeRate:J,memo:j,sender:Q,recipient:Z}){let L=X.chain,q=await D2({assetValue:X,memo:j,recipient:Z,sender:Q}),Y=J?Math.floor(J):(await ZX(L))[$];return S({...q,chain:L,feeRate:Y})}function w0(X){return async function({from:J,memo:j,feeRate:Q,feeOptionKey:Z=K.Fast,recipients:L=1}){let q=await I(X).getAddressData(J),Y=Q?Math.ceil(Q):(await ZX(X))[Z],G=q?.utxo.map((D)=>({...D,hash:"",type:"P2PKH"})).filter((D)=>D.value>Math.max(RX(X),d(D)*Y));if(!G?.length)return yX.from({chain:X});let U=BigInt(G.reduce((D,k)=>D+k.value,0)),z=yX.from({chain:X,value:U}),W=typeof L==="number"?Array.from({length:L},()=>({address:J,value:0})):L;if(j)W.push({address:J,script:R(j),value:0});let _=$X({inputs:G,outputs:W}),B=yX.from({chain:X,value:BigInt(_*Y)});return z.sub(B)}}function S0(X){return async function(J){let{fee:j}=await H2(J);return yX.from({chain:X,value:k0.fromBigInt(BigInt(j),8).getValue("string")})}}function K0({chain:X,phrase:$,derivationPath:J,seed:j}){let Q=F(X),{privateKey:Z,publicKey:L}=QX({chain:X,derivationPath:J,phrase:$,seed:j}),q=X===b.BitcoinCash?[dX.ALL]:[_2.ALL];return{getAddress:()=>MX({chain:X,network:Q,publicKey:L}),privateKey:Z,publicKey:L,signTransaction:(Y)=>{return Y.sign(Z,q),Y}}}function m0(X,$){return async function({memo:j,recipient:Q,feeOptionKey:Z,feeRate:L,assetValue:q,enableRBF:Y=!1}){let G=await $?.getAddress();if(!($&&G))throw new V("toolbox_utxo_no_signer");if(!Q)throw new V("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});I0({condition:Y&&!vX.includes(X),id:`rbf_not_supported_${X}`,warning:`RBF (Replace-by-Fee) is not reliably supported on ${X}. Transaction will be created without RBF signaling.`});let U=Y&&vX.includes(X),z=L||(await ZX(X))[Z||K.Fast],{tx:W}=await C2({assetValue:q,enableRBF:U,feeRate:z,memo:j,recipient:Q,sender:G}),_=await $.signTransaction(W);return _.finalize(),I(X).broadcastTx(i.encode(_.extract()))}}function O2(X){return($)=>N2({address:$,chain:X})}function V2(X){let $=F(X);return function(j){if(!j)throw new V("toolbox_utxo_invalid_params",{error:"Keys must be provided"});return MX({chain:X,network:$,publicKey:j.publicKey})}}function a({chain:X,...$}){let J="phrase"in $?$.phrase:void 0,j="index"in $?$.index||0:0,Q=J?cX(J):void 0,Z="derivationPath"in $&&$.derivationPath?$.derivationPath:b0(W2[X],{index:j}),L=BX(Z),q=J?K0({chain:X,derivationPath:L,phrase:J,seed:Q}):void 0,Y="signer"in $?$.signer:void 0,G=q||Y,U=J?QX({chain:X,derivationPath:L,phrase:J,seed:Q}):void 0;function z(){if(G)return G.getAddress();return Promise.resolve(void 0)}function W(M){if(!J)return;let N=o({accountIndex:M,chain:X,derivationPath:Z});return A0({chain:X,derivationPath:BX(N),phrase:J,seed:Q})}let _=W();function B(){if(!_)return;return _.publicExtendedKey}function D({accountIndex:M}={}){let N=M===void 0?_:W(M);if(!N)return;let C=o({accountIndex:M,chain:X,derivationPath:Z});return{accountIndex:e(C),path:BX(C),xpub:N.publicExtendedKey}}function k({accountIndex:M,index:N,change:C=!1}){let H=M===void 0?_:W(M);if(!H)return;let O=zX({accountIndex:M,chain:X,change:C,derivationPath:Z,index:N}),P=F(X),y=H.deriveChild(Number(C)).deriveChild(N);if(!y.publicKey)throw new V("toolbox_utxo_invalid_params",{error:"Could not derive public key"});let f=MX({chain:X,network:P,publicKey:y.publicKey}),v=i.encode(y.publicKey);return{accountIndex:e(O),address:f,change:C,index:N,path:BX(O),pubkey:v}}async function t(M){if(!vX.includes(X))return{reason:`RBF is not supported on ${X}`,supported:!1};let N=await I(X).getTransactionDetails(M);return{canReplace:N.isRBF&&!N.confirmed,confirmed:N.confirmed,enabled:N.isRBF,fee:N.fee,sequences:N.sequences,supported:!0}}async function DX({txid:M,newFeeRate:N,recipient:C,memo:H}){if(!vX.includes(X))throw new V("toolbox_utxo_rbf_not_supported",{chain:X});let O=await I(X).getTransactionDetails(M);if(!O.isRBF)throw new V("toolbox_utxo_tx_not_replaceable",{txid:M});if(O.confirmed)throw new V("toolbox_utxo_tx_already_confirmed",{blockId:O.blockId,txid:M});let P=O.inputs.reduce((T,p)=>T+p.value,0),f=O.outputs.find((T)=>T.recipient===C)?.value||0;if(f===0)throw new V("toolbox_utxo_invalid_params",{error:"Could not determine send amount from original transaction"});let v=await Promise.all(O.inputs.map(async(T)=>{let p=await I(X).getRawTx(T.transaction_hash);return{hash:T.transaction_hash,index:T.index,txHex:p,value:T.value,witnessUtxo:void 0}})),HX=H?R(H):null,mX=$X({feeRate:N,inputs:v.map((T)=>({...T,type:"P2WPKH"})),outputs:[{address:C,value:f}]}),g=Math.ceil(mX*N);if(g<=O.fee)throw new V("toolbox_utxo_rbf_fee_too_low",{newFee:g,originalFee:O.fee});let LX=g-O.fee,x=f-LX;if(x<=0)throw new V("toolbox_utxo_rbf_insufficient_change");let OX=new oX({allowLegacyWitnessUtxo:!0,version:1}),VX=[{address:C,value:x},...H?[{address:"",script:R(H),value:0}]:[]],kX=P-x-g,h=await z();if(kX>RX(X)&&h)VX.push({address:h,value:kX});return s({chain:X,compiledMemo:HX,inputs:v,outputs:VX,sender:h||C,tx:OX}),{feeDelta:LX,newFee:g,originalFee:O.fee,tx:OX}}async function CX({txid:M,newFeeRate:N,recipient:C,memo:H}){let{tx:O,originalFee:P,newFee:y}=await DX({memo:H,newFeeRate:N,recipient:C,txid:M}),f=await KX(O);f.finalize();let v=await I(X).broadcastTx(i.encode(f.extract()));return{newFee:y,originalFee:P,txid:v}}function YX({accountIndex:M,index:N,change:C=!1}){A("index",N);let H=M===void 0?_:W(M);if(!H)return;return H.deriveChild(Number(C)).deriveChild(N).privateKey||void 0}function qX({tx:M,inputDerivations:N}){if(!_)throw new V("toolbox_utxo_no_signer");let C=X===b.BitcoinCash?[dX.ALL]:[_2.ALL];for(let H=0;H<N.length;H++){let O=N[H];if(!O)continue;let{derivationIndex:P,isChange:y}=O,f=YX({change:y,index:P});if(!f)throw new V("toolbox_utxo_invalid_params",{error:`Could not derive private key for input ${H} at index ${P}`});M.signIdx(f,H,C)}return M}async function m2({utxos:M,recipient:N,assetValue:C,memo:H,feeRate:O,feeOptionKey:P,changeAddress:y}){if(!_)throw new V("toolbox_utxo_no_signer");let f=O||(await ZX(X))[P||K.Fast],v=H?R(H):null,HX=[{address:N,value:C.getBaseValue("number")}];if(v)HX.push({address:"",script:v,value:0});let mX=M.map(({hash:h,index:T,value:p,txHex:x2,witnessUtxo:gX})=>({hash:h,index:T,txHex:x2,value:p,witnessUtxo:gX?{script:gX.script,value:gX.value}:void 0})),{inputs:g,outputs:LX}=S({chain:X,feeRate:f,inputs:mX,outputs:HX});if(!(g&&LX))throw new V("toolbox_utxo_insufficient_balance",{assetValue:C,sender:"multiple addresses"});let x=new oX({allowLegacyWitnessUtxo:!0,version:1}),OX=M[0]?.address,VX=y||await z()||OX||N;s({chain:X,compiledMemo:v,inputs:g,outputs:LX,sender:VX,tx:x});let kX=g.map((h)=>{let T=M.find((p)=>p.hash===h.hash&&p.index===h.index);return T?{derivationIndex:T.derivationIndex,isChange:T.isChange}:{derivationIndex:0,isChange:!1}});return qX({inputDerivations:kX,tx:x}),x.finalize(),I(X).broadcastTx(i.encode(x.extract()))}function g2({address:M,gapLimit:N=20}){if(!_)return;for(let C=0;C<N;C++){let H=k({change:!1,index:C}),O=k({change:!0,index:C}),P=H?.address===M?!1:O?.address===M;if(H?.address===M||O?.address===M)return{change:P,index:C}}return}function KX(M){if(!G)throw new V("toolbox_utxo_no_signer");return G.signTransaction(M)}async function l2(M){let N=await KX(M);return N.finalize(),await I(X).broadcastTx(i.encode(N.extract()))}return{accumulative:S,broadcastTx:(M)=>I(X).broadcastTx(M),bumpFee:CX,calculateTxSize:$X,createKeysForPath:(M)=>QX({...M,chain:X}),createReplacementTransaction:DX,createTransaction:C2,deriveAddressAtIndex:k,derivePrivateKeyAtIndex:YX,estimateMaxSendableAmount:w0(X),estimateTransactionFee:S0(X),getAddress:z,getAddressFromKeys:V2(X),getBalance:z2(X),getExtendedPublicKey:B,getExtendedPublicKeyInfo:D,getFeeRates:()=>ZX(X),getInputsOutputsFee:H2,getNetworkForChain:()=>F(X),getPrivateKeyFromMnemonic:(M)=>v0(QX({...M,chain:X}).privateKey,X),isRBFEnabled:t,keys:U,resolveDerivationIndex:g2,signAndBroadcastTransaction:l2,signTransaction:KX,signTransactionWithMultipleKeys:qX,transfer:m0(X,G),transferFromMultipleAddresses:m2,validateAddress:O2(X)}}var m=g0.BitcoinCash;function wX(X){return JX(EX(X))}function c0(X){let $=F(m);function J(Q){return Q.sign(X.privateKey,[u0.ALL]),Q}function j(){let Q=E2(X.publicKey,$);if(!Q.hash)throw new l("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});let Z=T2({hash:Q.hash,prefix:b2.MAINNET,type:I2.P2PKH});return Promise.resolve(Z.replace(/^bitcoincash:/,""))}return{getAddress:j,signTransaction:J}}function f2(X){let $="phrase"in X?X.phrase:void 0,J="index"in X?X.index||0:0,j=l0("derivationPath"in X&&X.derivationPath?X.derivationPath:p0(h0[m],{index:J})),Q=$?QX({chain:m,derivationPath:j,phrase:$}):void 0,Z=Q?c0(Q):("signer"in X)?X.signer:void 0;function L(){return Promise.resolve(Z?.getAddress())}let{getBalance:q,getFeeRates:Y,broadcastTx:G,...U}=a({chain:m});function z(B,D=!0){return q(JX(EX(B)))}function W(B){if(!Z)throw new l("toolbox_utxo_no_signer");return Z.signTransaction(B)}async function _(B){let D=await W(B);return D.finalize(),await G(k2.encode(D.extract()))}return{...U,broadcastTx:G,buildTx:r0,createTransaction:P2,getAddress:L,getAddressFromKeys:n0,getBalance:z,getFeeRates:Y,signAndBroadcastTransaction:_,signTransaction:W,stripPrefix:JX,stripToCashAddress:wX,transfer:d0({broadcastTx:G,getFeeRates:Y,signer:Z}),validateAddress:n}}async function P2({assetValue:X,recipient:$,memo:J,feeRate:j,sender:Q}){if(!n($))throw new l("toolbox_utxo_invalid_address",{address:$});let Z=Math.ceil(X.getBaseValue("number")+j*7500),L=await I(m).getUtxos({address:wX(Q),fetchTxHex:!0,targetValue:Z}),q=J?R(J):null,Y=[],G=u($);if(Y.push({address:G,value:X.getBaseValue("number")}),q)Y.push({script:q,value:0});let{inputs:U,outputs:z}=S({chain:m,feeRate:j,inputs:L,outputs:Y});if(!(U&&z))throw new l("toolbox_utxo_insufficient_balance",{assetValue:X,sender:Q});let W=new F2({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!q,version:1}),_=u(Q),{inputs:B,tx:D}=s({chain:m,compiledMemo:q,inputs:U,outputs:z.map((k)=>("address"in k)&&k.address?{...k,address:u(k.address)}:k),sender:_,tx:W});return{inputs:B,tx:D,utxos:U}}function d0({broadcastTx:X,getFeeRates:$,signer:J}){return async function({recipient:Q,assetValue:Z,feeOptionKey:L=x0.Fast,...q}){let Y=await J?.getAddress();if(!(J&&Y))throw new l("toolbox_utxo_no_signer");if(!Q)throw new l("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let G=q.feeRate||(await $())[L],{tx:U}=await P2({...q,assetValue:Z,feeRate:G,recipient:Q,sender:Y}),z=await J.signTransaction(U);return z.finalize(),X(k2.encode(z.extract()))}}async function r0({assetValue:X,recipient:$,memo:J,feeRate:j,sender:Q}){let Z=EX($);if(!n(Z))throw new l("toolbox_utxo_invalid_address",{address:Z});let L=Math.ceil(X.getBaseValue("number")+j*7500),q=await I(m).getUtxos({address:wX(Q),fetchTxHex:!0,targetValue:L}),Y=Number(j.toFixed(0)),G=J?R(J):null,U=[];if(U.push({address:u($),value:X.getBaseValue("number")}),G)U.push({script:G,value:0});let{inputs:z,outputs:W}=S({chain:m,feeRate:Y,inputs:q,outputs:U});if(!(z&&W))throw new l("toolbox_utxo_insufficient_balance",{assetValue:X,sender:Q});let _=new F2({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!G,version:1}),{inputs:B,tx:D}=s({chain:m,compiledMemo:G,inputs:z,outputs:W,sender:u(Q),tx:_});return{inputs:B,tx:D,utxos:q}}function n0(X){let $=o0.bitcoinCash,J=E2(X.publicKey,$);if(!J.hash)throw new l("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return T2({hash:J.hash,prefix:b2.MAINNET,type:I2.P2PKH}).replace(/^bitcoincash:/,"")}import{createBase58check as i0,hex as s0}from"@scure/base";import{HDKey as y2}from"@scure/bip32";import{mnemonicToSeedSync as v2}from"@scure/bip39";import{Chain as SX,derivationPathToString as a0,FeeOption as t0,NetworkDerivationPath as e0,SKConfig as A2,SwapKitError as NX,updateDerivationPath as X1}from"@swapkit/helpers";import{Address as $1,createZcashTransaction as J1,OutScript as j1,PCZT as Q1,utils as w2,WIF as Z1,ZCASH_NETWORK as G1,ZCASH_TEST_NETWORK as Y1,ZcashConsensusBranchId as q1,ZcashPSBT as L1,ZcashSigHash as rX,ZcashVersionGroupId as z1}from"@swapkit/utxo-signer";import{match as U1,P as nX}from"ts-pattern";function S2(){let{isStagenet:X}=A2.get("envs");return X?Y1:G1}var W1=i0(w2.sha256);function _1(X){return W1.encode(X)}function B1({phrase:X,derivationPath:$}){let J=v2(X),Q=y2.fromMasterSeed(J).derive($);if(!Q.privateKey||!Q.publicKey)throw new NX("toolbox_utxo_invalid_params");let{privateKey:Z,publicKey:L}=Q,q=w2.hash160(L),{isStagenet:Y}=A2.get("envs"),G=Y?new Uint8Array([29,37]):new Uint8Array([28,184]),U=new Uint8Array(G.length+q.length);U.set(G,0),U.set(q,G.length);let z=_1(U);return{getAddress:()=>Promise.resolve(z),signTransaction:(W)=>{if(W instanceof L1){let _=W.toPCZT();return _.signAllInputs(Z,L,rX.ALL),_.finalizeAllInputs(),Promise.resolve(_.extract())}if(W instanceof Q1)return W.signAllInputs(Z,L,rX.ALL),W.finalizeAllInputs(),Promise.resolve(W.extract());return W.signAllInputs(Z,L,rX.ALL),Promise.resolve(W)}}}function M1({inputs:X,outputs:$,tx:J,sender:j,compiledMemo:Q}){let Z=S2();for(let L of X){let q=$1(Z).decode(j),Y=j1.encode(q);J.addInput({index:L.index,script:Y,sequence:4294967295,txid:s0.decode(L.hash),value:BigInt(L.value)})}for(let L of $){let q="address"in L&&L.address?L.address:j,Y=L.script;if(Y&&!Q)continue;if(Y&&Q)J.addOutput({amount:0n,script:Q});else J.addOutputAddress(q,BigInt(L.value),Z)}return{inputs:X,tx:J}}async function R2(X){let{assetValue:$,recipient:J,memo:j,feeRate:Q,sender:Z,fetchTxHex:L}=X,q=j?R(j):null,Y=await I(SX.Zcash).getUtxos({address:Z,fetchTxHex:L!==!1}),G=[{address:J,value:Number($.getBaseValue("string"))},...q?[{script:q,value:0}]:[]],{inputs:U,outputs:z}=S({chain:SX.Zcash,changeAddress:Z,feeRate:Q,inputs:Y,outputs:G});if(!(U&&z))throw new NX("toolbox_utxo_insufficient_balance",{assetValue:$,sender:Z});let W=J1({consensusBranchId:q1.NU6_2,expiryHeight:0,lockTime:0,version:4,versionGroupId:z1.SAPLING}),{tx:_,inputs:B}=M1({compiledMemo:q,inputs:U,outputs:z,sender:Z,tx:W});return{inputs:B,outputs:z,tx:_}}function K2(X){let $=U1(X).with({signer:nX.not(nX.nullish)},({signer:Y})=>Y).with({phrase:nX.string},({phrase:Y,derivationPath:G,index:U=0})=>{let z=G||e0[SX.Zcash]||[44,133,0,0,0],W=X1(z,{index:U}),_=a0(W);return B1({derivationPath:_,phrase:Y})}).otherwise(()=>{return}),J=a({chain:SX.Zcash,signer:$});async function j(Y){if(!$)throw new NX("toolbox_utxo_no_signer");return await $.signTransaction(Y)}async function Q(Y){let G=await j(Y);return J.broadcastTx(G.toHex())}async function Z({recipient:Y,assetValue:G,feeOptionKey:U=t0.Fast,...z}){let W=await $?.getAddress();if(!($&&W))throw new NX("toolbox_utxo_no_signer");let _=z.feeRate||(await J.getFeeRates())[U],{tx:B}=await R2({...z,assetValue:G,feeRate:_,recipient:Y,sender:W}),k=(await $.signTransaction(B)).toHex();return J.broadcastTx(k)}function L({phrase:Y,derivationPath:G="m/44'/133'/0'/0/0"}){let U=v2(Y),W=y2.fromMasterSeed(U).derive(G);if(!W.privateKey||!W.publicKey)throw new NX("toolbox_utxo_invalid_params");return{privateKey:W.privateKey,publicKey:W.publicKey}}function q({phrase:Y,derivationPath:G="m/44'/133'/0'/0/0"}){let U=L({derivationPath:G,phrase:Y}),z=S2();return Z1(z).encode(U.privateKey)}return{...J,createKeysForPath:L,createTransaction:R2,getPrivateKeyFromMnemonic:q,signAndBroadcastTransaction:Q,signTransaction:j,transfer:Z,validateAddress:_X}}import{hex as N1}from"@scure/base";import{HDKey as D1}from"@scure/bip32";import{derivationPathToString as C1}from"@swapkit/helpers";function H1({xpub:X,chain:$,count:J,startIndex:j=0,accountIndex:Q}){if(A("count",J),J<1)throw RangeError("count must be at least 1");A("startIndex",j);let Z=F($),L=D1.fromExtendedKey(X,Z.bip32),q=o({accountIndex:Q,chain:$}),Y=e(q),G=[];for(let U of[!1,!0]){let z=L.deriveChild(Number(U));for(let W=0;W<J;W++){let _=j+W,B=z.deriveChild(_);if(!B.publicKey)continue;let D=zX({accountIndex:Q,chain:$,change:U,index:_});G.push({accountIndex:Y,address:MX({chain:$,network:Z,publicKey:B.publicKey}),change:U,index:_,path:C1(D),pubkey:N1.encode(B.publicKey)})}}return G}function K8(X,$){switch(X){case GX.BitcoinCash:return f2($||{});case GX.Zcash:return K2($);case GX.Bitcoin:case GX.Dogecoin:case GX.Litecoin:case GX.Dash:return a({chain:X,...$});default:throw new O1("toolbox_utxo_not_supported",{chain:X})}}export{_X as validateZcashAddress,N2 as validateUtxoAddress,n as validateBchAddress,u as toLegacyAddress,EX as toCashAddress,wX as stripToCashAddress,JX as stripPrefix,AX as nonSegwitChains,Z2 as isValidAddress,K8 as getUtxoToolbox,F1 as getUtxoNetwork,I as getUtxoApi,O2 as getUTXOAddressValidator,zX as getUTXOAddressPath,o as getUTXOAccountPath,e as getUTXOAccountIndexFromPath,WX as getScriptTypeForAddress,PX as getOutputSize,F as getNetworkForChain,d as getInputSize,RX as getDustThreshold,G2 as detectAddressNetwork,H1 as deriveAddressesFromXpub,K2 as createZcashToolbox,a as createUTXOToolbox,p2 as createHDWalletHelpers,E1 as createCustomUtxoApi,f2 as createBCHToolbox,R as compileMemo,$X as calculateTxSize,A as assertDerivationIndex,V2 as addressFromKeysGetter,s as addInputsAndOutputs,S as accumulative,Q2 as UtxoNetwork,uX as UTXOScriptType,hX as TX_OVERHEAD,pX as SEGWIT_MARKER_FLAG_WEIGHT,fX as OutputSizes,M0 as OP_RETURN_OVERHEAD,g1 as MIN_TX_FEE,xX as InputSizes};
|
|
1
|
+
import{ca as tX,da as U2}from"../../chunk-54gntgt1.js";import"../../chunk-ntbvmmch.js";import{NetworkDerivationPath as p2}from"@swapkit/helpers";function y(X,$){if(!Number.isInteger($)||$<0)throw RangeError(`${X} must be a non-negative integer, got: ${$}`)}function o({accountIndex:X,chain:$,derivationPath:J}){if(X!==void 0)y("accountIndex",X);let j=[...J?.slice(0,3)??p2[$].slice(0,3)];if(X!==void 0)j[2]=X;return j}function UX({accountIndex:X,change:$=!1,chain:J,derivationPath:j,index:Q}){return y("index",Q),[...o({accountIndex:X,chain:J,derivationPath:j}),Number($),Q]}function XX(X){return X[2]??0}function u2({deriveAddress:X,getBalance:$,getUtxos:J}){async function j(q){let{accountIndex:G,count:Y,startIndex:W=0,change:z=!1}=q;if(y("count",Y),Y<1)throw RangeError("count must be at least 1");y("startIndex",W);let U=[];for(let _=0;_<Y;_++){let B=await X({accountIndex:G,change:z,index:W+_});if(B)U.push(B)}return U}async function Q(q){let{gapLimit:G=20,change:Y=!1}=q??{},W=[],z=0,U=0;while(z<G){let _=await X({change:Y,index:U});if(!_)break;if((await $(_.address)).some((V)=>V.getValue("number")>0))W.push(_),z=0;else z++;U++}return W}async function Z(q=20){let[G,Y]=await Promise.all([Q({change:!1,gapLimit:q}),Q({change:!0,gapLimit:q})]),W=[...G,...Y],z=await Promise.all(W.map(async(_)=>{let D=(await $(_.address)).reduce((V,e)=>V+e.getValue("number"),0);return{..._,balance:D}})),U=z.reduce((_,B)=>_+B.balance,0);return{addresses:z,total:U}}async function L(q=20){let[G,Y]=await Promise.all([Q({change:!1,gapLimit:q}),Q({change:!0,gapLimit:q})]),W=[...G,...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:L,scanForAddresses:Q}}import{Chain as F,getRPCUrl as o2,RequestClient as bX,SKConfig as c2,SwapKitError as w,warnOnce as d2}from"@swapkit/helpers";import{NETWORKS as $X}from"@swapkit/utxo-signer";async function r2({chain:X,txHash:$}){let J=`${WX(X)}/push/transaction`,j=JSON.stringify({data:$});try{let Q=await bX.post(J,{body:j,headers:{"Content-Type":"application/json"}});if(Q.context.code!==200)throw new w("toolbox_utxo_broadcast_failed",{error:Q.context.error||"Transaction broadcast failed"});return Q.data?.transaction_hash||$}catch(Q){let Z=await o2(X);if(Z){let L=JSON.stringify({id:tX(),jsonrpc:"2.0",method:"sendrawtransaction",params:[$]}),q=await bX.post(Z,{body:L,headers:{"Content-Type":"application/json"}});if(q.error)throw new w("toolbox_utxo_broadcast_failed",{error:q.error?.message});if(q.result.includes('"code":-26'))throw new w("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return q.result}throw Q}}function WX(X){return`https://api.blockchair.com/${n2(X)}`}function sX(X){switch(X){case F.Bitcoin:return 5;case F.Dogecoin:return 1e4;case F.Litecoin:return 1;case F.Zcash:return 1;default:return 2}}function n2(X){switch(X){case F.BitcoinCash:return"bitcoin-cash";case F.Litecoin:return"litecoin";case F.Dash:return"dash";case F.Dogecoin:return"dogecoin";case F.Zcash:return"zcash";case F.Polkadot:return"polkadot";default:return"bitcoin"}}async function i2(X){try{let{feePerKb:$}=await bX.get(`https://app.bitgo.com/api/v2/${X.toLowerCase()}/tx/fee`),J=$/1000;return Math.max(J,sX(X))}catch{return sX(X)}}async function IX(X,$){let J=await bX.get(`${X}${$?`${X.includes("?")?"&":"?"}key=${$}`:""}`);if(!J||J.context.code!==200)throw new w("toolbox_utxo_api_error",{error:`Failed to query ${X}`});return J.data}async function eX({address:X,chain:$,apiKey:J}){if(!X)throw new w("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await IX(`${WX($)}/dashboards/address/${X}?transaction_details=true`,J))[X]}catch{return{address:{balance:0,transaction_count:0},utxo:[]}}}async function s2({address:X,chain:$,apiKey:J}){return(await eX({address:X,apiKey:J,chain:$}))?.address.balance||0}async function X2({chain:X,apiKey:$,txHash:J}){if(!J)throw new w("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await IX(`${WX(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 a2=4294967294;async function t2({chain:X,apiKey:$,txHash:J}){if(!J)throw new w("toolbox_utxo_invalid_params",{error:"TxHash is required"});let Q=(await IX(`${WX(X)}/dashboards/transaction/${J}`,$))?.[J];if(!Q)throw new w("toolbox_utxo_tx_not_found",{txHash:J});let{transaction:Z,inputs:L,outputs:q}=Q,G=L.map((W)=>W.spending_sequence),Y=Z.is_rbf===!0||G.some((W)=>W<a2);return{blockId:Z.block_id,confirmed:Z.block_id!==-1,fee:Z.fee,inputs:L,isRBF:Y,outputs:q,sequences:G,size:Z.size,txid:Z.hash,weight:Z.weight}}async function e2({chain:X,address:$,apiKey:J,offset:j=0,limit:Q=30}){return(await IX(`${WX(X)}/outputs?q=recipient(${$}),is_spent(false)&s=value(desc)&fields=is_spent,transaction_hash,index,value,script_hex,block_id,spending_signature_hex&limit=${Q}&offset=${j}`,J)).map(({is_spent:G,script_hex:Y,block_id:W,transaction_hash:z,index:U,value:_,spending_signature_hex:B})=>({hash:z,index:U,is_confirmed:W!==-1,is_spent:G,script_hex:Y,txHex:B,value:_}))}function X0(X){return X.reduce(($,J)=>$+J.value,0)}function aX(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 $2({chain:X,address:$,apiKey:J,targetValue:j,accumulativeValue:Q=0,offset:Z=0,limit:L=30}){if(!$)throw new w("toolbox_utxo_invalid_params",{error:"Address is required"});try{let q=await e2({address:$,apiKey:J,chain:X,limit:L,offset:Z,targetValue:j}),Y=q.length<L,W=q.filter(({is_spent:V})=>!V),z=X0(W),U=Q+z,_=j&&U>=j;if(Y||_)return aX(W,j);let B=await $2({accumulativeValue:U,address:$,apiKey:J,chain:X,limit:L,offset:Z+L,targetValue:j}),D=[...W,...B];return aX(D,j)}catch(q){let G=q instanceof Error?q.message:String(q);return console.error(`Failed to fetch unspent UTXOs: ${G}`),[]}}async function $0({address:X,chain:$,apiKey:J,fetchTxHex:j=!0,targetValue:Q}){let Z=await $2({address:X,apiKey:J,chain:$,targetValue:Q}),L=[];for(let{hash:q,index:G,script_hex:Y,value:W}of Z){let z;if(j)z=await X2({apiKey:J,chain:$,txHash:q});L.push({address:X,hash:q,index:G,txHex:z,value:W,witnessUtxo:{script:Buffer.from(Y,"hex"),value:W}})}return L}function I(X){let $=c2.get("apiKeys").blockchair||"";return d2({condition:!$,id:"no_blockchair_api_key_warning",warning:"No Blockchair API key found. Functionality will be limited."}),{broadcastTx:(J)=>r2({chain:X,txHash:J}),getAddressData:(J)=>eX({address:J,apiKey:$,chain:X}),getBalance:(J)=>s2({address:J,apiKey:$,chain:X}),getRawTx:(J)=>X2({apiKey:$,chain:X,txHash:J}),getSuggestedTxFee:()=>i2(X),getTransactionDetails:(J)=>t2({apiKey:$,chain:X,txHash:J}),getUtxos:(J)=>$0({...J,apiKey:$,chain:X})}}function f1(X){return X}function F1(){return function($){switch($){case F.Bitcoin:return $X.bitcoin;case F.BitcoinCash:return $X.bitcoinCash;case F.Dash:return $X.dash;case F.Litecoin:return $X.litecoin;case F.Dogecoin:return $X.dogecoin;case F.Zcash:return $X.zcash;default:throw new w("toolbox_utxo_not_supported",{chain:$})}}}import{sha256 as q0}from"@noble/hashes/sha2.js";import{createBase58check as L0}from"@scure/base";import{SwapKitError as j2}from"@swapkit/helpers";import{CashAddrType as fX,decodeCashAddr as J0,encodeCashAddr as j0}from"@swapkit/utxo-signer";var Q0={P2PKH:fX.P2PKH,P2SH:fX.P2SH},Z0={[fX.P2PKH]:"P2PKH",[fX.P2SH]:"P2SH"};function G0(X,$,J){return j0({hash:J,prefix:X,type:Q0[$]})}function Y0(X){let $=J0(X),J=Z0[$.type];if(!J)throw Error(`Unknown CashAddr type: ${$.type}`);return{hash:$.hash,prefix:$.prefix,type:J}}var lX={decode:Y0,encode:G0};var Q2=L0(q0);var Z2;((J)=>{J.Mainnet="mainnet";J.Testnet="testnet"})(Z2||={});var c={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}};function G2(X){try{return PX(X),!0}catch{return!1}}function Y2(X){return PX(X)?.network}function u(X){let $=PX(X);if($?.format==="legacy")return X;return W0($)}function FX(X){let $=PX(X);return _0($)}function PX(X){try{let $=z0(X);if($)return $}catch{}try{let $=U0(X);if($)return $}catch{}throw new j2("toolbox_utxo_invalid_address",{address:X})}function z0(X){try{let $=Q2.decode(X);if($.length!==21)throw new j2("toolbox_utxo_invalid_address",{address:X});let J=$[0],j=Array.prototype.slice.call($,1);switch(J){case c.legacy.mainnet.p2pkh:return{format:"legacy",hash:j,network:"mainnet",type:"p2pkh"};case c.legacy.mainnet.p2sh:return{format:"legacy",hash:j,network:"mainnet",type:"p2sh"};case c.legacy.testnet.p2pkh:return{format:"legacy",hash:j,network:"testnet",type:"p2pkh"};case c.legacy.testnet.p2sh:return{format:"legacy",hash:j,network:"testnet",type:"p2sh"};case c.bitpay.mainnet.p2pkh:return{format:"bitpay",hash:j,network:"mainnet",type:"p2pkh"};case c.bitpay.mainnet.p2sh:return{format:"bitpay",hash:j,network:"mainnet",type:"p2sh"};default:return}}catch{return}}function U0(X){if(X.indexOf(":")!==-1)try{return J2(X)}catch{}else{let $=["bitcoincash","bchtest","bchreg"];for(let J of $)try{return J2(`${J}:${X}`)}catch{}}return}function J2(X){try{let{hash:$,prefix:J,type:j}=lX.decode(X);return{format:"cashaddr",hash:Array.prototype.slice.call($,0),network:J==="bitcoincash"?"mainnet":"testnet",type:j==="P2PKH"?"p2pkh":"p2sh"}}catch{return}}function W0(X){let $=c.legacy[X.network][X.type],J=Buffer.alloc(1+X.hash.length);return J[0]=$,J.set(X.hash,1),Q2.encode(J)}function _0(X){let $=X.network==="mainnet"?"bitcoincash":"bchtest",J=X.type==="p2pkh"?"P2PKH":"P2SH",j=new Uint8Array(X.hash);return lX.encode($,J,j)}import{Chain as r,SwapKitError as H0}from"@swapkit/helpers";import{SwapKitError as B0}from"@swapkit/helpers";import{Script as N0}from"@swapkit/utxo-signer";var m1=1000,hX=10,pX=2,M0=10,D0=41,C0=107;function R(X){let $=new Uint8Array(Buffer.from(X,"utf8"));return N0.encode(["RETURN",$])}var uX;((J)=>{J.P2PKH="P2PKH";J.P2WPKH="P2WPKH"})(uX||={});var xX={["P2PKH"]:148,["P2WPKH"]:68},TX={["P2PKH"]:34,["P2WPKH"]:31},_X=(X)=>{if(X.startsWith("bc1")||X.startsWith("tb1")||X.startsWith("ltc1")||X.startsWith("tltc1"))return"P2WPKH";if(X.startsWith("1")||X.startsWith("m")||X.startsWith("n")||X.startsWith("bitcoincash:q")||X.startsWith("bitcoincash:p")||X.startsWith("q")||X.startsWith("p")||X.startsWith("L")||X.startsWith("M")||X.startsWith("3")||X.startsWith("D")||X.startsWith("A")||X.startsWith("9")||X.startsWith("X")||X.startsWith("7")||X.startsWith("y")||X.startsWith("t1")||X.startsWith("t3")||X.startsWith("tm"))return"P2PKH";throw new B0("toolbox_utxo_invalid_address",{address:X})},JX=({inputs:X,outputs:$,feeRate:J})=>{let j=X[0]&&"address"in X[0]&&X[0].address?_X(X[0].address):"P2PKH",Z=(J?X.filter((Y)=>Y.value>=xX["type"in Y&&Y.type?Y.type:"P2PKH"]*Math.ceil(J)):X).reduce((Y,W)=>Y+d(W),0),L=$?.reduce((Y,W)=>Y+EX(W),0)||TX[j],q=hX+Z+L;return j==="P2WPKH"?Math.ceil(q+pX/4):q},d=(X)=>{if("type"in X&&X.type)return xX[X.type];if("address"in X&&X.address)return xX[_X(X.address)];return D0+C0},EX=(X,$)=>{if(X?.script)return M0+X.script.length+(X.script.length>=74?2:1);if($)return TX[$];if("address"in X&&X.address)return TX[_X(X.address)];return TX.P2PKH};function RX(X){switch(X){case r.Bitcoin:case r.BitcoinCash:return 550;case r.Dash:case r.Litecoin:return 5500;case r.Dogecoin:return 1e5;case r.Zcash:return 546;default:throw new H0("toolbox_utxo_not_supported",{chain:X})}}function S({inputs:X,outputs:$,feeRate:J=1,chain:j=r.Bitcoin,changeAddress:Q=""}){let Z=X[0]&&"address"in X[0]&&X[0].address?_X(X[0].address):"P2PKH",L=X.filter((B)=>d(B)*J<=B.value),G=Z==="P2WPKH"?Math.ceil(pX/4):0,Y=hX+G+$.reduce((B,D)=>B+EX(D),0),W=$.reduce((B,D)=>B+D.value,0),z=Y*J,U=0,_=[];for(let B of L){let D=d(B),V=J*D;z+=V,U+=B.value,_.push(B);let e=z+W;if(U<e)continue;let DX=U-e,CX=J*EX({address:Q,value:0});if(DX>CX){let qX=CX+z,LX=U-(W+Math.ceil(qX));if(LX>Math.max(d({value:0})*J,RX(j)))return{fee:Math.ceil(qX),inputs:_,outputs:$.concat({address:Q,value:LX})}}return{fee:Math.ceil(z),inputs:_,outputs:$}}return{fee:Math.ceil(J*JX({inputs:X,outputs:$}))}}import{Chain as YX,SwapKitError as H1}from"@swapkit/helpers";import{hex as b2}from"@scure/base";import{Chain as m0,derivationPathToString as g0,FeeOption as l0,NetworkDerivationPath as x0,SwapKitError as l,updateDerivationPath as h0}from"@swapkit/helpers";import{BCHSigHash as p0,CashAddrPrefix as I2,CashAddrType as f2,encodeCashAddr as F2,NETWORKS as u0,p2pkh as P2,Transaction as T2}from"@swapkit/utxo-signer";import{secp256k1 as O0}from"@noble/curves/secp256k1.js";import{hex as i}from"@scure/base";import{HDKey as W2}from"@scure/bip32";import{mnemonicToSeedSync as cX}from"@scure/bip39";import{AssetValue as AX,applyFeeMultiplier as q2,Chain as b,derivationPathToString as NX,FeeOption as K,NetworkDerivationPath as _2,SwapKitError as k,SwapKitNumber as k0,updateDerivationPath as V0,warnOnce as b0}from"@swapkit/helpers";import{Address as I0,BCHSigHash as dX,CashAddrPrefix as f0,CashAddrType as F0,encodeCashAddr as P0,NETWORKS as QX,p2pkh as L2,p2wpkh as T0,RBF_SEQUENCE as E0,SigHash as B2,Transaction as oX,WIF as N2}from"@swapkit/utxo-signer";import{match as M2}from"ts-pattern";import{validateZcashAddress as BX}from"@swapkit/utxo-signer";function jX(X){return X.replace(/(bchtest:|bitcoincash:)/,"")}function n(X){let $=jX(X);return G2($)&&Y2($)==="mainnet"}var yX=[b.Dash,b.Dogecoin,b.Zcash,b.BitcoinCash],vX=[b.Bitcoin];function D2({address:X,chain:$}){return M2($).with(b.BitcoinCash,()=>n(X)).with(b.Zcash,()=>BX(X)).otherwise(()=>{try{return I0(P($)).decode(X),!0}catch{return!1}})}function P(X){return M2(X).with(b.Bitcoin,()=>QX.bitcoin).with(b.BitcoinCash,()=>QX.bitcoinCash).with(b.Dash,()=>QX.dash).with(b.Dogecoin,()=>QX.dogecoin).with(b.Litecoin,()=>QX.litecoin).with(b.Zcash,()=>QX.zcash).exhaustive()}function R0({phrase:X,derivationPath:$,network:J,seed:j}){let Q=j??cX(X),L=W2.fromMasterSeed(Q,J.bip32).derive($);if(!L.privateKey)throw new k("toolbox_utxo_invalid_params",{error:"Could not derive private key from phrase"});return L.privateKey}function z2(X){return O0.getPublicKey(X,!0)}function MX({publicKey:X,chain:$,network:J}){if($===b.BitcoinCash){let Z=L2(X,J);if(!Z.hash)throw new k("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return P0({hash:Z.hash,prefix:f0.MAINNET,type:F0.P2PKH}).replace(/^bitcoincash:/,"")}let Q=!yX.includes($)?T0(X,J):L2(X,J);if(!Q.address)throw new k("toolbox_utxo_invalid_address",{error:"Could not derive address"});return Q.address}function ZX({phrase:X,derivationPath:$,chain:J,wif:j,seed:Q}){let Z=P(J);if(j){let Y=N2(Z).decode(j),W=z2(Y);return{privateKey:Y,publicKey:W}}if(!X)throw new k("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let L=$||NX(_2[J]),q=R0({derivationPath:L,network:Z,phrase:X,seed:Q}),G=z2(q);return{privateKey:q,publicKey:G}}function A0(X,$){return N2(P($)).encode(X)}function v0({phrase:X,derivationPath:$,chain:J,seed:j}){let Q=$.split("/");if(Q.length<4)throw new k("toolbox_utxo_invalid_params",{error:`Derivation path must have at least 4 levels (got ${Q.length}): ${$}`});let Z=P(J),L=j??cX(X),q=W2.fromMasterSeed(L,Z.bip32),G=Q.slice(0,4).join("/");return q.derive(G)}function s({inputs:X,outputs:$,chain:J,tx:j,sender:Q,compiledMemo:Z,enableRBF:L=!1}){let q=P(J),G=!yX.includes(J),Y=L?E0:void 0,W=new Set;for(let z of X){let U=`${z.hash}:${z.index}`;if(W.has(U))throw new k("toolbox_utxo_invalid_params",{error:"Duplicate input detected"});W.add(U);let _=typeof z.hash==="string"?i.decode(z.hash):z.hash;if(G&&z.witnessUtxo)j.addInput({index:z.index,sequence:Y,txid:_,witnessUtxo:{amount:BigInt(z.witnessUtxo.value),script:z.witnessUtxo.script}});else if(z.txHex)j.addInput({index:z.index,nonWitnessUtxo:i.decode(z.txHex),sequence:Y,txid:_,...J===b.BitcoinCash?{sighashType:dX.ALL}:{}});else throw new k("toolbox_utxo_invalid_params",{error:"Input requires either witnessUtxo or txHex for non-segwit chains"})}for(let z of $){let U="address"in z&&z.address?z.address:Q;if(J===b.BitcoinCash)U=u(U);if(z.script){if(Z)j.addOutput({amount:0n,script:Z})}else j.addOutputAddress(U,BigInt(z.value),q)}return{inputs:X,tx:j}}async function GX(X){let $=await I(X).getSuggestedTxFee();return{[K.Average]:$,[K.Fast]:q2($,K.Fast),[K.Fastest]:q2($,K.Fastest)}}async function C2({assetValue:X,recipient:$,memo:J,sender:j,fetchTxHex:Q=!1}){let Z=X.chain,L=(await GX(Z))[K.Fastest],q=Q||yX.includes(Z),G=X.getBaseValue("number"),Y=Math.ceil(G+L*5000);return{inputs:await I(Z).getUtxos({address:j,fetchTxHex:q,targetValue:Y}),outputs:[{address:$,value:G},...J?[{address:"",script:R(J),value:0}]:[]]}}async function H2({assetValue:X,recipient:$,memo:J,feeRate:j,sender:Q,fetchTxHex:Z=!1,enableRBF:L=!1}){let q=X.chain,G=J?R(J):null,Y=await C2({assetValue:X,fetchTxHex:Z,memo:J,recipient:$,sender:Q}),{inputs:W,outputs:z}=S({...Y,chain:q,feeRate:j});if(!(W&&z))throw new k("toolbox_utxo_insufficient_balance",{assetValue:X,sender:Q});let U=new oX({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!G,version:1}),{inputs:_,tx:B}=s({chain:q,compiledMemo:G,enableRBF:L,inputs:W,outputs:z,sender:Q,tx:U});return{inputs:_,tx:B,utxos:Y.inputs}}async function O2({assetValue:X,feeOptionKey:$=K.Fast,feeRate:J,memo:j,sender:Q,recipient:Z}){let L=X.chain,q=await C2({assetValue:X,memo:j,recipient:Z,sender:Q}),G=J?Math.floor(J):(await GX(L))[$];return S({...q,chain:L,feeRate:G})}function y0(X){return async function({from:J,memo:j,feeRate:Q,feeOptionKey:Z=K.Fast,recipients:L=1}){let q=await I(X).getAddressData(J),G=Q?Math.ceil(Q):(await GX(X))[Z],Y=q?.utxo.map((D)=>({...D,hash:"",type:"P2PKH"})).filter((D)=>D.value>Math.max(RX(X),d(D)*G));if(!Y?.length)return AX.from({chain:X});let W=BigInt(Y.reduce((D,V)=>D+V.value,0)),z=AX.from({chain:X,value:W}),U=typeof L==="number"?Array.from({length:L},()=>({address:J,value:0})):L;if(j)U.push({address:J,script:R(j),value:0});let _=JX({inputs:Y,outputs:U}),B=AX.from({chain:X,value:BigInt(_*G)});return z.sub(B)}}function w0(X){return async function(J){let{fee:j}=await O2(J);return AX.from({chain:X,value:k0.fromBigInt(BigInt(j),8).getValue("string")})}}function S0({chain:X,phrase:$,derivationPath:J,seed:j}){let Q=P(X),{privateKey:Z,publicKey:L}=ZX({chain:X,derivationPath:J,phrase:$,seed:j}),q=X===b.BitcoinCash?[dX.ALL]:[B2.ALL];return{getAddress:()=>MX({chain:X,network:Q,publicKey:L}),privateKey:Z,publicKey:L,signTransaction:(G)=>{return G.sign(Z,q),G}}}function K0(X,$){return async function({memo:j,recipient:Q,feeOptionKey:Z,feeRate:L,assetValue:q,enableRBF:G=!1}){let Y=await $?.getAddress();if(!($&&Y))throw new k("toolbox_utxo_no_signer");if(!Q)throw new k("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});b0({condition:G&&!vX.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 W=G&&vX.includes(X),z=L||(await GX(X))[Z||K.Fast],{tx:U}=await H2({assetValue:q,enableRBF:W,feeRate:z,memo:j,recipient:Q,sender:Y}),_=await $.signTransaction(U);return _.finalize(),I(X).broadcastTx(i.encode(_.extract()))}}function k2(X){return($)=>D2({address:$,chain:X})}function V2(X){let $=P(X);return function(j){if(!j)throw new k("toolbox_utxo_invalid_params",{error:"Keys must be provided"});return MX({chain:X,network:$,publicKey:j.publicKey})}}function a({chain:X,...$}){let J="phrase"in $?$.phrase:void 0,j="index"in $?$.index||0:0,Q=J?cX(J):void 0,Z="derivationPath"in $&&$.derivationPath?$.derivationPath:V0(_2[X],{index:j}),L=NX(Z),q=J?S0({chain:X,derivationPath:L,phrase:J,seed:Q}):void 0,G="signer"in $?$.signer:void 0,Y=q||G,W=J?ZX({chain:X,derivationPath:L,phrase:J,seed:Q}):void 0;function z(){if(Y)return Y.getAddress();return Promise.resolve(void 0)}function U(N){if(!J)return;let M=o({accountIndex:N,chain:X,derivationPath:Z});return v0({chain:X,derivationPath:NX(M),phrase:J,seed:Q})}let _=U();function B(){if(!_)return;return _.publicExtendedKey}function D({accountIndex:N}={}){let M=N===void 0?_:U(N);if(!M)return;let C=o({accountIndex:N,chain:X,derivationPath:Z});return{accountIndex:XX(C),path:NX(C),xpub:M.publicExtendedKey}}function V({accountIndex:N,index:M,change:C=!1}){let H=N===void 0?_:U(N);if(!H)return;let O=UX({accountIndex:N,chain:X,change:C,derivationPath:Z,index:M}),E=P(X),A=H.deriveChild(Number(C)).deriveChild(M);if(!A.publicKey)throw new k("toolbox_utxo_invalid_params",{error:"Could not derive public key"});let T=MX({chain:X,network:E,publicKey:A.publicKey}),v=i.encode(A.publicKey);return{accountIndex:XX(O),address:T,change:C,index:M,path:NX(O),pubkey:v}}async function e(N){if(!vX.includes(X))return{reason:`RBF is not supported on ${X}`,supported:!1};let M=await I(X).getTransactionDetails(N);return{canReplace:M.isRBF&&!M.confirmed,confirmed:M.confirmed,enabled:M.isRBF,fee:M.fee,sequences:M.sequences,supported:!0}}async function DX({txid:N,newFeeRate:M,recipient:C,memo:H}){if(!vX.includes(X))throw new k("toolbox_utxo_rbf_not_supported",{chain:X});let O=await I(X).getTransactionDetails(N);if(!O.isRBF)throw new k("toolbox_utxo_tx_not_replaceable",{txid:N});if(O.confirmed)throw new k("toolbox_utxo_tx_already_confirmed",{blockId:O.blockId,txid:N});let E=O.inputs.reduce((f,p)=>f+p.value,0),T=O.outputs.find((f)=>f.recipient===C)?.value||0;if(T===0)throw new k("toolbox_utxo_invalid_params",{error:"Could not determine send amount from original transaction"});let v=await Promise.all(O.inputs.map(async(f)=>{let p=await I(X).getRawTx(f.transaction_hash);return{hash:f.transaction_hash,index:f.index,txHex:p,value:f.value,witnessUtxo:void 0}})),HX=H?R(H):null,mX=JX({feeRate:M,inputs:v.map((f)=>({...f,type:"P2WPKH"})),outputs:[{address:C,value:T}]}),g=Math.ceil(mX*M);if(g<=O.fee)throw new k("toolbox_utxo_rbf_fee_too_low",{newFee:g,originalFee:O.fee});let zX=g-O.fee,x=T-zX;if(x<=0)throw new k("toolbox_utxo_rbf_insufficient_change");let OX=new oX({allowLegacyWitnessUtxo:!0,version:1}),kX=[{address:C,value:x},...H?[{address:"",script:R(H),value:0}]:[]],VX=E-x-g,h=await z();if(VX>RX(X)&&h)kX.push({address:h,value:VX});return s({chain:X,compiledMemo:HX,inputs:v,outputs:kX,sender:h||C,tx:OX}),{feeDelta:zX,newFee:g,originalFee:O.fee,tx:OX}}async function CX({txid:N,newFeeRate:M,recipient:C,memo:H}){let{tx:O,originalFee:E,newFee:A}=await DX({memo:H,newFeeRate:M,recipient:C,txid:N}),T=await KX(O);T.finalize();let v=await I(X).broadcastTx(i.encode(T.extract()));return{newFee:A,originalFee:E,txid:v}}function qX({accountIndex:N,index:M,change:C=!1}){y("index",M);let H=N===void 0?_:U(N);if(!H)return;return H.deriveChild(Number(C)).deriveChild(M).privateKey||void 0}function LX({tx:N,inputDerivations:M}){if(!_)throw new k("toolbox_utxo_no_signer");let C=X===b.BitcoinCash?[dX.ALL]:[B2.ALL];for(let H=0;H<M.length;H++){let O=M[H];if(!O)continue;let{derivationIndex:E,isChange:A}=O,T=qX({change:A,index:E});if(!T)throw new k("toolbox_utxo_invalid_params",{error:`Could not derive private key for input ${H} at index ${E}`});N.signIdx(T,H,C)}return N}async function g2({utxos:N,recipient:M,assetValue:C,memo:H,feeRate:O,feeOptionKey:E,changeAddress:A}){if(!_)throw new k("toolbox_utxo_no_signer");let T=O||(await GX(X))[E||K.Fast],v=H?R(H):null,HX=[{address:M,value:C.getBaseValue("number")}];if(v)HX.push({address:"",script:v,value:0});let mX=N.map(({hash:h,index:f,value:p,txHex:h2,witnessUtxo:gX})=>({hash:h,index:f,txHex:h2,value:p,witnessUtxo:gX?{script:gX.script,value:gX.value}:void 0})),{inputs:g,outputs:zX}=S({chain:X,feeRate:T,inputs:mX,outputs:HX});if(!(g&&zX))throw new k("toolbox_utxo_insufficient_balance",{assetValue:C,sender:"multiple addresses"});let x=new oX({allowLegacyWitnessUtxo:!0,version:1}),OX=N[0]?.address,kX=A||await z()||OX||M;s({chain:X,compiledMemo:v,inputs:g,outputs:zX,sender:kX,tx:x});let VX=g.map((h)=>{let f=N.find((p)=>p.hash===h.hash&&p.index===h.index);return f?{derivationIndex:f.derivationIndex,isChange:f.isChange}:{derivationIndex:0,isChange:!1}});return LX({inputDerivations:VX,tx:x}),x.finalize(),I(X).broadcastTx(i.encode(x.extract()))}function l2({address:N,gapLimit:M=20}){if(!_)return;for(let C=0;C<M;C++){let H=V({change:!1,index:C}),O=V({change:!0,index:C}),E=H?.address===N?!1:O?.address===N;if(H?.address===N||O?.address===N)return{change:E,index:C}}return}function KX(N){if(!Y)throw new k("toolbox_utxo_no_signer");return Y.signTransaction(N)}async function x2(N){let M=await KX(N);return M.finalize(),await I(X).broadcastTx(i.encode(M.extract()))}return{accumulative:S,broadcastTx:(N)=>I(X).broadcastTx(N),bumpFee:CX,calculateTxSize:JX,createKeysForPath:(N)=>ZX({...N,chain:X}),createReplacementTransaction:DX,createTransaction:H2,deriveAddressAtIndex:V,derivePrivateKeyAtIndex:qX,estimateMaxSendableAmount:y0(X),estimateTransactionFee:w0(X),getAddress:z,getAddressFromKeys:V2(X),getBalance:U2(X),getExtendedPublicKey:B,getExtendedPublicKeyInfo:D,getFeeRates:()=>GX(X),getInputsOutputsFee:O2,getNetworkForChain:()=>P(X),getPrivateKeyFromMnemonic:(N)=>A0(ZX({...N,chain:X}).privateKey,X),isRBFEnabled:e,keys:W,resolveDerivationIndex:l2,signAndBroadcastTransaction:x2,signTransaction:KX,signTransactionWithMultipleKeys:LX,transfer:K0(X,Y),transferFromMultipleAddresses:g2,validateAddress:k2(X)}}var m=m0.BitcoinCash;function wX(X){return jX(FX(X))}function o0(X){let $=P(m);function J(Q){return Q.sign(X.privateKey,[p0.ALL]),Q}function j(){let Q=P2(X.publicKey,$);if(!Q.hash)throw new l("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});let Z=F2({hash:Q.hash,prefix:I2.MAINNET,type:f2.P2PKH});return Promise.resolve(Z.replace(/^bitcoincash:/,""))}return{getAddress:j,signTransaction:J}}function E2(X){let $="phrase"in X?X.phrase:void 0,J="index"in X?X.index||0:0,j=g0("derivationPath"in X&&X.derivationPath?X.derivationPath:h0(x0[m],{index:J})),Q=$?ZX({chain:m,derivationPath:j,phrase:$}):void 0,Z=Q?o0(Q):("signer"in X)?X.signer:void 0;function L(){return Promise.resolve(Z?.getAddress())}let{getBalance:q,getFeeRates:G,broadcastTx:Y,...W}=a({chain:m});function z(B,D=!0){return q(jX(FX(B)))}function U(B){if(!Z)throw new l("toolbox_utxo_no_signer");return Z.signTransaction(B)}async function _(B){let D=await U(B);return D.finalize(),await Y(b2.encode(D.extract()))}return{...W,broadcastTx:Y,buildTx:d0,createTransaction:R2,getAddress:L,getAddressFromKeys:r0,getBalance:z,getFeeRates:G,signAndBroadcastTransaction:_,signTransaction:U,stripPrefix:jX,stripToCashAddress:wX,transfer:c0({broadcastTx:Y,getFeeRates:G,signer:Z}),validateAddress:n}}async function R2({assetValue:X,recipient:$,memo:J,feeRate:j,sender:Q}){if(!n($))throw new l("toolbox_utxo_invalid_address",{address:$});let Z=Math.ceil(X.getBaseValue("number")+j*7500),L=await I(m).getUtxos({address:wX(Q),fetchTxHex:!0,targetValue:Z}),q=J?R(J):null,G=[],Y=u($);if(G.push({address:Y,value:X.getBaseValue("number")}),q)G.push({script:q,value:0});let{inputs:W,outputs:z}=S({chain:m,feeRate:j,inputs:L,outputs:G});if(!(W&&z))throw new l("toolbox_utxo_insufficient_balance",{assetValue:X,sender:Q});let U=new T2({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!q,version:1}),_=u(Q),{inputs:B,tx:D}=s({chain:m,compiledMemo:q,inputs:W,outputs:z.map((V)=>("address"in V)&&V.address?{...V,address:u(V.address)}:V),sender:_,tx:U});return{inputs:B,tx:D,utxos:W}}function c0({broadcastTx:X,getFeeRates:$,signer:J}){return async function({recipient:Q,assetValue:Z,feeOptionKey:L=l0.Fast,...q}){let G=await J?.getAddress();if(!(J&&G))throw new l("toolbox_utxo_no_signer");if(!Q)throw new l("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let Y=q.feeRate||(await $())[L],{tx:W}=await R2({...q,assetValue:Z,feeRate:Y,recipient:Q,sender:G}),z=await J.signTransaction(W);return z.finalize(),X(b2.encode(z.extract()))}}async function d0({assetValue:X,recipient:$,memo:J,feeRate:j,sender:Q}){let Z=FX($);if(!n(Z))throw new l("toolbox_utxo_invalid_address",{address:Z});let L=Math.ceil(X.getBaseValue("number")+j*7500),q=await I(m).getUtxos({address:wX(Q),fetchTxHex:!0,targetValue:L}),G=Number(j.toFixed(0)),Y=J?R(J):null,W=[];if(W.push({address:u($),value:X.getBaseValue("number")}),Y)W.push({script:Y,value:0});let{inputs:z,outputs:U}=S({chain:m,feeRate:G,inputs:q,outputs:W});if(!(z&&U))throw new l("toolbox_utxo_insufficient_balance",{assetValue:X,sender:Q});let _=new T2({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!Y,version:1}),{inputs:B,tx:D}=s({chain:m,compiledMemo:Y,inputs:z,outputs:U,sender:u(Q),tx:_});return{inputs:B,tx:D,utxos:q}}function r0(X){let $=u0.bitcoinCash,J=P2(X.publicKey,$);if(!J.hash)throw new l("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return F2({hash:J.hash,prefix:I2.MAINNET,type:f2.P2PKH}).replace(/^bitcoincash:/,"")}import{createBase58check as n0,hex as i0}from"@scure/base";import{HDKey as y2}from"@scure/bip32";import{mnemonicToSeedSync as w2}from"@scure/bip39";import{Chain as SX,derivationPathToString as s0,FeeOption as a0,NetworkDerivationPath as t0,SKConfig as S2,SwapKitError as t,updateDerivationPath as e0}from"@swapkit/helpers";import{Address as X1,createZcashTransaction as $1,isTransparentZcashAddress as A2,OutScript as J1,PCZT as j1,utils as K2,WIF as Q1,ZCASH_NETWORK as Z1,ZCASH_TEST_NETWORK as G1,ZcashConsensusBranchId as Y1,ZcashPSBT as q1,ZcashSigHash as rX,ZcashVersionGroupId as L1}from"@swapkit/utxo-signer";import{match as z1,P as nX}from"ts-pattern";function iX(){let{isStagenet:X}=S2.get("envs");return X?G1:Z1}var U1=n0(K2.sha256);function W1(X){return U1.encode(X)}function _1({phrase:X,derivationPath:$}){let J=w2(X),Q=y2.fromMasterSeed(J).derive($);if(!Q.privateKey||!Q.publicKey)throw new t("toolbox_utxo_invalid_params");let{privateKey:Z,publicKey:L}=Q,q=K2.hash160(L),{isStagenet:G}=S2.get("envs"),Y=G?new Uint8Array([29,37]):new Uint8Array([28,184]),W=new Uint8Array(Y.length+q.length);W.set(Y,0),W.set(q,Y.length);let z=W1(W);return{getAddress:()=>Promise.resolve(z),signTransaction:(U)=>{if(U instanceof q1){let _=U.toPCZT();return _.signAllInputs(Z,L,rX.ALL),_.finalizeAllInputs(),Promise.resolve(_.extract())}if(U instanceof j1)return U.signAllInputs(Z,L,rX.ALL),U.finalizeAllInputs(),Promise.resolve(U.extract());return U.signAllInputs(Z,L,rX.ALL),Promise.resolve(U)}}}function B1({inputs:X,outputs:$,tx:J,sender:j,compiledMemo:Q}){let Z=iX();for(let L of X){let q=X1(Z).decode(j),G=J1.encode(q);J.addInput({index:L.index,script:G,sequence:4294967295,txid:i0.decode(L.hash),value:BigInt(L.value)})}for(let L of $){let q="address"in L&&L.address?L.address:j,G=L.script;if(G&&!Q)continue;if(G&&Q)J.addOutput({amount:0n,script:Q});else J.addOutputAddress(q,BigInt(L.value),Z)}return{inputs:X,tx:J}}async function v2(X){let{assetValue:$,recipient:J,memo:j,feeRate:Q,sender:Z,fetchTxHex:L}=X,q=iX();if(!A2(Z,q))throw new t("toolbox_utxo_invalid_address",{address:Z});if(!A2(J,q))throw new t("toolbox_utxo_invalid_address",{address:J,error:"Zcash transaction creation currently supports transparent addresses only"});let G=j?R(j):null,Y=await I(SX.Zcash).getUtxos({address:Z,fetchTxHex:L!==!1}),W=[{address:J,value:Number($.getBaseValue("string"))},...G?[{script:G,value:0}]:[]],{inputs:z,outputs:U}=S({chain:SX.Zcash,changeAddress:Z,feeRate:Q,inputs:Y,outputs:W});if(!(z&&U))throw new t("toolbox_utxo_insufficient_balance",{assetValue:$,sender:Z});let _=$1({consensusBranchId:Y1.NU6_2,expiryHeight:0,lockTime:0,version:4,versionGroupId:L1.SAPLING}),{tx:B,inputs:D}=B1({compiledMemo:G,inputs:z,outputs:U,sender:Z,tx:_});return{inputs:D,outputs:U,tx:B}}function m2(X){let $=z1(X).with({signer:nX.not(nX.nullish)},({signer:G})=>G).with({phrase:nX.string},({phrase:G,derivationPath:Y,index:W=0})=>{let z=Y||t0[SX.Zcash]||[44,133,0,0,0],U=e0(z,{index:W}),_=s0(U);return _1({derivationPath:_,phrase:G})}).otherwise(()=>{return}),J=a({chain:SX.Zcash,signer:$});async function j(G){if(!$)throw new t("toolbox_utxo_no_signer");return await $.signTransaction(G)}async function Q(G){let Y=await j(G);return J.broadcastTx(Y.toHex())}async function Z({recipient:G,assetValue:Y,feeOptionKey:W=a0.Fast,...z}){let U=await $?.getAddress();if(!($&&U))throw new t("toolbox_utxo_no_signer");let _=z.feeRate||(await J.getFeeRates())[W],{tx:B}=await v2({...z,assetValue:Y,feeRate:_,recipient:G,sender:U}),V=(await $.signTransaction(B)).toHex();return J.broadcastTx(V)}function L({phrase:G,derivationPath:Y="m/44'/133'/0'/0/0"}){let W=w2(G),U=y2.fromMasterSeed(W).derive(Y);if(!U.privateKey||!U.publicKey)throw new t("toolbox_utxo_invalid_params");return{privateKey:U.privateKey,publicKey:U.publicKey}}function q({phrase:G,derivationPath:Y="m/44'/133'/0'/0/0"}){let W=L({derivationPath:Y,phrase:G}),z=iX();return Q1(z).encode(W.privateKey)}return{...J,createKeysForPath:L,createTransaction:v2,getPrivateKeyFromMnemonic:q,signAndBroadcastTransaction:Q,signTransaction:j,transfer:Z,validateAddress:BX}}import{hex as N1}from"@scure/base";import{HDKey as M1}from"@scure/bip32";import{derivationPathToString as D1}from"@swapkit/helpers";function C1({xpub:X,chain:$,count:J,startIndex:j=0,accountIndex:Q}){if(y("count",J),J<1)throw RangeError("count must be at least 1");y("startIndex",j);let Z=P($),L=M1.fromExtendedKey(X,Z.bip32),q=o({accountIndex:Q,chain:$}),G=XX(q),Y=[];for(let W of[!1,!0]){let z=L.deriveChild(Number(W));for(let U=0;U<J;U++){let _=j+U,B=z.deriveChild(_);if(!B.publicKey)continue;let D=UX({accountIndex:Q,chain:$,change:W,index:_});Y.push({accountIndex:G,address:MX({chain:$,network:Z,publicKey:B.publicKey}),change:W,index:_,path:D1(D),pubkey:N1.encode(B.publicKey)})}}return Y}function S8(X,$){switch(X){case YX.BitcoinCash:return E2($||{});case YX.Zcash:return m2($);case YX.Bitcoin:case YX.Dogecoin:case YX.Litecoin:case YX.Dash:return a({chain:X,...$});default:throw new H1("toolbox_utxo_not_supported",{chain:X})}}export{BX as validateZcashAddress,D2 as validateUtxoAddress,n as validateBchAddress,u as toLegacyAddress,FX as toCashAddress,wX as stripToCashAddress,jX as stripPrefix,yX as nonSegwitChains,G2 as isValidAddress,S8 as getUtxoToolbox,F1 as getUtxoNetwork,I as getUtxoApi,k2 as getUTXOAddressValidator,UX as getUTXOAddressPath,o as getUTXOAccountPath,XX as getUTXOAccountIndexFromPath,_X as getScriptTypeForAddress,EX as getOutputSize,P as getNetworkForChain,d as getInputSize,RX as getDustThreshold,Y2 as detectAddressNetwork,C1 as deriveAddressesFromXpub,m2 as createZcashToolbox,a as createUTXOToolbox,u2 as createHDWalletHelpers,f1 as createCustomUtxoApi,E2 as createBCHToolbox,R as compileMemo,JX as calculateTxSize,y as assertDerivationIndex,V2 as addressFromKeysGetter,s as addInputsAndOutputs,S as accumulative,Z2 as UtxoNetwork,uX as UTXOScriptType,hX as TX_OVERHEAD,pX as SEGWIT_MARKER_FLAG_WEIGHT,TX as OutputSizes,M0 as OP_RETURN_OVERHEAD,m1 as MIN_TX_FEE,xX as InputSizes};
|
|
@@ -18,11 +18,79 @@ export declare function BaseEVMToolbox<P extends Provider | BrowserProvider, S e
|
|
|
18
18
|
approvedAmount: ({ assetAddress, spenderAddress, from }: IsApprovedParams) => Promise<bigint>;
|
|
19
19
|
broadcastTransaction: ((signedTx: string) => Promise<import("ethers").TransactionResponse>) | ((signedTx: string) => Promise<import("ethers").TransactionResponse>);
|
|
20
20
|
call: <T>({ callProvider, contractAddress, abi, funcName, funcParams, txOverrides, feeOption, }: CallParams) => Promise<T>;
|
|
21
|
-
createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam }: ApproveParams) => Promise<
|
|
21
|
+
createApprovalTx: ({ assetAddress, spenderAddress, amount, from: fromParam }: ApproveParams) => Promise<{
|
|
22
|
+
value: string;
|
|
23
|
+
to: string;
|
|
24
|
+
data: string;
|
|
25
|
+
from?: string;
|
|
26
|
+
type?: number;
|
|
27
|
+
nonce?: number;
|
|
28
|
+
gasLimit?: bigint;
|
|
29
|
+
gasPrice?: bigint;
|
|
30
|
+
maxPriorityFeePerGas?: bigint;
|
|
31
|
+
maxFeePerGas?: bigint;
|
|
32
|
+
chainId?: bigint;
|
|
33
|
+
accessList?: import("ethers").AccessList;
|
|
34
|
+
authorizationList?: Array<import("ethers").Authorization>;
|
|
35
|
+
customData?: any;
|
|
36
|
+
blockTag?: import("ethers").BlockTag;
|
|
37
|
+
enableCcipRead?: boolean;
|
|
38
|
+
}>;
|
|
22
39
|
createContract: (address: string, abi: readonly (JsonFragment | Fragment)[]) => Contract;
|
|
23
|
-
createContractTxObject: ({ contractAddress, abi, funcName, funcParams, txOverrides }: CallParams) => Promise<
|
|
24
|
-
|
|
25
|
-
|
|
40
|
+
createContractTxObject: ({ contractAddress, abi, funcName, funcParams, txOverrides }: CallParams) => Promise<{
|
|
41
|
+
value: string;
|
|
42
|
+
to: string;
|
|
43
|
+
data: string;
|
|
44
|
+
from?: string;
|
|
45
|
+
type?: number;
|
|
46
|
+
nonce?: number;
|
|
47
|
+
gasLimit?: bigint;
|
|
48
|
+
gasPrice?: bigint;
|
|
49
|
+
maxPriorityFeePerGas?: bigint;
|
|
50
|
+
maxFeePerGas?: bigint;
|
|
51
|
+
chainId?: bigint;
|
|
52
|
+
accessList?: import("ethers").AccessList;
|
|
53
|
+
authorizationList?: Array<import("ethers").Authorization>;
|
|
54
|
+
customData?: any;
|
|
55
|
+
blockTag?: import("ethers").BlockTag;
|
|
56
|
+
enableCcipRead?: boolean;
|
|
57
|
+
}>;
|
|
58
|
+
createTransaction: ({ assetValue, memo, recipient, data, sender: fromOverride, maxFeePerGas, maxPriorityFeePerGas, gasPrice, ...tx }: EVMCreateTransactionParams) => Promise<{
|
|
59
|
+
value: string;
|
|
60
|
+
to: string;
|
|
61
|
+
data: string;
|
|
62
|
+
from?: string;
|
|
63
|
+
type?: number;
|
|
64
|
+
nonce?: number;
|
|
65
|
+
gasLimit?: bigint;
|
|
66
|
+
gasPrice?: bigint;
|
|
67
|
+
maxPriorityFeePerGas?: bigint;
|
|
68
|
+
maxFeePerGas?: bigint;
|
|
69
|
+
chainId?: bigint;
|
|
70
|
+
accessList?: import("ethers").AccessList;
|
|
71
|
+
authorizationList?: Array<import("ethers").Authorization>;
|
|
72
|
+
customData?: any;
|
|
73
|
+
blockTag?: import("ethers").BlockTag;
|
|
74
|
+
enableCcipRead?: boolean;
|
|
75
|
+
}>;
|
|
76
|
+
createTransferTx: ({ assetValue, memo, recipient, data, sender: fromOverride, maxFeePerGas, maxPriorityFeePerGas, gasPrice, ...tx }: EVMCreateTransactionParams) => Promise<{
|
|
77
|
+
value: string;
|
|
78
|
+
to: string;
|
|
79
|
+
data: string;
|
|
80
|
+
from?: string;
|
|
81
|
+
type?: number;
|
|
82
|
+
nonce?: number;
|
|
83
|
+
gasLimit?: bigint;
|
|
84
|
+
gasPrice?: bigint;
|
|
85
|
+
maxPriorityFeePerGas?: bigint;
|
|
86
|
+
maxFeePerGas?: bigint;
|
|
87
|
+
chainId?: bigint;
|
|
88
|
+
accessList?: import("ethers").AccessList;
|
|
89
|
+
authorizationList?: Array<import("ethers").Authorization>;
|
|
90
|
+
customData?: any;
|
|
91
|
+
blockTag?: import("ethers").BlockTag;
|
|
92
|
+
enableCcipRead?: boolean;
|
|
93
|
+
}>;
|
|
26
94
|
EIP1193SendTransaction: ({ value, ...params }: EVMTxParams | ContractTransaction) => Promise<string>;
|
|
27
95
|
estimateCall: ({ contractAddress, abi, funcName, funcParams, txOverrides }: EstimateCallParams) => Promise<bigint>;
|
|
28
96
|
estimateGasLimit: ({ assetValue, recipient, memo, data, sender, funcName, funcParams, txOverrides, }: EVMTransferParams & {
|
|
@@ -71,7 +139,24 @@ export declare function getEIP1193SendTransaction(provider: Provider | BrowserPr
|
|
|
71
139
|
export declare function getChecksumAddressFromAsset(asset: Asset, chain: EVMChain): string;
|
|
72
140
|
export declare const ContractAddress: Record<EVMChain, string>;
|
|
73
141
|
export declare function getTokenAddress({ chain, symbol, ticker }: Asset, baseAssetChain: EVMChain): string | null;
|
|
74
|
-
export declare function getCreateContractTxObject({ provider }: ToolboxWrapParams): ({ contractAddress, abi, funcName, funcParams, txOverrides }: CallParams) => Promise<
|
|
142
|
+
export declare function getCreateContractTxObject({ provider }: ToolboxWrapParams): ({ contractAddress, abi, funcName, funcParams, txOverrides }: CallParams) => Promise<{
|
|
143
|
+
value: string;
|
|
144
|
+
to: string;
|
|
145
|
+
data: string;
|
|
146
|
+
from?: string;
|
|
147
|
+
type?: number;
|
|
148
|
+
nonce?: number;
|
|
149
|
+
gasLimit?: bigint;
|
|
150
|
+
gasPrice?: bigint;
|
|
151
|
+
maxPriorityFeePerGas?: bigint;
|
|
152
|
+
maxFeePerGas?: bigint;
|
|
153
|
+
chainId?: bigint;
|
|
154
|
+
accessList?: import("ethers").AccessList;
|
|
155
|
+
authorizationList?: Array<import("ethers").Authorization>;
|
|
156
|
+
customData?: any;
|
|
157
|
+
blockTag?: import("ethers").BlockTag;
|
|
158
|
+
enableCcipRead?: boolean;
|
|
159
|
+
}>;
|
|
75
160
|
export declare function getEstimateGasPrices({ chain, provider, isEIP1559Compatible, }: {
|
|
76
161
|
provider: Provider;
|
|
77
162
|
isEIP1559Compatible?: boolean;
|