@uswap/toolboxes 4.3.7 → 4.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/cardano/index.cjs +2 -2
- package/dist/src/cardano/index.cjs.map +3 -3
- package/dist/src/cardano/index.js +2 -2
- package/dist/src/cardano/index.js.map +3 -3
- package/dist/src/cosmos/index.cjs +2 -2
- package/dist/src/cosmos/index.cjs.map +8 -8
- package/dist/src/cosmos/index.js +2 -2
- package/dist/src/cosmos/index.js.map +8 -8
- package/dist/src/evm/index.cjs +2 -2
- package/dist/src/evm/index.cjs.map +7 -7
- package/dist/src/evm/index.js +2 -2
- package/dist/src/evm/index.js.map +7 -7
- package/dist/src/index.cjs +3 -3
- package/dist/src/index.cjs.map +34 -34
- package/dist/src/index.js +3 -3
- package/dist/src/index.js.map +34 -34
- package/dist/src/near/index.cjs +2 -2
- package/dist/src/near/index.cjs.map +5 -5
- package/dist/src/near/index.js +2 -2
- package/dist/src/near/index.js.map +5 -5
- package/dist/src/radix/index.cjs +2 -2
- package/dist/src/radix/index.cjs.map +3 -3
- package/dist/src/radix/index.js +2 -2
- package/dist/src/radix/index.js.map +3 -3
- package/dist/src/ripple/index.cjs +2 -2
- package/dist/src/ripple/index.cjs.map +3 -3
- package/dist/src/ripple/index.js +2 -2
- package/dist/src/ripple/index.js.map +3 -3
- package/dist/src/solana/index.cjs +2 -2
- package/dist/src/solana/index.cjs.map +3 -3
- package/dist/src/solana/index.js +2 -2
- package/dist/src/solana/index.js.map +3 -3
- package/dist/src/substrate/index.cjs +2 -2
- package/dist/src/substrate/index.cjs.map +4 -4
- package/dist/src/substrate/index.js +2 -2
- package/dist/src/substrate/index.js.map +4 -4
- package/dist/src/sui/index.cjs +2 -2
- package/dist/src/sui/index.cjs.map +3 -3
- package/dist/src/sui/index.js +2 -2
- package/dist/src/sui/index.js.map +3 -3
- package/dist/src/ton/index.cjs +2 -2
- package/dist/src/ton/index.cjs.map +3 -3
- package/dist/src/ton/index.js +2 -2
- package/dist/src/ton/index.js.map +3 -3
- package/dist/src/tron/index.cjs +2 -2
- package/dist/src/tron/index.cjs.map +4 -4
- package/dist/src/tron/index.js +2 -2
- package/dist/src/tron/index.js.map +4 -4
- package/dist/src/utxo/index.cjs +3 -3
- package/dist/src/utxo/index.cjs.map +11 -11
- package/dist/src/utxo/index.js +3 -3
- package/dist/src/utxo/index.js.map +11 -11
- package/dist/types/cardano/toolbox.d.ts +5 -0
- package/dist/types/cardano/toolbox.d.ts.map +1 -1
- package/dist/types/cosmos/thorchainUtils/addressFormat.d.ts +5 -0
- package/dist/types/cosmos/thorchainUtils/addressFormat.d.ts.map +1 -1
- package/dist/types/cosmos/thorchainUtils/messages.d.ts +5 -0
- package/dist/types/cosmos/thorchainUtils/messages.d.ts.map +1 -1
- package/dist/types/cosmos/toolbox/cosmos.d.ts +5 -0
- package/dist/types/cosmos/toolbox/cosmos.d.ts.map +1 -1
- package/dist/types/cosmos/toolbox/index.d.ts +5 -0
- package/dist/types/cosmos/toolbox/index.d.ts.map +1 -1
- package/dist/types/cosmos/toolbox/thorchain.d.ts +5 -0
- package/dist/types/cosmos/toolbox/thorchain.d.ts.map +1 -1
- package/dist/types/cosmos/util.d.ts +5 -0
- package/dist/types/cosmos/util.d.ts.map +1 -1
- package/dist/types/evm/helpers.d.ts +1 -1
- package/dist/types/evm/helpers.d.ts.map +1 -1
- package/dist/types/evm/toolbox/baseEVMToolbox.d.ts +7 -0
- package/dist/types/evm/toolbox/baseEVMToolbox.d.ts.map +1 -1
- package/dist/types/evm/toolbox/evm.d.ts +38 -38
- package/dist/types/evm/toolbox/evm.d.ts.map +1 -1
- package/dist/types/evm/toolbox/op.d.ts +7 -14
- package/dist/types/evm/toolbox/op.d.ts.map +1 -1
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/near/helpers/core.d.ts +5 -0
- package/dist/types/near/helpers/core.d.ts.map +1 -1
- package/dist/types/near/toolbox.d.ts +5 -0
- package/dist/types/near/toolbox.d.ts.map +1 -1
- package/dist/types/radix/index.d.ts +5 -0
- package/dist/types/radix/index.d.ts.map +1 -1
- package/dist/types/ripple/index.d.ts +5 -0
- package/dist/types/ripple/index.d.ts.map +1 -1
- package/dist/types/solana/toolbox.d.ts +5 -0
- package/dist/types/solana/toolbox.d.ts.map +1 -1
- package/dist/types/substrate/substrate.d.ts +5 -0
- package/dist/types/substrate/substrate.d.ts.map +1 -1
- package/dist/types/sui/toolbox.d.ts +5 -0
- package/dist/types/sui/toolbox.d.ts.map +1 -1
- package/dist/types/ton/toolbox.d.ts +5 -0
- package/dist/types/ton/toolbox.d.ts.map +1 -1
- package/dist/types/tron/helpers/trongrid.d.ts +5 -0
- package/dist/types/tron/helpers/trongrid.d.ts.map +1 -1
- package/dist/types/tron/toolbox.d.ts +5 -0
- package/dist/types/tron/toolbox.d.ts.map +1 -1
- package/dist/types/utils.d.ts.map +1 -1
- package/dist/types/utxo/helpers/api.d.ts +5 -0
- package/dist/types/utxo/helpers/api.d.ts.map +1 -1
- package/dist/types/utxo/helpers/bchaddrjs.d.ts +5 -0
- package/dist/types/utxo/helpers/bchaddrjs.d.ts.map +1 -1
- package/dist/types/utxo/helpers/coinselect.d.ts +5 -0
- package/dist/types/utxo/helpers/coinselect.d.ts.map +1 -1
- package/dist/types/utxo/helpers/txSize.d.ts +5 -0
- package/dist/types/utxo/helpers/txSize.d.ts.map +1 -1
- package/dist/types/utxo/toolbox/bitcoinCash.d.ts +5 -0
- package/dist/types/utxo/toolbox/bitcoinCash.d.ts.map +1 -1
- package/dist/types/utxo/toolbox/index.d.ts +5 -0
- package/dist/types/utxo/toolbox/index.d.ts.map +1 -1
- package/dist/types/utxo/toolbox/utxo.d.ts +5 -0
- package/dist/types/utxo/toolbox/utxo.d.ts.map +1 -1
- package/dist/types/utxo/toolbox/zcash.d.ts +6 -1
- package/dist/types/utxo/toolbox/zcash.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/cardano/toolbox.ts +12 -6
- package/src/cosmos/__tests__/toolbox.test.ts +8 -4
- package/src/cosmos/thorchainUtils/addressFormat.ts +8 -2
- package/src/cosmos/thorchainUtils/messages.ts +8 -2
- package/src/cosmos/toolbox/cosmos.ts +11 -5
- package/src/cosmos/toolbox/index.ts +8 -2
- package/src/cosmos/toolbox/thorchain.ts +9 -3
- package/src/cosmos/util.ts +9 -3
- package/src/evm/helpers.ts +7 -9
- package/src/evm/toolbox/baseEVMToolbox.ts +34 -26
- package/src/evm/toolbox/evm.ts +2 -3
- package/src/evm/toolbox/op.ts +10 -17
- package/src/index.ts +8 -2
- package/src/near/helpers/core.ts +8 -2
- package/src/near/toolbox.ts +21 -15
- package/src/radix/index.ts +15 -3
- package/src/ripple/index.ts +15 -12
- package/src/solana/toolbox.ts +16 -16
- package/src/substrate/balance.ts +2 -2
- package/src/substrate/substrate.ts +17 -11
- package/src/sui/__tests__/toolbox.test.ts +9 -5
- package/src/sui/toolbox.ts +18 -11
- package/src/ton/__tests__/toolbox.test.ts +9 -5
- package/src/ton/toolbox.ts +14 -8
- package/src/tron/helpers/trongrid.ts +8 -2
- package/src/tron/toolbox.ts +21 -15
- package/src/utils.ts +8 -1
- package/src/utxo/helpers/api.ts +15 -9
- package/src/utxo/helpers/bchaddrjs.ts +9 -3
- package/src/utxo/helpers/coinselect.ts +8 -2
- package/src/utxo/helpers/txSize.ts +8 -2
- package/src/utxo/toolbox/bitcoinCash.ts +13 -7
- package/src/utxo/toolbox/index.ts +8 -2
- package/src/utxo/toolbox/utxo.ts +16 -10
- package/src/utxo/toolbox/zcash.ts +24 -21
package/dist/src/utxo/index.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var zZ=Object.create;var{getPrototypeOf:CZ,defineProperty:r,getOwnPropertyNames:SX,getOwnPropertyDescriptor:IZ}=Object,xX=Object.prototype.hasOwnProperty;var m=(X,Z,B)=>{B=X!=null?zZ(CZ(X)):{};let G=Z||!X||!X.__esModule?r(B,"default",{value:X,enumerable:!0}):B;for(let $ of SX(X))if(!xX.call(G,$))r(G,$,{get:()=>X[$],enumerable:!0});return G},KX=new WeakMap,MZ=(X)=>{var Z=KX.get(X),B;if(Z)return Z;if(Z=r({},"__esModule",{value:!0}),X&&typeof X==="object"||typeof X==="function")SX(X).map((G)=>!xX.call(Z,G)&&r(Z,G,{get:()=>X[G],enumerable:!(B=IZ(X,G))||B.enumerable}));return KX.set(X,Z),Z};var _Z=(X,Z)=>{for(var B in Z)r(X,B,{get:Z[B],enumerable:!0,configurable:!0,set:(G)=>Z[B]=()=>G})};var N=(X,Z)=>()=>(X&&(Z=X(X=0)),Z);function mX(){function X(){let Z=Date.now(),B=zX||Z;return zX=B,Z>zX?Z:B+1}return HZ+X().toString(36)}function lX(X){return async function(B,G=!0){let $=await gX.SwapKitApi.getChainBalance({address:B,chain:X,scamFilter:G}),{baseDecimal:Q}=BX.getChainConfig(X);return $.map(({identifier:J,value:j,decimal:q})=>{return new BX.AssetValue({decimal:q||Q,identifier:J,value:j})})}}var BX,gX,HZ,zX=0;var CX=N(()=>{BX=require("@uswap/helpers"),gX=require("@uswap/helpers/api"),HZ=typeof process<"u"&&process.pid?process.pid.toString(36):""});async function vZ({chain:X,txHash:Z}){let B=`${GX(X)}/push/transaction`,G=JSON.stringify({data:Z});try{let $=await U.RequestClient.post(B,{body:G,headers:{"Content-Type":"application/json"}});if($.context.code!==200)throw new U.SwapKitError("toolbox_utxo_broadcast_failed",{error:$.context.error||"Transaction broadcast failed"});return $.data?.transaction_hash||Z}catch($){let Q=await U.getRPCUrl(X);if(Q){let J=JSON.stringify({id:mX(),jsonrpc:"2.0",method:"sendrawtransaction",params:[Z]}),j=await U.RequestClient.post(Q,{body:J,headers:{"Content-Type":"application/json"}});if(j.error)throw new U.SwapKitError("toolbox_utxo_broadcast_failed",{error:j.error?.message});if(j.result.includes('"code":-26'))throw new U.SwapKitError("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return j.result}throw $}}function GX(X){return`https://api.blockchair.com/${NZ(X)}`}function hX(X){switch(X){case U.Chain.Bitcoin:return 5;case U.Chain.Dogecoin:return 1e4;case U.Chain.Litecoin:return 1;case U.Chain.Zcash:return 1;default:return 2}}function NZ(X){switch(X){case U.Chain.BitcoinCash:return"bitcoin-cash";case U.Chain.Litecoin:return"litecoin";case U.Chain.Dash:return"dash";case U.Chain.Dogecoin:return"dogecoin";case U.Chain.Zcash:return"zcash";case U.Chain.Polkadot:return"polkadot";default:return"bitcoin"}}async function OZ(X){try{let{feePerKb:Z}=await U.RequestClient.get(`https://app.bitgo.com/api/v2/${X.toLowerCase()}/tx/fee`),B=Z/1000;return Math.max(B,hX(X))}catch{return hX(X)}}async function IX(X,Z){let B=await U.RequestClient.get(`${X}${Z?`${X.includes("?")?"&":"?"}key=${Z}`:""}`);if(!B||B.context.code!==200)throw new U.SwapKitError("toolbox_utxo_api_error",{error:`Failed to query ${X}`});return B.data}async function nX({address:X,chain:Z,apiKey:B}){if(!X)throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await IX(`${GX(Z)}/dashboards/address/${X}?transaction_details=true`,B))[X]}catch{return{address:{balance:0,transaction_count:0},utxo:[]}}}async function yZ({address:X,chain:Z,apiKey:B}){return(await nX({address:X,apiKey:B,chain:Z}))?.address.balance||0}async function uX({chain:X,apiKey:Z,txHash:B}){if(!B)throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await IX(`${GX(X)}/raw/transaction/${B}`,Z))?.[B]?.raw_transaction||""}catch(G){let $=G instanceof Error?G.message:String(G);return console.error(`Failed to fetch raw transaction: ${$}`),""}}async function kZ({chain:X,address:Z,apiKey:B,offset:G=0,limit:$=30}){return(await IX(`${GX(X)}/outputs?q=recipient(${Z}),is_spent(false),value(..2000000000000000)&s=value(desc)&fields=is_spent,transaction_hash,index,value,script_hex,block_id,spending_signature_hex&limit=${$}&offset=${G}`,B)).map(({is_spent:q,script_hex:W,block_id:T,transaction_hash:Y,index:z,value:D,spending_signature_hex:C})=>({hash:Y,index:z,is_confirmed:T!==-1,is_spent:q,script_hex:W,txHex:C,value:D}))}function FZ(X){return X.reduce((Z,B)=>Z+B.value,0)}function cX(X,Z){let B=[...X].sort((G,$)=>$.value-G.value);if(Z){let G=[],$=0;for(let Q of B)if(G.push(Q),$+=Q.value,$>=Z)break;return G}return B}async function rX({chain:X,address:Z,apiKey:B,targetValue:G,accumulativeValue:$=0,offset:Q=0,limit:J=30}){if(!Z)throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:"Address is required"});try{let j=await kZ({address:Z,apiKey:B,chain:X,limit:J,offset:Q,targetValue:G}),W=j.length<J,T=j.filter(({is_spent:M})=>!M),Y=FZ(T),z=$+Y,D=G&&z>=G;if(W||D)return cX(T,G);let C=await rX({accumulativeValue:z,address:Z,apiKey:B,chain:X,limit:J,offset:Q+J,targetValue:G}),H=[...T,...C];return cX(H,G)}catch(j){let q=j instanceof Error?j.message:String(j);return console.error(`Failed to fetch unspent UTXOs: ${q}`),[]}}async function AZ({address:X,chain:Z,apiKey:B,fetchTxHex:G=!0,targetValue:$}){let Q=await rX({address:X,apiKey:B,chain:Z,targetValue:$}),J=[];for(let{hash:j,index:q,script_hex:W,value:T}of Q){let Y;if(G)Y=await uX({apiKey:B,chain:Z,txHash:j});J.push({address:X,hash:j,index:q,txHex:Y,value:T,witnessUtxo:{script:Buffer.from(W,"hex"),value:T}})}return J}function v(X){let Z=U.SKConfig.get("apiKeys").blockchair||"";return U.warnOnce({condition:!Z,id:"no_blockchair_api_key_warning",warning:"No Blockchair API key found. Functionality will be limited."}),{broadcastTx:(B)=>vZ({chain:X,txHash:B}),getAddressData:(B)=>nX({address:B,apiKey:Z,chain:X}),getBalance:(B)=>yZ({address:B,apiKey:Z,chain:X}),getRawTx:(B)=>uX({apiKey:Z,chain:X,txHash:B}),getSuggestedTxFee:()=>OZ(X),getUtxos:(B)=>AZ({...B,apiKey:Z,chain:X})}}function EZ(X){return X}function k(){return function(Z){switch(Z){case U.Chain.Bitcoin:return oX.networks.bitcoin;case U.Chain.BitcoinCash:return l.default.bitcoincash.main.toBitcoinJS();case U.Chain.Dash:return l.default.dash.main.toBitcoinJS();case U.Chain.Litecoin:return l.default.litecoin.main.toBitcoinJS();case U.Chain.Dogecoin:{let B={private:70615956,public:70617039},G=l.default.dogecoin.test;return G.versions.bip32=B,l.default.dogecoin.main.toBitcoinJS()}case U.Chain.Zcash:return pX.networks.zcash;default:throw new U.SwapKitError("toolbox_utxo_not_supported",{chain:Z})}}}var pX,U,oX,l;var dX=N(()=>{CX();pX=require("@bitgo/utxo-lib"),U=require("@uswap/helpers"),oX=require("bitcoinjs-lib"),l=m(require("coininfo"))});function NX(X){try{return JX(X),!0}catch{return!1}}function OX(X){return JX(X)?.network}function h(X){let Z=JX(X);if(Z?.format==="legacy")return X;return wZ(Z)}function d(X){let Z=JX(X);return PZ(Z)}function JX(X){try{let Z=fZ(X);if(Z)return Z}catch{}try{let Z=RZ(X);if(Z)return Z}catch{}throw new MX.SwapKitError("toolbox_utxo_invalid_address",{address:X})}function fZ(X){try{let Z=_X.default.decode(X);if(Z.length!==21)throw new MX.SwapKitError("toolbox_utxo_invalid_address",{address:X});let B=Z[0],G=Array.prototype.slice.call(Z,1);switch(B){case K.legacy.mainnet.p2pkh:return{format:"legacy",hash:G,network:"mainnet",type:"p2pkh"};case K.legacy.mainnet.p2sh:return{format:"legacy",hash:G,network:"mainnet",type:"p2sh"};case K.legacy.testnet.p2pkh:return{format:"legacy",hash:G,network:"testnet",type:"p2pkh"};case K.legacy.testnet.p2sh:return{format:"legacy",hash:G,network:"testnet",type:"p2sh"};case K.bitpay.mainnet.p2pkh:return{format:"bitpay",hash:G,network:"mainnet",type:"p2pkh"};case K.bitpay.mainnet.p2sh:return{format:"bitpay",hash:G,network:"mainnet",type:"p2sh"};default:return}}catch{return}}function RZ(X){if(X.indexOf(":")!==-1)try{return iX(X)}catch{}else{let Z=["bitcoincash","bchtest","bchreg"];for(let B of Z)try{return iX(`${B}:${X}`)}catch{}}return}function iX(X){try{let{hash:Z,prefix:B,type:G}=HX.default.decode(X);return{format:"cashaddr",hash:Array.prototype.slice.call(Z,0),network:B==="bitcoincash"?"mainnet":"testnet",type:G==="P2PKH"?"p2pkh":"p2sh"}}catch{return}}function wZ(X){let Z=K.legacy[X.network][X.type],B=Buffer.alloc(1+X.hash.length);return B[0]=Z,B.set(X.hash,1),_X.default.encode(B)}function PZ(X){let Z=X.network==="mainnet"?"bitcoincash":"bchtest",B=X.type==="p2pkh"?"P2PKH":"P2SH",G=new Uint8Array(X.hash);return HX.default.encode(Z,B,G)}var MX,_X,HX,vX,K;var sX=N(()=>{MX=require("@uswap/helpers"),_X=m(require("bs58check")),HX=m(require("cashaddrjs"));((B)=>{B.Mainnet="mainnet";B.Testnet="testnet"})(vX||={});K={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}}});function F(X){let Z=Buffer.from(X,"utf8");return jX.script.compile([jX.opcodes.OP_RETURN,Z])}var aX,jX,VZ=1000,qX=10,tX=10,bZ=41,KZ=107,WX,QX,$X,i=(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 aX.SwapKitError("toolbox_utxo_invalid_address",{address:X})},c=({inputs:X,outputs:Z,feeRate:B})=>{let G=X[0]&&"address"in X[0]&&X[0].address?i(X[0].address):"P2PKH",$=X.filter((J)=>J.value>=QX["type"in J?J.type:"P2PKH"]*Math.ceil(B)).reduce((J,j)=>J+P(j),0),Q=Z?.reduce((J,j)=>J+s(j),0)||$X[G];return qX+$+Q},P=(X)=>{if("type"in X)return QX[X.type];if("address"in X&&X.address)return QX[i(X.address)];return bZ+KZ},s=(X,Z)=>{if(X?.script)return tX+X.script.length+(X.script.length>=74?2:1);if(Z)return $X[Z];return $X.P2PKH};var yX=N(()=>{aX=require("@uswap/helpers"),jX=require("bitcoinjs-lib");((B)=>{B.P2PKH="P2PKH";B.P2WPKH="P2WPKH"})(WX||={});QX={["P2PKH"]:148,["P2WPKH"]:68},$X={["P2PKH"]:34,["P2WPKH"]:31}});function LX(X){switch(X){case A.Chain.Bitcoin:case A.Chain.BitcoinCash:return 550;case A.Chain.Dash:case A.Chain.Litecoin:return 5500;case A.Chain.Dogecoin:return 1e5;case A.Chain.Zcash:return 546;default:throw new A.SwapKitError("toolbox_utxo_not_supported",{chain:X})}}function E({inputs:X,outputs:Z,feeRate:B=1,chain:G=A.Chain.Bitcoin,changeAddress:$=""}){let Q=Math.ceil(B),J=X[0]&&"address"in X[0]&&X[0].address?i(X[0].address):"P2PKH",j=X.filter((D)=>P(D)*Q<=D.value),q=qX+Z.reduce((D,C)=>D+s(C,J),0),W=Z.reduce((D,C)=>D+C.value,0),T=q*Q,Y=0,z=[];for(let D of j){let C=P(D),H=Q*C;T+=H,Y+=D.value,z.push(D);let M=T+W;if(Y<M)continue;let b=Y-M,R=Q*s({address:"",value:0},J);if(b>R){let VX=R+T,bX=Y-(W+VX);if(bX>Math.max(P({})*Q,LX(G)))return{fee:VX,inputs:z,outputs:Z.concat({address:$,value:bX})}}return{fee:T,inputs:z,outputs:Z}}return{fee:Q*c({feeRate:Q,inputs:X,outputs:Z})}}var A;var eX=N(()=>{yX();A=require("@uswap/helpers")});var p=N(()=>{dX();sX();eX();yX()});function S(X){return X.replace(/(bchtest:|bitcoincash:)/,"")}function V(X){let Z=S(X);return NX(Z)&&OX(Z)==="mainnet"}function o(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 Z=TX.networks.zcash;try{return TX.address.toOutputScript(X,Z),!0}catch{let B=XZ.default.decode(X);if(B.length<21)return!1;let G=B[0];return G===Z.pubKeyHash||G===Z.scriptHash}}catch{return!1}}var TX,XZ;var a=N(()=>{p();TX=require("@bitgo/utxo-lib"),XZ=m(require("bs58check"))});function GZ({inputs:X,outputs:Z,chain:B,psbt:G,sender:$,compiledMemo:Q}){for(let J of X){let j=!!J.witnessUtxo&&!t.includes(B)&&{witnessUtxo:J.witnessUtxo},q=t.includes(B)&&{nonWitnessUtxo:J.txHex?Buffer.from(J.txHex,"hex"):void 0};G.addInput({hash:J.hash,index:J.index,...j,...q})}for(let J of Z){let j="address"in J&&J.address?J.address:$,q=J.script;if(q&&!Q)continue;let W=q?{script:Q,value:0}:{address:j,value:J.value};f.initEccLib(YX.default),G.addOutput(W)}return{inputs:X,psbt:G}}async function JZ({assetValue:X,recipient:Z,memo:B,feeRate:G,sender:$,fetchTxHex:Q=!1}){let J=X.chain,j=B?await F(B):null,q=await jZ({assetValue:X,fetchTxHex:Q,memo:B,recipient:Z,sender:$}),{inputs:W,outputs:T}=E({...q,chain:J,feeRate:G});if(!(W&&T))throw new L.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let Y=await k(),z=new f.Psbt({network:Y(J)});if(J===L.Chain.Dogecoin)z.setMaximumFeeRate(650000000);let{psbt:D,inputs:C}=await GZ({chain:J,compiledMemo:j,inputs:W,outputs:T,psbt:z,sender:$});return{inputs:C,psbt:D,utxos:q.inputs}}async function QZ(){let X=await k();return function({address:B,chain:G}){if(G===L.Chain.BitcoinCash)return V(B);if(G===L.Chain.Zcash)return o(B);try{return f.initEccLib(YX.default),f.address.toOutputScript(B,X(G)),!0}catch{return!1}}}async function SZ({chain:X,phrase:Z,derivationPath:B}){let G=(await e(X))({derivationPath:B,phrase:Z});async function $(J){return await J.signAllInputs(G),J}function Q(){return FX(X)(G)}return{getAddress:Q,signTransaction:$}}async function x({chain:X,...Z}){let B="phrase"in Z?Z.phrase:void 0,G="index"in Z?Z.index||0:0,$=L.derivationPathToString("derivationPath"in Z&&Z.derivationPath?Z.derivationPath:L.updateDerivationPath(L.NetworkDerivationPath[X],{index:G})),Q=B?await SZ({chain:X,derivationPath:$,phrase:B}):("signer"in Z)?Z.signer:void 0;function J(){return Promise.resolve(Q?.getAddress())}let j=await QZ(),q=await e(X);return{accumulative:E,broadcastTx:(W)=>v(X).broadcastTx(W),calculateTxSize:c,createKeysForPath:q,createTransaction:JZ,estimateMaxSendableAmount:xZ(X),estimateTransactionFee:gZ(X),getAddress:J,getAddressFromKeys:FX(X),getBalance:lX(X),getFeeRates:()=>XX(X),getInputsOutputsFee:$Z,getPrivateKeyFromMnemonic:(W)=>{return q(W).toWIF()},transfer:mZ(Q),validateAddress:(W)=>j({address:W,chain:X})}}async function $Z({assetValue:X,feeOptionKey:Z=L.FeeOption.Fast,feeRate:B,memo:G,sender:$,recipient:Q}){let J=X.chain,j=await jZ({assetValue:X,memo:G,recipient:Q,sender:$}),q=B?Math.floor(B):(await XX(J))[Z];return E({...j,chain:J,feeRate:q})}function xZ(X){return async function({from:B,memo:G,feeRate:$,feeOptionKey:Q=L.FeeOption.Fast,recipients:J=1}){let j=await v(X).getAddressData(B),q=$?Math.ceil($):(await XX(X))[Q],W=j?.utxo.map((C)=>({...C,hash:"",type:"P2PKH"})).filter((C)=>C.value>Math.max(LX(X),P(C)*q));if(!W?.length)return L.AssetValue.from({chain:X});let T=L.AssetValue.from({chain:X,value:W.reduce((C,H)=>C+H.value,0)}),Y=typeof J==="number"?Array.from({length:J},()=>({address:B,value:0})):J;if(G){let C=await F(G);Y.push({address:B,script:C,value:0})}let D=c({feeRate:q,inputs:W,outputs:Y})*q;return T.sub(D)}}function gZ(X){return async(Z)=>{let B=await $Z(Z);return L.AssetValue.from({chain:X,value:L.SwapKitNumber.fromBigInt(BigInt(B.fee),8).getValue("string")})}}async function e(X){let Z=await k();switch(X){case L.Chain.BitcoinCash:return function({phrase:G,derivationPath:$=`${L.DerivationPath.BCH}/0`,wif:Q}){let J=Z(X);if(Q)return DX.ECPair.fromWIF(Q,J);if(!G)throw new L.SwapKitError("toolbox_utxo_invalid_params",{error:"No phrase provided"});return DX.HDNode.fromSeedBuffer(Buffer.from(kX.mnemonicToSeedSync(G)),J).derivePath($).keyPair};case L.Chain.Bitcoin:case L.Chain.Dogecoin:case L.Chain.Litecoin:case L.Chain.Zcash:case L.Chain.Dash:return function({phrase:G,wif:$,derivationPath:Q}){if(!($||G))throw new L.SwapKitError("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let J=BZ.ECPairFactory(YX.default),j=Z(X);if($)return J.fromWIF($,j);let q=kX.mnemonicToSeedSync(G),W=ZZ.HDKey.fromMasterSeed(q,j).derive(Q);if(!W.privateKey)throw new L.SwapKitError("toolbox_utxo_invalid_params",{error:"Could not get private key from phrase"});return J.fromPrivateKey(Buffer.from(W.privateKey),{network:j})};default:throw new L.SwapKitError("toolbox_utxo_not_supported",{chain:X})}}function FX(X){let Z=k();return function(G){if(!G)throw new L.SwapKitError("toolbox_utxo_invalid_params",{error:"Keys must be provided"});let $=t.includes(X)?f.payments.p2pkh:f.payments.p2wpkh,{address:Q}=$({network:Z(X),pubkey:G.publicKey});if(!Q)throw new L.SwapKitError("toolbox_utxo_invalid_address",{error:"Address not defined"});return Q}}function mZ(X){return async function({memo:B,recipient:G,feeOptionKey:$,feeRate:Q,assetValue:J}){let j=await X?.getAddress(),q=J.chain;if(!(X&&j))throw new L.SwapKitError("toolbox_utxo_no_signer");if(!G)throw new L.SwapKitError("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let W=Q||(await XX(q))[$||L.FeeOption.Fast],{psbt:T}=await JZ({assetValue:J,feeRate:W,memo:B,recipient:G,sender:j}),Y=await X.signTransaction(T);return Y.finalizeAllInputs(),v(q).broadcastTx(Y.extractTransaction().toHex())}}async function XX(X){let Z=await v(X).getSuggestedTxFee();return{[L.FeeOption.Average]:Z,[L.FeeOption.Fast]:L.applyFeeMultiplier(Z,L.FeeOption.Fast),[L.FeeOption.Fastest]:L.applyFeeMultiplier(Z,L.FeeOption.Fastest)}}async function jZ({assetValue:X,recipient:Z,memo:B,sender:G,fetchTxHex:$=!1}){let Q=X.chain,J=(await XX(Q))[L.FeeOption.Fastest],j=$||t.includes(Q),q=X.getBaseValue("number"),W=Math.ceil(q+J*5000);return{inputs:await v(Q).getUtxos({address:G,fetchTxHex:j,targetValue:W}),outputs:[{address:Z,value:q},...B?[{address:"",script:await F(B),value:0}]:[]]}}var YX,DX,ZZ,kX,L,f,BZ,t;var ZX=N(()=>{CX();p();a();YX=m(require("@bitcoinerlab/secp256k1")),DX=require("@psf/bitcoincashjs-lib"),ZZ=require("@scure/bip32"),kX=require("@scure/bip39"),L=require("@uswap/helpers"),f=require("bitcoinjs-lib"),BZ=require("ecpair"),t=[L.Chain.Dash,L.Chain.Dogecoin,L.Chain.Zcash,L.Chain.BitcoinCash]});function g(X){return S(d(X))}function lZ(X){function Z({builder:G,utxos:$}){return $.forEach((Q,J)=>{G.sign(J,X,void 0,65,Q.witnessUtxo?.value)}),G.build()}return{getAddress:()=>{let G=X.getAddress(0);return Promise.resolve(g(G))},signTransaction:Z}}async function AX(X){let Z="phrase"in X?X.phrase:void 0,B="index"in X?X.index||0:0,G=_.derivationPathToString("derivationPath"in X&&X.derivationPath?X.derivationPath:_.updateDerivationPath(_.NetworkDerivationPath[O],{index:B})),$=Z?(await e(O))({derivationPath:G,phrase:Z}):void 0,Q=$?lZ($):("signer"in X)?X.signer:void 0;function J(){return Promise.resolve(Q?.getAddress())}let{getBalance:j,getFeeRates:q,broadcastTx:W,...T}=await x({chain:O});function Y(z,D=!0){return j(S(d(z)))}return{...T,broadcastTx:W,buildTx:cZ,createTransaction:WZ,getAddress:J,getAddressFromKeys:pZ,getBalance:Y,getFeeRates:q,stripPrefix:S,stripToCashAddress:g,transfer:hZ({broadcastTx:W,getFeeRates:q,signer:Q}),validateAddress:V}}async function WZ({assetValue:X,recipient:Z,memo:B,feeRate:G,sender:$}){if(!V(Z))throw new _.SwapKitError("toolbox_utxo_invalid_address",{address:Z});let Q=Math.ceil(X.getBaseValue("number")+G*7500),J=await v(O).getUtxos({address:g($),fetchTxHex:!0,targetValue:Q}),j=B?await F(B):null,q=[];q.push({address:Z,value:X.getBaseValue("number")});let{inputs:W,outputs:T}=E({chain:O,feeRate:G,inputs:J,outputs:q});if(!(W&&T))throw new _.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let Y=await k(),z=new n.TransactionBuilder(Y(O));await Promise.all(W.map(async(D)=>{let C=await v(O).getRawTx(D.hash);z.addInput(n.Transaction.fromBuffer(Buffer.from(C,"hex")),D.index)}));for(let D of T){let C="address"in D&&D.address?D.address:h($),H=await k(),M=n.address.toOutputScript(h(C),H(O));z.addOutput(M,D.value)}if(j)z.addOutput(j,0);return{builder:z,utxos:W}}function hZ({broadcastTx:X,getFeeRates:Z,signer:B}){return async function({recipient:$,assetValue:Q,feeOptionKey:J=_.FeeOption.Fast,...j}){let q=await B?.getAddress();if(!(B&&q))throw new _.SwapKitError("toolbox_utxo_no_signer");if(!$)throw new _.SwapKitError("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let W=j.feeRate||(await Z())[J],{builder:T,utxos:Y}=await WZ({...j,assetValue:Q,feeRate:W,recipient:$,sender:q}),D=(await B.signTransaction({builder:T,utxos:Y})).toHex();return X(D)}}async function cZ({assetValue:X,recipient:Z,memo:B,feeRate:G,sender:$,setSigHashType:Q}){let J=d(Z);if(!V(J))throw new _.SwapKitError("toolbox_utxo_invalid_address",{address:J});let j=Math.ceil(X.getBaseValue("number")+G*7500),q=await v(O).getUtxos({address:g($),fetchTxHex:!1,targetValue:j}),W=Number(G.toFixed(0)),T=B?await F(B):null,Y=[];if(Y.push({address:h(Z),value:X.getBaseValue("number")}),T)Y.push({script:T,value:0});let{inputs:z,outputs:D}=E({chain:O,feeRate:W,inputs:q,outputs:Y});if(!(z&&D))throw new _.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let C=await k(),H=new qZ.Psbt({network:C(O)});for(let{hash:M,index:b,witnessUtxo:R}of z)H.addInput({hash:M,index:b,sighashType:Q?65:void 0,witnessUtxo:R});for(let M of D){let b="address"in M&&M.address?M.address:h($),R=M.script?T?{script:T,value:0}:void 0:{address:b,value:M.value};if(R)H.addOutput(R)}return{inputs:z,psbt:H,utxos:q}}function pZ(X){let Z=X.getAddress(0);return g(Z)}var n,_,qZ,O;var UX=N(()=>{p();ZX();a();n=require("@psf/bitcoincashjs-lib"),_=require("@uswap/helpers"),qZ=require("bitcoinjs-lib"),O=_.Chain.BitcoinCash});function YZ(){return y.networks.zcash}function DZ(){return{bech32:void 0,bip32:{private:76066276,public:76067358},messagePrefix:`\x18ZCash Signed Message:
|
|
2
|
-
`,pubKeyHash:28,scriptHash:28,wif:128}}function
|
|
1
|
+
var IB=Object.create;var{getPrototypeOf:_B,defineProperty:r,getOwnPropertyNames:gX,getOwnPropertyDescriptor:MB}=Object,mX=Object.prototype.hasOwnProperty;var g=(X,B,Z)=>{Z=X!=null?IB(_B(X)):{};let G=B||!X||!X.__esModule?r(Z,"default",{value:X,enumerable:!0}):Z;for(let $ of gX(X))if(!mX.call(G,$))r(G,$,{get:()=>X[$],enumerable:!0});return G},xX=new WeakMap,HB=(X)=>{var B=xX.get(X),Z;if(B)return B;if(B=r({},"__esModule",{value:!0}),X&&typeof X==="object"||typeof X==="function")gX(X).map((G)=>!mX.call(B,G)&&r(B,G,{get:()=>X[G],enumerable:!(Z=MB(X,G))||Z.enumerable}));return xX.set(X,B),B};var vB=(X,B)=>{for(var Z in B)r(X,Z,{get:B[Z],enumerable:!0,configurable:!0,set:(G)=>B[Z]=()=>G})};var y=(X,B)=>()=>(X&&(B=X(X=0)),B);function hX(){function X(){let B=Date.now(),Z=CX||B;return CX=Z,B>CX?B:Z+1}return NB+X().toString(36)}function cX(X){return async function(Z,G=!0){let $=await lX.SwapKitApi.getChainBalance({address:Z,chain:X,scamFilter:G}),{baseDecimal:Q}=d.getChainConfig(X),J=$.map(({identifier:q,value:L,decimal:Y})=>{return new d.AssetValue({decimal:Y||Q,identifier:q,value:L})});if(!J.some((q)=>q.isGasAsset))return[d.AssetValue.from({chain:X}),...J];return J}}var d,lX,NB,CX=0;var IX=y(()=>{d=require("@uswap/helpers"),lX=require("@uswap/helpers/api"),NB=typeof process<"u"&&process.pid?process.pid.toString(36):""});async function yB({chain:X,txHash:B}){let Z=`${GX(X)}/push/transaction`,G=JSON.stringify({data:B});try{let $=await z.RequestClient.post(Z,{body:G,headers:{"Content-Type":"application/json"}});if($.context.code!==200)throw new z.USwapError("toolbox_utxo_broadcast_failed",{error:$.context.error||"Transaction broadcast failed"});return $.data?.transaction_hash||B}catch($){let Q=await z.getRPCUrl(X);if(Q){let J=JSON.stringify({id:hX(),jsonrpc:"2.0",method:"sendrawtransaction",params:[B]}),j=await z.RequestClient.post(Q,{body:J,headers:{"Content-Type":"application/json"}});if(j.error)throw new z.USwapError("toolbox_utxo_broadcast_failed",{error:j.error?.message});if(j.result.includes('"code":-26'))throw new z.USwapError("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return j.result}throw $}}function GX(X){return`https://api.blockchair.com/${OB(X)}`}function pX(X){switch(X){case z.Chain.Bitcoin:return 5;case z.Chain.Dogecoin:return 1e4;case z.Chain.Litecoin:return 1;case z.Chain.Zcash:return 1;default:return 2}}function OB(X){switch(X){case z.Chain.BitcoinCash:return"bitcoin-cash";case z.Chain.Litecoin:return"litecoin";case z.Chain.Dash:return"dash";case z.Chain.Dogecoin:return"dogecoin";case z.Chain.Zcash:return"zcash";case z.Chain.Polkadot:return"polkadot";default:return"bitcoin"}}async function UB(X){try{let{feePerKb:B}=await z.RequestClient.get(`https://app.bitgo.com/api/v2/${X.toLowerCase()}/tx/fee`),Z=B/1000;return Math.max(Z,pX(X))}catch{return pX(X)}}async function _X(X,B){let Z=await z.RequestClient.get(`${X}${B?`${X.includes("?")?"&":"?"}key=${B}`:""}`);if(!Z||Z.context.code!==200)throw new z.USwapError("toolbox_utxo_api_error",{error:`Failed to query ${X}`});return Z.data}async function rX({address:X,chain:B,apiKey:Z}){if(!X)throw new z.USwapError("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await _X(`${GX(B)}/dashboards/address/${X}?transaction_details=true`,Z))[X]}catch{return{address:{balance:0,transaction_count:0},utxo:[]}}}async function KB({address:X,chain:B,apiKey:Z}){return(await rX({address:X,apiKey:Z,chain:B}))?.address.balance||0}async function dX({chain:X,apiKey:B,txHash:Z}){if(!Z)throw new z.USwapError("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await _X(`${GX(X)}/raw/transaction/${Z}`,B))?.[Z]?.raw_transaction||""}catch(G){let $=G instanceof Error?G.message:String(G);return console.error(`Failed to fetch raw transaction: ${$}`),""}}async function kB({chain:X,address:B,apiKey:Z,offset:G=0,limit:$=30}){return(await _X(`${GX(X)}/outputs?q=recipient(${B}),is_spent(false),value(..2000000000000000)&s=value(desc)&fields=is_spent,transaction_hash,index,value,script_hex,block_id,spending_signature_hex&limit=${$}&offset=${G}`,Z)).map(({is_spent:q,script_hex:L,block_id:Y,transaction_hash:T,index:C,value:D,spending_signature_hex:I})=>({hash:T,index:C,is_confirmed:Y!==-1,is_spent:q,script_hex:L,txHex:I,value:D}))}function AB(X){return X.reduce((B,Z)=>B+Z.value,0)}function oX(X,B){let Z=[...X].sort((G,$)=>$.value-G.value);if(B){let G=[],$=0;for(let Q of Z)if(G.push(Q),$+=Q.value,$>=B)break;return G}return Z}async function iX({chain:X,address:B,apiKey:Z,targetValue:G,accumulativeValue:$=0,offset:Q=0,limit:J=30}){if(!B)throw new z.USwapError("toolbox_utxo_invalid_params",{error:"Address is required"});try{let j=await kB({address:B,apiKey:Z,chain:X,limit:J,offset:Q,targetValue:G}),L=j.length<J,Y=j.filter(({is_spent:H})=>!H),T=AB(Y),C=$+T,D=G&&C>=G;if(L||D)return oX(Y,G);let I=await iX({accumulativeValue:C,address:B,apiKey:Z,chain:X,limit:J,offset:Q+J,targetValue:G}),v=[...Y,...I];return oX(v,G)}catch(j){let q=j instanceof Error?j.message:String(j);return console.error(`Failed to fetch unspent UTXOs: ${q}`),[]}}async function FB({address:X,chain:B,apiKey:Z,fetchTxHex:G=!0,targetValue:$}){let Q=await iX({address:X,apiKey:Z,chain:B,targetValue:$}),J=[];for(let{hash:j,index:q,script_hex:L,value:Y}of Q){let T;if(G)T=await dX({apiKey:Z,chain:B,txHash:j});J.push({address:X,hash:j,index:q,txHex:T,value:Y,witnessUtxo:{script:Buffer.from(L,"hex"),value:Y}})}return J}function N(X){let B=z.SKConfig.get("apiKeys").blockchair||"";return z.warnOnce({condition:!B,id:"no_blockchair_api_key_warning",warning:"No Blockchair API key found. Functionality will be limited."}),{broadcastTx:(Z)=>yB({chain:X,txHash:Z}),getAddressData:(Z)=>rX({address:Z,apiKey:B,chain:X}),getBalance:(Z)=>KB({address:Z,apiKey:B,chain:X}),getRawTx:(Z)=>dX({apiKey:B,chain:X,txHash:Z}),getSuggestedTxFee:()=>UB(X),getUtxos:(Z)=>FB({...Z,apiKey:B,chain:X})}}function EB(X){return X}function K(){return function(B){switch(B){case z.Chain.Bitcoin:return uX.networks.bitcoin;case z.Chain.BitcoinCash:return m.default.bitcoincash.main.toBitcoinJS();case z.Chain.Dash:return m.default.dash.main.toBitcoinJS();case z.Chain.Litecoin:return m.default.litecoin.main.toBitcoinJS();case z.Chain.Dogecoin:{let Z={private:70615956,public:70617039},G=m.default.dogecoin.test;return G.versions.bip32=Z,m.default.dogecoin.main.toBitcoinJS()}case z.Chain.Zcash:return nX.networks.zcash;default:throw new z.USwapError("toolbox_utxo_not_supported",{chain:B})}}}var nX,z,uX,m;var sX=y(()=>{IX();nX=require("@bitgo/utxo-lib"),z=require("@uswap/helpers"),uX=require("bitcoinjs-lib"),m=g(require("coininfo"))});function yX(X){try{return JX(X),!0}catch{return!1}}function OX(X){return JX(X)?.network}function l(X){let B=JX(X);if(B?.format==="legacy")return X;return wB(B)}function i(X){let B=JX(X);return PB(B)}function JX(X){try{let B=fB(X);if(B)return B}catch{}try{let B=RB(X);if(B)return B}catch{}throw new MX.USwapError("toolbox_utxo_invalid_address",{address:X})}function fB(X){try{let B=HX.default.decode(X);if(B.length!==21)throw new MX.USwapError("toolbox_utxo_invalid_address",{address:X});let Z=B[0],G=Array.prototype.slice.call(B,1);switch(Z){case S.legacy.mainnet.p2pkh:return{format:"legacy",hash:G,network:"mainnet",type:"p2pkh"};case S.legacy.mainnet.p2sh:return{format:"legacy",hash:G,network:"mainnet",type:"p2sh"};case S.legacy.testnet.p2pkh:return{format:"legacy",hash:G,network:"testnet",type:"p2pkh"};case S.legacy.testnet.p2sh:return{format:"legacy",hash:G,network:"testnet",type:"p2sh"};case S.bitpay.mainnet.p2pkh:return{format:"bitpay",hash:G,network:"mainnet",type:"p2pkh"};case S.bitpay.mainnet.p2sh:return{format:"bitpay",hash:G,network:"mainnet",type:"p2sh"};default:return}}catch{return}}function RB(X){if(X.indexOf(":")!==-1)try{return aX(X)}catch{}else{let B=["bitcoincash","bchtest","bchreg"];for(let Z of B)try{return aX(`${Z}:${X}`)}catch{}}return}function aX(X){try{let{hash:B,prefix:Z,type:G}=vX.default.decode(X);return{format:"cashaddr",hash:Array.prototype.slice.call(B,0),network:Z==="bitcoincash"?"mainnet":"testnet",type:G==="P2PKH"?"p2pkh":"p2sh"}}catch{return}}function wB(X){let B=S.legacy[X.network][X.type],Z=Buffer.alloc(1+X.hash.length);return Z[0]=B,Z.set(X.hash,1),HX.default.encode(Z)}function PB(X){let B=X.network==="mainnet"?"bitcoincash":"bchtest",Z=X.type==="p2pkh"?"P2PKH":"P2SH",G=new Uint8Array(X.hash);return vX.default.encode(B,Z,G)}var MX,HX,vX,NX,S;var tX=y(()=>{MX=require("@uswap/helpers"),HX=g(require("bs58check")),vX=g(require("cashaddrjs"));((Z)=>{Z.Mainnet="mainnet";Z.Testnet="testnet"})(NX||={});S={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}}});function k(X){let B=Buffer.from(X,"utf8");return jX.script.compile([jX.opcodes.OP_RETURN,B])}var eX,jX,SB=1000,qX=10,XB=10,VB=41,bB=107,LX,QX,$X,s=(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 eX.USwapError("toolbox_utxo_invalid_address",{address:X})},h=({inputs:X,outputs:B,feeRate:Z})=>{let G=X[0]&&"address"in X[0]&&X[0].address?s(X[0].address):"P2PKH",$=X.filter((J)=>J.value>=QX["type"in J?J.type:"P2PKH"]*Math.ceil(Z)).reduce((J,j)=>J+R(j),0),Q=B?.reduce((J,j)=>J+a(j),0)||$X[G];return qX+$+Q},R=(X)=>{if("type"in X)return QX[X.type];if("address"in X&&X.address)return QX[s(X.address)];return VB+bB},a=(X,B)=>{if(X?.script)return XB+X.script.length+(X.script.length>=74?2:1);if(B)return $X[B];return $X.P2PKH};var UX=y(()=>{eX=require("@uswap/helpers"),jX=require("bitcoinjs-lib");((Z)=>{Z.P2PKH="P2PKH";Z.P2WPKH="P2WPKH"})(LX||={});QX={["P2PKH"]:148,["P2WPKH"]:68},$X={["P2PKH"]:34,["P2WPKH"]:31}});function WX(X){switch(X){case A.Chain.Bitcoin:case A.Chain.BitcoinCash:return 550;case A.Chain.Dash:case A.Chain.Litecoin:return 5500;case A.Chain.Dogecoin:return 1e5;case A.Chain.Zcash:return 546;default:throw new A.USwapError("toolbox_utxo_not_supported",{chain:X})}}function F({inputs:X,outputs:B,feeRate:Z=1,chain:G=A.Chain.Bitcoin,changeAddress:$=""}){let Q=Math.ceil(Z),J=X[0]&&"address"in X[0]&&X[0].address?s(X[0].address):"P2PKH",j=X.filter((D)=>R(D)*Q<=D.value),q=qX+B.reduce((D,I)=>D+a(I,J),0),L=B.reduce((D,I)=>D+I.value,0),Y=q*Q,T=0,C=[];for(let D of j){let I=R(D),v=Q*I;Y+=v,T+=D.value,C.push(D);let H=Y+L;if(T<H)continue;let u=T-H,P=Q*a({address:"",value:0},J);if(u>P){let VX=P+Y,bX=T-(L+VX);if(bX>Math.max(R({})*Q,WX(G)))return{fee:VX,inputs:C,outputs:B.concat({address:$,value:bX})}}return{fee:Y,inputs:C,outputs:B}}return{fee:Q*h({feeRate:Q,inputs:X,outputs:B})}}var A;var BB=y(()=>{UX();A=require("@uswap/helpers")});var c=y(()=>{sX();tX();BB();UX()});function V(X){return X.replace(/(bchtest:|bitcoincash:)/,"")}function w(X){let B=V(X);return yX(B)&&OX(B)==="mainnet"}function p(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 B=YX.networks.zcash;try{return YX.address.toOutputScript(X,B),!0}catch{let Z=ZB.default.decode(X);if(Z.length<21)return!1;let G=Z[0];return G===B.pubKeyHash||G===B.scriptHash}}catch{return!1}}var YX,ZB;var t=y(()=>{c();YX=require("@bitgo/utxo-lib"),ZB=g(require("bs58check"))});function QB({inputs:X,outputs:B,chain:Z,psbt:G,sender:$,compiledMemo:Q}){for(let J of X){let j=!!J.witnessUtxo&&!e.includes(Z)&&{witnessUtxo:J.witnessUtxo},q=e.includes(Z)&&{nonWitnessUtxo:J.txHex?Buffer.from(J.txHex,"hex"):void 0};G.addInput({hash:J.hash,index:J.index,...j,...q})}for(let J of B){let j="address"in J&&J.address?J.address:$,q=J.script;if(q&&!Q)continue;let L=q?{script:Q,value:0}:{address:j,value:J.value};E.initEccLib(TX.default),G.addOutput(L)}return{inputs:X,psbt:G}}async function $B({assetValue:X,recipient:B,memo:Z,feeRate:G,sender:$,fetchTxHex:Q=!1}){let J=X.chain,j=Z?await k(Z):null,q=await LB({assetValue:X,fetchTxHex:Q,memo:Z,recipient:B,sender:$}),{inputs:L,outputs:Y}=F({...q,chain:J,feeRate:G});if(!(L&&Y))throw new W.USwapError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let T=await K(),C=new E.Psbt({network:T(J)});if(J===W.Chain.Dogecoin)C.setMaximumFeeRate(650000000);let{psbt:D,inputs:I}=await QB({chain:J,compiledMemo:j,inputs:L,outputs:Y,psbt:C,sender:$});return{inputs:I,psbt:D,utxos:q.inputs}}async function jB(){let X=await K();return function({address:Z,chain:G}){if(G===W.Chain.BitcoinCash)return w(Z);if(G===W.Chain.Zcash)return p(Z);try{return E.initEccLib(TX.default),E.address.toOutputScript(Z,X(G)),!0}catch{return!1}}}async function xB({chain:X,phrase:B,derivationPath:Z}){let G=(await XX(X))({derivationPath:Z,phrase:B});async function $(J){return await J.signAllInputs(G),J}function Q(){return kX(X)(G)}return{getAddress:Q,signTransaction:$}}async function b({chain:X,...B}){let Z="phrase"in B?B.phrase:void 0,G="index"in B?B.index||0:0,$=W.derivationPathToString("derivationPath"in B&&B.derivationPath?B.derivationPath:W.updateDerivationPath(W.NetworkDerivationPath[X],{index:G})),Q=Z?await xB({chain:X,derivationPath:$,phrase:Z}):("signer"in B)?B.signer:void 0;function J(){return Promise.resolve(Q?.getAddress())}let j=await jB(),q=await XX(X);return{accumulative:F,broadcastTx:(L)=>N(X).broadcastTx(L),calculateTxSize:h,createKeysForPath:q,createTransaction:$B,estimateMaxSendableAmount:gB(X),estimateTransactionFee:mB(X),getAddress:J,getAddressFromKeys:kX(X),getBalance:cX(X),getFeeRates:()=>BX(X),getInputsOutputsFee:qB,getPrivateKeyFromMnemonic:(L)=>{return q(L).toWIF()},transfer:lB(Q),validateAddress:(L)=>j({address:L,chain:X})}}async function qB({assetValue:X,feeOptionKey:B=W.FeeOption.Fast,feeRate:Z,memo:G,sender:$,recipient:Q}){let J=X.chain,j=await LB({assetValue:X,memo:G,recipient:Q,sender:$}),q=Z?Math.floor(Z):(await BX(J))[B];return F({...j,chain:J,feeRate:q})}function gB(X){return async function({from:Z,memo:G,feeRate:$,feeOptionKey:Q=W.FeeOption.Fast,recipients:J=1}){let j=await N(X).getAddressData(Z),q=$?Math.ceil($):(await BX(X))[Q],L=j?.utxo.map((I)=>({...I,hash:"",type:"P2PKH"})).filter((I)=>I.value>Math.max(WX(X),R(I)*q));if(!L?.length)return W.AssetValue.from({chain:X});let Y=W.AssetValue.from({chain:X,value:L.reduce((I,v)=>I+v.value,0)}),T=typeof J==="number"?Array.from({length:J},()=>({address:Z,value:0})):J;if(G){let I=await k(G);T.push({address:Z,script:I,value:0})}let D=h({feeRate:q,inputs:L,outputs:T})*q;return Y.sub(D)}}function mB(X){return async(B)=>{let Z=await qB(B);return W.AssetValue.from({chain:X,value:W.SwapKitNumber.fromBigInt(BigInt(Z.fee),8).getValue("string")})}}async function XX(X){let B=await K();switch(X){case W.Chain.BitcoinCash:return function({phrase:G,derivationPath:$=`${W.DerivationPath.BCH}/0`,wif:Q}){let J=B(X);if(Q)return DX.ECPair.fromWIF(Q,J);if(!G)throw new W.USwapError("toolbox_utxo_invalid_params",{error:"No phrase provided"});return DX.HDNode.fromSeedBuffer(Buffer.from(KX.mnemonicToSeedSync(G)),J).derivePath($).keyPair};case W.Chain.Bitcoin:case W.Chain.Dogecoin:case W.Chain.Litecoin:case W.Chain.Zcash:case W.Chain.Dash:return function({phrase:G,wif:$,derivationPath:Q}){if(!($||G))throw new W.USwapError("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let J=JB.ECPairFactory(TX.default),j=B(X);if($)return J.fromWIF($,j);let q=KX.mnemonicToSeedSync(G),L=GB.HDKey.fromMasterSeed(q,j).derive(Q);if(!L.privateKey)throw new W.USwapError("toolbox_utxo_invalid_params",{error:"Could not get private key from phrase"});return J.fromPrivateKey(Buffer.from(L.privateKey),{network:j})};default:throw new W.USwapError("toolbox_utxo_not_supported",{chain:X})}}function kX(X){let B=K();return function(G){if(!G)throw new W.USwapError("toolbox_utxo_invalid_params",{error:"Keys must be provided"});let $=e.includes(X)?E.payments.p2pkh:E.payments.p2wpkh,{address:Q}=$({network:B(X),pubkey:G.publicKey});if(!Q)throw new W.USwapError("toolbox_utxo_invalid_address",{error:"Address not defined"});return Q}}function lB(X){return async function({memo:Z,recipient:G,feeOptionKey:$,feeRate:Q,assetValue:J}){let j=await X?.getAddress(),q=J.chain;if(!(X&&j))throw new W.USwapError("toolbox_utxo_no_signer");if(!G)throw new W.USwapError("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let L=Q||(await BX(q))[$||W.FeeOption.Fast],{psbt:Y}=await $B({assetValue:J,feeRate:L,memo:Z,recipient:G,sender:j}),T=await X.signTransaction(Y);return T.finalizeAllInputs(),N(q).broadcastTx(T.extractTransaction().toHex())}}async function BX(X){let B=await N(X).getSuggestedTxFee();return{[W.FeeOption.Average]:B,[W.FeeOption.Fast]:W.applyFeeMultiplier(B,W.FeeOption.Fast),[W.FeeOption.Fastest]:W.applyFeeMultiplier(B,W.FeeOption.Fastest)}}async function LB({assetValue:X,recipient:B,memo:Z,sender:G,fetchTxHex:$=!1}){let Q=X.chain,J=(await BX(Q))[W.FeeOption.Fastest],j=$||e.includes(Q),q=X.getBaseValue("number"),L=Math.ceil(q+J*5000);return{inputs:await N(Q).getUtxos({address:G,fetchTxHex:j,targetValue:L}),outputs:[{address:B,value:q},...Z?[{address:"",script:await k(Z),value:0}]:[]]}}var TX,DX,GB,KX,W,E,JB,e;var ZX=y(()=>{IX();c();t();TX=g(require("@bitcoinerlab/secp256k1")),DX=require("@psf/bitcoincashjs-lib"),GB=require("@scure/bip32"),KX=require("@scure/bip39"),W=require("@uswap/helpers"),E=require("bitcoinjs-lib"),JB=require("ecpair"),e=[W.Chain.Dash,W.Chain.Dogecoin,W.Chain.Zcash,W.Chain.BitcoinCash]});function x(X){return V(i(X))}function hB(X){function B({builder:G,utxos:$}){return $.forEach((Q,J)=>{G.sign(J,X,void 0,65,Q.witnessUtxo?.value)}),G.build()}return{getAddress:()=>{let G=X.getAddress(0);return Promise.resolve(x(G))},signTransaction:B}}async function AX(X){let B="phrase"in X?X.phrase:void 0,Z="index"in X?X.index||0:0,G=M.derivationPathToString("derivationPath"in X&&X.derivationPath?X.derivationPath:M.updateDerivationPath(M.NetworkDerivationPath[O],{index:Z})),$=B?(await XX(O))({derivationPath:G,phrase:B}):void 0,Q=$?hB($):("signer"in X)?X.signer:void 0;function J(){return Promise.resolve(Q?.getAddress())}let{getBalance:j,getFeeRates:q,broadcastTx:L,...Y}=await b({chain:O});function T(C,D=!0){return j(V(i(C)))}return{...Y,broadcastTx:L,buildTx:pB,createTransaction:YB,getAddress:J,getAddressFromKeys:oB,getBalance:T,getFeeRates:q,stripPrefix:V,stripToCashAddress:x,transfer:cB({broadcastTx:L,getFeeRates:q,signer:Q}),validateAddress:w}}async function YB({assetValue:X,recipient:B,memo:Z,feeRate:G,sender:$}){if(!w(B))throw new M.USwapError("toolbox_utxo_invalid_address",{address:B});let Q=Math.ceil(X.getBaseValue("number")+G*7500),J=await N(O).getUtxos({address:x($),fetchTxHex:!0,targetValue:Q}),j=Z?await k(Z):null,q=[];q.push({address:B,value:X.getBaseValue("number")});let{inputs:L,outputs:Y}=F({chain:O,feeRate:G,inputs:J,outputs:q});if(!(L&&Y))throw new M.USwapError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let T=await K(),C=new o.TransactionBuilder(T(O));await Promise.all(L.map(async(D)=>{let I=await N(O).getRawTx(D.hash);C.addInput(o.Transaction.fromBuffer(Buffer.from(I,"hex")),D.index)}));for(let D of Y){let I="address"in D&&D.address?D.address:l($),v=await K(),H=o.address.toOutputScript(l(I),v(O));C.addOutput(H,D.value)}if(j)C.addOutput(j,0);return{builder:C,utxos:L}}function cB({broadcastTx:X,getFeeRates:B,signer:Z}){return async function({recipient:$,assetValue:Q,feeOptionKey:J=M.FeeOption.Fast,...j}){let q=await Z?.getAddress();if(!(Z&&q))throw new M.USwapError("toolbox_utxo_no_signer");if(!$)throw new M.USwapError("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let L=j.feeRate||(await B())[J],{builder:Y,utxos:T}=await YB({...j,assetValue:Q,feeRate:L,recipient:$,sender:q}),D=(await Z.signTransaction({builder:Y,utxos:T})).toHex();return X(D)}}async function pB({assetValue:X,recipient:B,memo:Z,feeRate:G,sender:$,setSigHashType:Q}){let J=i(B);if(!w(J))throw new M.USwapError("toolbox_utxo_invalid_address",{address:J});let j=Math.ceil(X.getBaseValue("number")+G*7500),q=await N(O).getUtxos({address:x($),fetchTxHex:!1,targetValue:j}),L=Number(G.toFixed(0)),Y=Z?await k(Z):null,T=[];if(T.push({address:l(B),value:X.getBaseValue("number")}),Y)T.push({script:Y,value:0});let{inputs:C,outputs:D}=F({chain:O,feeRate:L,inputs:q,outputs:T});if(!(C&&D))throw new M.USwapError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let I=await K(),v=new WB.Psbt({network:I(O)});for(let{hash:H,index:u,witnessUtxo:P}of C)v.addInput({hash:H,index:u,sighashType:Q?65:void 0,witnessUtxo:P});for(let H of D){let u="address"in H&&H.address?H.address:l($),P=H.script?Y?{script:Y,value:0}:void 0:{address:u,value:H.value};if(P)v.addOutput(P)}return{inputs:C,psbt:v,utxos:q}}function oB(X){let B=X.getAddress(0);return x(B)}var o,M,WB,O;var zX=y(()=>{c();ZX();t();o=require("@psf/bitcoincashjs-lib"),M=require("@uswap/helpers"),WB=require("bitcoinjs-lib"),O=M.Chain.BitcoinCash});function EX(){return U.networks.zcash}function zB(){return{bech32:void 0,bip32:{private:76066276,public:76067358},messagePrefix:`\x18ZCash Signed Message:
|
|
2
|
+
`,pubKeyHash:28,scriptHash:28,wif:128}}function nB({phrase:X,derivationPath:B}){let Z=RX.mnemonicToSeedSync(X),$=fX.HDKey.fromMasterSeed(Z).derive(B);if(!$.privateKey)throw new _.USwapError("toolbox_utxo_invalid_params");let Q=zB(),J=U.ECPair.fromPrivateKey(Buffer.from($.privateKey),{network:Q}),j=U.crypto.hash160(J.publicKey),{isStagenet:q}=_.SKConfig.get("envs"),L=q?Buffer.from([29,37]):Buffer.from([28,184]),Y=Buffer.concat([L,j]),T=DB.default.encode(Y);return{getAddress:()=>Promise.resolve(T),signTransaction:(C)=>{let D=C.signAllInputs(J);return Promise.resolve(D)}}}function uB({inputs:X,outputs:B,psbt:Z,sender:G,compiledMemo:$}){for(let Q of X){let J=!!Q.witnessUtxo&&{witnessUtxo:{...Q.witnessUtxo,value:BigInt(Q.value)}},j=!Q.witnessUtxo&&{nonWitnessUtxo:Q.txHex?Buffer.from(Q.txHex,"hex"):void 0};Z.addInput({hash:Q.hash,index:Q.index,...J,...j})}for(let Q of B){let J="address"in Q&&Q.address?Q.address:G,j=Q.script;if(j&&!$)continue;let q=j?{script:$,value:0n}:{script:U.address.toOutputScript(J,EX()),value:BigInt(Q.value)};Z.addOutput(q)}return{inputs:X,psbt:Z}}async function TB(X){let{assetValue:B,recipient:Z,memo:G,feeRate:$,sender:Q,fetchTxHex:J}=X,j=G?k(G):null,q=await N(_.Chain.Zcash).getUtxos({address:Q,fetchTxHex:J!==!1}),L=[{address:Z,value:Number(B.getBaseValue("string"))},...j?[{script:j,value:0}]:[]],{inputs:Y,outputs:T}=F({chain:_.Chain.Zcash,changeAddress:Q,feeRate:$,inputs:q,outputs:L});if(!(Y&&T))throw new _.USwapError("toolbox_utxo_insufficient_balance",{assetValue:B,sender:Q});let C=U.bitgo.createPsbtForNetwork({network:EX()},{version:FX.ZcashTransaction.VERSION4_BRANCH_NU6_1}),{psbt:D,inputs:I}=await uB({compiledMemo:j,inputs:Y,outputs:T,psbt:C,sender:Q});return D.setDefaultsForVersion(EX(),FX.ZcashTransaction.VERSION4_BRANCH_NU6_1),{inputs:I,outputs:T,psbt:D}}async function wX(X){let B=await n.match(X).with({signer:n.P.not(n.P.nullish)},({signer:J})=>Promise.resolve(J)).with({phrase:n.P.string},({phrase:J,derivationPath:j,index:q=0})=>{let L=j||_.NetworkDerivationPath[_.Chain.Zcash]||[44,133,0,0,0],Y=_.updateDerivationPath(L,{index:q}),T=_.derivationPathToString(Y);return nB({derivationPath:T,phrase:J})}).otherwise(()=>Promise.resolve(void 0)),Z=await b({chain:_.Chain.Zcash,signer:B});async function G({recipient:J,assetValue:j,feeOptionKey:q=_.FeeOption.Fast,...L}){let Y=await B?.getAddress();if(!(B&&Y))throw new _.USwapError("toolbox_utxo_no_signer");let T=L.feeRate||(await Z.getFeeRates())[q],{psbt:C}=await TB({...L,assetValue:j,feeRate:T,recipient:J,sender:Y}),D=await B.signTransaction(C);D.validateSignaturesOfAllInputs(),D.finalizeAllInputs();let v=D.extractTransaction().toHex();return Z.broadcastTx(v)}function $({phrase:J,derivationPath:j="m/44'/133'/0'/0/0"}){let q=RX.mnemonicToSeedSync(J),Y=fX.HDKey.fromMasterSeed(q).derive(j);if(!Y.privateKey)throw new _.USwapError("toolbox_utxo_invalid_params");let T=zB();return U.ECPair.fromPrivateKey(Buffer.from(Y.privateKey),{network:T})}function Q({phrase:J,derivationPath:j="m/44'/133'/0'/0/0"}){return $({derivationPath:j,phrase:J}).toWIF()}return{...Z,createKeysForPath:$,createTransaction:TB,getPrivateKeyFromMnemonic:Q,transfer:G,validateAddress:p}}var U,FX,fX,RX,_,DB,n;var PX=y(()=>{c();ZX();t();U=require("@bitgo/utxo-lib"),FX=require("@bitgo/utxo-lib/dist/src/bitgo"),fX=require("@scure/bip32"),RX=require("@scure/bip39"),_=require("@uswap/helpers"),DB=g(require("bs58check")),n=require("ts-pattern")});async function rB(X,B){switch(X){case f.Chain.BitcoinCash:return await AX(B||{});case f.Chain.Zcash:return await wX(B);case f.Chain.Bitcoin:case f.Chain.Dogecoin:case f.Chain.Litecoin:case f.Chain.Dash:return await b({chain:X,...B});default:throw new f.USwapError("toolbox_utxo_not_supported",{chain:X})}}var f;var CB=y(()=>{zX();ZX();PX();zX();t();f=require("@uswap/helpers")});var dB={};vB(dB,{validateZcashAddress:()=>p,toLegacyAddress:()=>l,toCashAddress:()=>i,stripToCashAddress:()=>x,stripPrefix:()=>V,nonSegwitChains:()=>e,isValidAddress:()=>yX,getUtxoToolbox:()=>rB,getUtxoNetwork:()=>K,getUtxoApi:()=>N,getUTXOAddressValidator:()=>jB,getScriptTypeForAddress:()=>s,getOutputSize:()=>a,getInputSize:()=>R,getDustThreshold:()=>WX,getCreateKeysForPath:()=>XX,detectAddressNetwork:()=>OX,createZcashToolbox:()=>wX,createUTXOToolbox:()=>b,createCustomUtxoApi:()=>EB,createBCHToolbox:()=>AX,compileMemo:()=>k,calculateTxSize:()=>h,bchValidateAddress:()=>w,addressFromKeysGetter:()=>kX,addInputsAndOutputs:()=>QB,accumulative:()=>F,UtxoNetwork:()=>NX,UTXOScriptType:()=>LX,TX_OVERHEAD:()=>qX,OutputSizes:()=>$X,OP_RETURN_OVERHEAD:()=>XB,MIN_TX_FEE:()=>SB,InputSizes:()=>QX});module.exports=HB(dB);var iB=y(()=>{c();CB();zX();ZX();PX()});iB();
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=173D6E69CDA5148664756E2164756E21
|
|
5
5
|
//# sourceMappingURL=index.cjs.map
|