@swapkit/toolboxes 4.19.0 → 4.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/chunk-3pne8gaa.js +1 -0
  3. package/dist/chunk-44m22jy1.js +1 -0
  4. package/dist/chunk-4q573g5z.js +2 -0
  5. package/dist/chunk-54gntgt1.js +2 -0
  6. package/dist/chunk-ntbvmmch.js +2 -0
  7. package/dist/chunk-r2htb2ce.js +1 -0
  8. package/dist/src/aptos/index.js +1 -1
  9. package/dist/src/cardano/index.cjs +1 -1
  10. package/dist/src/cardano/index.js +1 -1
  11. package/dist/src/cosmos/index.cjs +1 -1
  12. package/dist/src/cosmos/index.js +1 -1
  13. package/dist/src/evm/index.cjs +1 -1
  14. package/dist/src/evm/index.js +1 -1
  15. package/dist/src/hypercore/index.cjs +1 -1
  16. package/dist/src/hypercore/index.js +1 -1
  17. package/dist/src/index.cjs +1 -1
  18. package/dist/src/index.js +1 -1
  19. package/dist/src/near/index.cjs +1 -1
  20. package/dist/src/near/index.js +1 -1
  21. package/dist/src/radix/index.cjs +1 -1
  22. package/dist/src/radix/index.js +1 -1
  23. package/dist/src/ripple/index.cjs +1 -1
  24. package/dist/src/ripple/index.js +1 -1
  25. package/dist/src/solana/index.js +1 -1
  26. package/dist/src/starknet/index.js +1 -1
  27. package/dist/src/stellar/index.js +1 -1
  28. package/dist/src/substrate/index.cjs +1 -1
  29. package/dist/src/substrate/index.js +1 -1
  30. package/dist/src/sui/index.js +1 -1
  31. package/dist/src/ton/index.cjs +1 -1
  32. package/dist/src/ton/index.js +1 -1
  33. package/dist/src/tron/index.cjs +1 -1
  34. package/dist/src/tron/index.js +1 -1
  35. package/dist/src/utxo/index.js +1 -1
  36. package/dist/types/cardano/toolbox.d.ts +1 -1
  37. package/dist/types/cosmos/toolbox/cosmos.d.ts +2 -3
  38. package/dist/types/evm/helpers.d.ts +11 -1
  39. package/dist/types/near/toolbox.d.ts +1 -2
  40. package/dist/types/radix/index.d.ts +2 -2
  41. package/dist/types/ripple/index.d.ts +4 -8
  42. package/dist/types/substrate/substrate.d.ts +1 -1
  43. package/dist/types/ton/toolbox.d.ts +1 -1
  44. package/package.json +4 -2
@@ -1 +1 @@
1
- var o=Object.defineProperty;var c=(M)=>M;function r(M,X){this[M]=c.bind(null,X)}var i=(M,X)=>{for(var Z in X)o(M,Z,{get:X[Z],enumerable:!0,configurable:!0,set:r.bind(X,Z)})};var x=(M,X)=>()=>(M&&(X=M(M=0)),X);var A=((M)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(M,{get:(X,Z)=>(typeof require<"u"?require:X)[Z]}):M)(function(M){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+M+'" is not supported')});import{isValidSuiAddress as t}from"@mysten/sui/utils";import{AssetValue as P,Chain as _,getChainConfig as m,getRPCUrlSync as n,SwapKitError as N}from"@swapkit/helpers";import{match as s,P as V}from"ts-pattern";async function f(M,X,Z,q,k=[],D){let Y=await M.getCoins({coinType:Z,cursor:D,owner:X}),j=[...k,...Y.data],K=j.reduce((v,H)=>v+BigInt(H.balance),0n);return Y.hasNextPage&&K<q?f(M,X,Z,q,j,Y.nextCursor):j}function y({coinObjectId:M,digest:X,version:Z}){return{digest:X,objectId:M,version:Z}}function e(M,X,Z){let q=X.reduce((v,H)=>v+BigInt(H.balance),0n);if(q<Z)throw new N("toolbox_sui_insufficient_balance",{available:q.toString(),required:Z.toString()});let{selectedCoins:k}=X.reduce((v,H)=>{if(v.total>=Z)return v;return{selectedCoins:[...v.selectedCoins,H],total:v.total+BigInt(H.balance)}},{selectedCoins:[],total:0n}),D=k[0],Y=M.objectRef(y(D)),j=k.slice(1).map((v)=>M.objectRef(y(v)));if(j.length>0)M.mergeCoins(Y,j);let[K]=M.splitCoins(Y,[Z]);return K}function S(M,X){let Z=M.reduce((q,k)=>q+BigInt(k.balance),0n);if(Z<X)throw new N("toolbox_sui_insufficient_balance",{available:Z.toString(),required:X.toString()})}function T(M){try{return t(M)}catch{return!1}}function p(M){return"signWithIntent"in M}function W5({provider:M,...X}={}){let Z;async function q(){if(Z)return Z;return Z=await s(X).with({phrase:V.string},async({phrase:W})=>{let{Ed25519Keypair:z}=await import("@mysten/sui/keypairs/ed25519");return z.deriveKeypair(W)}).with({signer:V.any},({signer:W})=>W).otherwise(()=>{return}),Z}async function k(W=M){let{SuiJsonRpcClient:z}=await import("@mysten/sui/jsonRpc");return new z({network:"mainnet",url:W||n(_.Sui)})}async function D(W){return BigInt(await W.getReferenceGasPrice())}async function Y(){return(await q())?.toSuiAddress()||""}function j(W){try{let z=P.from({address:W,chain:_.Sui});return{asset:z.toString(),decimals:z.decimal}}catch{}return null}async function K(W){let z=W||await Y();if(!z)throw new N("toolbox_sui_address_required");let{baseDecimal:b,chain:G}=m(_.Sui);try{let J=await(await k()).getAllBalances({owner:z}),Q=J.find(({coinType:$})=>$===I)?.totalBalance||"0",L=[P.from({chain:G,fromBaseDecimal:b,value:Q})];for(let{coinType:$,totalBalance:O}of J){if($===I||Number(O)<=0)continue;let F=j($);if(F)L.push(P.from({asset:F.asset,fromBaseDecimal:F.decimals,value:O}))}return L}catch{return[P.from({chain:G})]}}async function v(W){let z=P.from({chain:_.Sui,value:"0.01"});if(!W)return z;try{let b=await k(),{txBytes:G}=await H(W),{effects:{status:R,gasUsed:J}}=await b.dryRunTransactionBlock({transactionBlock:G});if(R.status!=="success")return z;let{baseDecimal:Q}=m(_.Sui),L=BigInt(J.computationCost)+BigInt(J.storageCost)-BigInt(J.storageRebate);return P.from({chain:_.Sui,fromBaseDecimal:Q,value:L.toString()})}catch{return z}}async function H({recipient:W,assetValue:z,gasBudget:b,sender:G}){let{Transaction:R}=await import("@mysten/sui/transactions"),J=G||await Y(),Q=b||a;if(!J)throw new N("toolbox_sui_no_sender");try{let L=await k(),$=new R;if($.setSender(J),z.isGasAsset||z.symbol==="SUI"){let F=z.getBaseValue("bigint"),[U,w]=await Promise.all([D(L),f(L,J,I,F+BigInt(Q))]);S(w,F+BigInt(Q)),$.setGasPrice(U),$.setGasPayment(w.map(y));let[E]=$.splitCoins($.gas,[z.getBaseValue("string")]);$.transferObjects([E],W)}else{let F=z.address;if(!F)throw new N("toolbox_sui_missing_coin_type");let U=z.getBaseValue("bigint"),[w,E,h]=await Promise.all([D(L),f(L,J,I,BigInt(Q)),f(L,J,F,U)]);if(!h.length)throw new N("toolbox_sui_no_coins_found",{coinType:F});S(E,BigInt(Q)),$.setGasPrice(w),$.setGasPayment(E.map(y));let l=e($,h,U);$.transferObjects([l],W)}$.setGasBudget(Q);let O=await $.build({client:L});return{tx:$,txBytes:O}}catch(L){if(L instanceof N)throw L;throw new N("toolbox_sui_transaction_creation_error",{error:L})}}async function C(W){let z=await q();if(!z)throw new N("toolbox_sui_no_signer");if(W instanceof Uint8Array)return z.signTransaction(W);let{txBytes:b}="tx"in W?W:await H(W);return z.signTransaction(b)}async function g({assetValue:W,gasBudget:z,recipient:b}){let G=await q();if(!G)throw new N("toolbox_sui_no_signer");let R=G.toSuiAddress()||await Y();if(!R)throw new N("toolbox_sui_no_sender");let{txBytes:J}=await H({assetValue:W,gasBudget:z,recipient:b,sender:R}),Q=await k();if(!p(G)){let $=await G.signTransaction(J),{digest:O}=await Q.executeTransactionBlock({signature:$.signature,transactionBlock:$.bytes});return O}let{digest:L}=await Q.signAndExecuteTransaction({signer:G,transaction:J});return L}async function u(W){let z=await k(),{digest:b}=await z.executeTransactionBlock({signature:W.signature,transactionBlock:W.bytes});return b}async function d(W){let z=await q();if(!z)throw new N("toolbox_sui_no_signer");let b=await k(),G;if(typeof W==="string")G=Uint8Array.from(Buffer.from(W,"base64"));else if(W instanceof Uint8Array)G=W;else G=await W.build({client:b});if(!p(z)){let J=await z.signTransaction(G),{digest:Q}=await b.executeTransactionBlock({signature:J.signature,transactionBlock:J.bytes});return Q}let{digest:R}=await b.signAndExecuteTransaction({signer:z,transaction:G});return R}return{broadcastTransaction:u,createTransaction:H,estimateTransactionFee:v,getAddress:Y,getBalance:K,signAndBroadcastTransaction:d,signTransaction:C,transfer:g,validateAddress:T}}var I="0x2::sui::SUI",a=50000000;var B=()=>{};var M5={};i(M5,{validateSuiAddress:()=>T,getSuiToolbox:()=>W5});var X5=x(()=>{B()});X5();export{T as validateSuiAddress,W5 as getSuiToolbox};
1
+ import{ea as A}from"../../chunk-ntbvmmch.js";import{isValidSuiAddress as u}from"@mysten/sui/utils";import{AssetValue as P,Chain as _,getChainConfig as x,getRPCUrlSync as d,SwapKitError as N}from"@swapkit/helpers";import{match as l,P as m}from"ts-pattern";var I="0x2::sui::SUI",o=50000000;async function f($,k,G,q,Q=[],D){let Y=await $.getCoins({coinType:G,cursor:D,owner:k}),j=[...Q,...Y.data],K=j.reduce((v,H)=>v+BigInt(H.balance),0n);return Y.hasNextPage&&K<q?f($,k,G,q,j,Y.nextCursor):j}function y({coinObjectId:$,digest:k,version:G}){return{digest:k,objectId:$,version:G}}function c($,k,G){let q=k.reduce((v,H)=>v+BigInt(H.balance),0n);if(q<G)throw new N("toolbox_sui_insufficient_balance",{available:q.toString(),required:G.toString()});let{selectedCoins:Q}=k.reduce((v,H)=>{if(v.total>=G)return v;return{selectedCoins:[...v.selectedCoins,H],total:v.total+BigInt(H.balance)}},{selectedCoins:[],total:0n}),D=Q[0],Y=$.objectRef(y(D)),j=Q.slice(1).map((v)=>$.objectRef(y(v)));if(j.length>0)$.mergeCoins(Y,j);let[K]=$.splitCoins(Y,[G]);return K}function V($,k){let G=$.reduce((q,Q)=>q+BigInt(Q.balance),0n);if(G<k)throw new N("toolbox_sui_insufficient_balance",{available:G.toString(),required:k.toString()})}function r($){try{return u($)}catch{return!1}}function S($){return"signWithIntent"in $}function s({provider:$,...k}={}){let G;async function q(){if(G)return G;return G=await l(k).with({phrase:m.string},async({phrase:W})=>{let{Ed25519Keypair:z}=await import("@mysten/sui/keypairs/ed25519");return z.deriveKeypair(W)}).with({signer:m.any},({signer:W})=>W).otherwise(()=>{return}),G}async function Q(W=$){let{SuiJsonRpcClient:z}=await import("@mysten/sui/jsonRpc");return new z({network:"mainnet",url:W||d(_.Sui)})}async function D(W){return BigInt(await W.getReferenceGasPrice())}async function Y(){return(await q())?.toSuiAddress()||""}function j(W){try{let z=P.from({address:W,chain:_.Sui});return{asset:z.toString(),decimals:z.decimal}}catch{}return null}async function K(W){let z=W||await Y();if(!z)throw new N("toolbox_sui_address_required");let{baseDecimal:L,chain:X}=x(_.Sui);try{let Z=await(await Q()).getAllBalances({owner:z}),b=Z.find(({coinType:M})=>M===I)?.totalBalance||"0",J=[P.from({chain:X,fromBaseDecimal:L,value:b})];for(let{coinType:M,totalBalance:O}of Z){if(M===I||Number(O)<=0)continue;let F=j(M);if(F)J.push(P.from({asset:F.asset,fromBaseDecimal:F.decimals,value:O}))}return J}catch{return[P.from({chain:X})]}}async function v(W){let z=P.from({chain:_.Sui,value:"0.01"});if(!W)return z;try{let L=await Q(),{txBytes:X}=await H(W),{effects:{status:R,gasUsed:Z}}=await L.dryRunTransactionBlock({transactionBlock:X});if(R.status!=="success")return z;let{baseDecimal:b}=x(_.Sui),J=BigInt(Z.computationCost)+BigInt(Z.storageCost)-BigInt(Z.storageRebate);return P.from({chain:_.Sui,fromBaseDecimal:b,value:J.toString()})}catch{return z}}async function H({recipient:W,assetValue:z,gasBudget:L,sender:X}){let{Transaction:R}=await import("@mysten/sui/transactions"),Z=X||await Y(),b=L||o;if(!Z)throw new N("toolbox_sui_no_sender");try{let J=await Q(),M=new R;if(M.setSender(Z),z.isGasAsset||z.symbol==="SUI"){let F=z.getBaseValue("bigint"),[U,w]=await Promise.all([D(J),f(J,Z,I,F+BigInt(b))]);V(w,F+BigInt(b)),M.setGasPrice(U),M.setGasPayment(w.map(y));let[E]=M.splitCoins(M.gas,[z.getBaseValue("string")]);M.transferObjects([E],W)}else{let F=z.address;if(!F)throw new N("toolbox_sui_missing_coin_type");let U=z.getBaseValue("bigint"),[w,E,h]=await Promise.all([D(J),f(J,Z,I,BigInt(b)),f(J,Z,F,U)]);if(!h.length)throw new N("toolbox_sui_no_coins_found",{coinType:F});V(E,BigInt(b)),M.setGasPrice(w),M.setGasPayment(E.map(y));let g=c(M,h,U);M.transferObjects([g],W)}M.setGasBudget(b);let O=await M.build({client:J});return{tx:M,txBytes:O}}catch(J){if(J instanceof N)throw J;throw new N("toolbox_sui_transaction_creation_error",{error:J})}}async function p(W){let z=await q();if(!z)throw new N("toolbox_sui_no_signer");if(W instanceof Uint8Array)return z.signTransaction(W);let{txBytes:L}="tx"in W?W:await H(W);return z.signTransaction(L)}async function T({assetValue:W,gasBudget:z,recipient:L}){let X=await q();if(!X)throw new N("toolbox_sui_no_signer");let R=X.toSuiAddress()||await Y();if(!R)throw new N("toolbox_sui_no_sender");let{txBytes:Z}=await H({assetValue:W,gasBudget:z,recipient:L,sender:R}),b=await Q();if(!S(X)){let M=await X.signTransaction(Z),{digest:O}=await b.executeTransactionBlock({signature:M.signature,transactionBlock:M.bytes});return O}let{digest:J}=await b.signAndExecuteTransaction({signer:X,transaction:Z});return J}async function B(W){let z=await Q(),{digest:L}=await z.executeTransactionBlock({signature:W.signature,transactionBlock:W.bytes});return L}async function C(W){let z=await q();if(!z)throw new N("toolbox_sui_no_signer");let L=await Q(),X;if(typeof W==="string")X=Uint8Array.from(Buffer.from(W,"base64"));else if(W instanceof Uint8Array)X=W;else X=await W.build({client:L});if(!S(z)){let Z=await z.signTransaction(X),{digest:b}=await L.executeTransactionBlock({signature:Z.signature,transactionBlock:Z.bytes});return b}let{digest:R}=await L.signAndExecuteTransaction({signer:z,transaction:X});return R}return{broadcastTransaction:B,createTransaction:H,estimateTransactionFee:v,getAddress:Y,getBalance:K,signAndBroadcastTransaction:C,signTransaction:p,transfer:T,validateAddress:r}}export{r as validateSuiAddress,s as getSuiToolbox};
@@ -1 +1 @@
1
- var G3=Object.create;var{getPrototypeOf:Q3,defineProperty:D,getOwnPropertyNames:w,getOwnPropertyDescriptor:X3}=Object,c=Object.prototype.hasOwnProperty;function A(v){return this[v]}var Z3,$3,D3=(v,X,q)=>{var x=v!=null&&typeof v==="object";if(x){var B=X?Z3??=new WeakMap:$3??=new WeakMap,R=B.get(v);if(R)return R}q=v!=null?G3(Q3(v)):{};let I=X||!v||!v.__esModule?D(q,"default",{value:v,enumerable:!0}):q;for(let L of w(v))if(!c.call(I,L))D(I,L,{get:A.bind(v,L),enumerable:!0});if(x)B.set(v,I);return I},q3=(v)=>{var X=(p??=new WeakMap).get(v),q;if(X)return X;if(X=D({},"__esModule",{value:!0}),v&&typeof v==="object"||typeof v==="function"){for(var x of w(v))if(!c.call(X,x))D(X,x,{get:A.bind(v,x),enumerable:!(q=X3(v,x))||q.enumerable})}return p.set(v,X),X},p;var H3=(v)=>v;function Y3(v,X){this[v]=H3.bind(null,X)}var k3=(v,X)=>{for(var q in X)D(v,q,{get:X[q],enumerable:!0,configurable:!0,set:Y3.bind(X,q)})};var f=(v,X)=>()=>(v&&(X=v(v=0)),X);function y3(){function v(){let X=Date.now(),q=W||X;return W=q,X>W?X:q+1}return x3+v().toString(36)}function g(v){return async function(q,x=!0){let B=await m.SwapKitApi.getChainBalance({address:q,chain:v,scamFilter:x}),{baseDecimal:R}=V.getChainConfig(v),I=B.map(({identifier:O,value:h,decimal:j})=>{return new V.AssetValue({decimal:j||R,identifier:O,value:h})});if(!I.some((O)=>O.isGasAsset))return[V.AssetValue.from({chain:v}),...I];return I}}var V,m,x3,W=0;var i=f(()=>{V=require("@swapkit/helpers"),m=require("@swapkit/helpers/api"),x3=typeof process<"u"&&process.pid?process.pid.toString(36):""});async function U3(){let v=Date.now();if(y&&v-o<R3)return y;return y=await d.getHttpEndpoint(),o=v,y}async function K3(){let[v]=$.SKConfig.get("rpcUrls")[$.Chain.Ton]??[];if(v)return v;return await U3()}function N3(v={}){let X,q,x;async function B(){if(!X){let z=v.provider??await K3();X=new G.TonClient({endpoint:z})}return X}async function R(){return(await L()).address.toString()}async function I(){if(x)return x;return x=await K.match(v).with({phrase:K.P.string},async({phrase:z})=>n.mnemonicToWalletKey(z.split(" "))).with({signer:K.P.any},({signer:z})=>z).otherwise(()=>{return}),x}async function L(z){if(!q||z){let Q=await I(),Z=await B(),Y=z||Q;if(!Y)throw new $.SwapKitError("core_wallet_connection_not_found");let H=G.WalletContractV4.create({publicKey:Y.publicKey,workchain:0});q=Z.open(H)}return q}let O=g($.Chain.Ton);async function h({assetValue:z,recipient:Q,memo:Z,sender:Y,sweep:H}){if(z.isGasAsset){let v3=Z?S(Z).toBoc().toString("base64"):void 0,z3=H?L3:void 0;return[{address:Q,amount:z.getBaseValue("string"),payload:v3,sendMode:z3}]}if(H)throw new $.SwapKitError({errorKey:"core_swap_invalid_params",info:{asset:z.toString(),reason:"TON sweep is only supported for the native gas asset"}});let k=z.address;if(!k)throw new $.SwapKitError({errorKey:"core_swap_contract_not_found",info:{asset:z.toString()}});let J=Y??await R(),N=await C({jettonMasterAddress:k,ownerAddress:J}),U=G.Address.parse(Q),P=G.Address.parse(J),u=z.getBaseValue("bigint"),F=Z?S(Z):void 0,_=e({destinationAddress:U,forwardPayload:F,jettonAmount:u,responseAddress:P});return[{address:N.toString(),amount:J3.toString(),payload:_.toBoc().toString("base64")}]}function j({sender:z,...Q}){return h({...Q,sender:z})}function M(z){return z.map((Q)=>{let Z=Q.payload?G.Cell.fromBase64(Q.payload):void 0,Y=Q.stateInit?G.loadStateInit(G.Cell.fromBase64(Q.stateInit).asSlice()):void 0,H=G.Address.parse(Q.address),k=G.Address.isFriendly(Q.address)?G.Address.parseFriendly(Q.address).isBounceable:!0;return G.internal({body:Z,bounce:k,init:Y,to:H,value:BigInt(Q.amount)})})}async function b(z){let Q=await I(),Z=await L();if(!Z||!Q)throw new $.SwapKitError("core_wallet_connection_not_found");let Y=await B(),{state:H}=await Y.getContractState(Z.address),k=H==="active",J=k?await Z.getSeqno():0,N=Z.createTransfer({messages:M(z),secretKey:Q.secretKey,sendMode:z[0]?.sendMode??l,seqno:J}),U=G.external({body:N,init:k?void 0:Z.init,to:Z.address});return G.beginCell().store(G.storeMessage(U)).endCell()}async function T(z){return await(await B()).sendFile(z.toBoc()),z.hash().toString("hex")}async function E(z){let Q=await b(z);return T(Q)}async function a({assetValue:z,recipient:Q,memo:Z,sweep:Y}){let H=await j({assetValue:z,memo:Z,recipient:Q,sweep:Y});return E(H)}async function s({sender:z,...Q}){let{baseDecimal:Z}=$.getChainConfig($.Chain.Ton),Y=await K.match(z).with(K.P.string,(J)=>{return G.Address.parseFriendly(J).address}).otherwise(async()=>{return(await L()).address});if(!Y)throw new $.SwapKitError("toolbox_fee_estimation_failed",{chain:$.Chain.Ton});let H=$.AssetValue.from({chain:$.Chain.Ton,value:"0.01"}),k=await B();try{let J=await j({sender:z,...Q}),N=await I(),U=await L();if(!U||!N)return H;let P=await U.getSeqno(),u=U.createTransfer({messages:M(J),secretKey:N.secretKey,sendMode:J[0]?.sendMode??l,seqno:P}),{source_fees:F}=await k.estimateExternalMessageFee(Y,{body:u,ignoreSignature:!0,initCode:null,initData:null}),_=F.in_fwd_fee+F.storage_fee+F.gas_fee+F.fwd_fee;return H.set($.SwapKitNumber.fromBigInt(BigInt(_),Z))}catch{return H}}async function C({jettonMasterAddress:z,ownerAddress:Q}){try{let Z=await B(),Y=G.Address.parse(z),H=G.Address.parse(Q);return await Z.open(G.JettonMaster.create(Y)).getWalletAddress(H)}catch{throw new $.SwapKitError({errorKey:"core_swap_contract_not_found",info:{jettonMasterAddress:z,ownerAddress:Q}})}}function e({jettonAmount:z,destinationAddress:Q,responseAddress:Z,forwardAmount:Y=B3,forwardPayload:H}){let k=G.beginCell().storeUint(I3,32).storeUint(0,64).storeCoins(z).storeAddress(Q).storeAddress(Z).storeBit(0).storeCoins(Y);if(H)k.storeBit(1).storeRef(H);else k.storeBit(0);return k.endCell()}function S(z){return G.beginCell().storeUint(0,32).storeStringTail(z).endCell()}return{broadcastTransaction:T,createTransaction:j,estimateTransactionFee:s,getAddress:R,getBalance:O,getJettonWalletAddress:C,sign:b,signAndBroadcastTransaction:E,transfer:a,validateAddress:r}}function r(v){try{return G.Address.parse(v),!0}catch{return!1}}var d,$,n,G,K,I3=260734629,B3,J3,l,L3,R3=60000,y,o=0;var t=f(()=>{i();d=require("@orbs-network/ton-access"),$=require("@swapkit/helpers"),n=require("@ton/crypto"),G=require("@ton/ton"),K=require("ts-pattern"),B3=G.toNano("0.01"),J3=G.toNano("0.05"),l=G.SendMode.PAY_GAS_SEPARATELY+G.SendMode.IGNORE_ERRORS,L3=G.SendMode.CARRY_ALL_REMAINING_BALANCE+G.SendMode.IGNORE_ERRORS});var O3={};k3(O3,{validateTonAddress:()=>r,getTONToolbox:()=>N3});module.exports=q3(O3);var j3=f(()=>{t()});j3();
1
+ var v3=Object.create;var{getPrototypeOf:z3,defineProperty:D,getOwnPropertyNames:w,getOwnPropertyDescriptor:G3}=Object,c=Object.prototype.hasOwnProperty;function A(v){return this[v]}var Q3,X3,O3=(v,X,q)=>{var x=v!=null&&typeof v==="object";if(x){var J=X?Q3??=new WeakMap:X3??=new WeakMap,R=J.get(v);if(R)return R}q=v!=null?v3(z3(v)):{};let I=X||!v||!v.__esModule?D(q,"default",{value:v,enumerable:!0}):q;for(let L of w(v))if(!c.call(I,L))D(I,L,{get:A.bind(v,L),enumerable:!0});if(x)J.set(v,I);return I},Z3=(v)=>{var X=(p??=new WeakMap).get(v),q;if(X)return X;if(X=D({},"__esModule",{value:!0}),v&&typeof v==="object"||typeof v==="function"){for(var x of w(v))if(!c.call(X,x))D(X,x,{get:A.bind(v,x),enumerable:!(q=G3(v,x))||q.enumerable})}return p.set(v,X),X},p;var $3=(v)=>v;function q3(v,X){this[v]=$3.bind(null,X)}var H3=(v,X)=>{for(var q in X)D(v,q,{get:X[q],enumerable:!0,configurable:!0,set:q3.bind(X,q)})};var f=(v,X)=>()=>(v&&(X=v(v=0)),X);function D3(){function v(){let X=Date.now(),q=W||X;return W=q,X>W?X:q+1}return Y3+v().toString(36)}function g(v){return async function(q,x=!0){let J=await m.SwapKitApi.getChainBalance({address:q,chain:v,scamFilter:x}),{baseDecimal:R}=V.getChainConfig(v),I=J.map(({identifier:O,value:h,decimal:j})=>{return new V.AssetValue({decimal:j||R,identifier:O,value:h})});if(!I.some((O)=>O.isGasAsset))return[V.AssetValue.from({chain:v}),...I];return I}}var V,m,Y3,W=0;var i=f(()=>{V=require("@swapkit/helpers"),m=require("@swapkit/helpers/api"),Y3=typeof process<"u"&&process.pid?process.pid.toString(36):""});async function L3(){let v=Date.now();if(y&&v-d<J3)return y;let{getHttpEndpoint:X}=await import("@orbs-network/ton-access");return y=await X(),d=v,y}async function R3(){let[v]=$.SKConfig.get("rpcUrls")[$.Chain.Ton]??[];if(v)return v;return await L3()}function U3(v={}){let X,q,x;async function J(){if(!X){let{TonClient:z}=await import("@ton/ton"),G=v.provider??await R3();X=new z({endpoint:G})}return X}async function R(){return(await L()).address.toString()}async function I(){if(x)return x;return x=await K.match(v).with({phrase:K.P.string},async({phrase:z})=>{let{mnemonicToWalletKey:G}=await import("@ton/crypto");return G(z.split(" "))}).with({signer:K.P.any},({signer:z})=>z).otherwise(()=>{return}),x}async function L(z){if(!q||z){let G=await I(),Z=await J(),Y=z||G;if(!Y)throw new $.SwapKitError("core_wallet_connection_not_found");let{WalletContractV4:H}=await import("@ton/ton"),k=H.create({publicKey:Y.publicKey,workchain:0});q=Z.open(k)}return q}let O=g($.Chain.Ton);async function h({assetValue:z,recipient:G,memo:Z,sender:Y,sweep:H}){if(z.isGasAsset){let s=Z?S(Z).toBoc().toString("base64"):void 0,e=H?B3:void 0;return[{address:G,amount:z.getBaseValue("string"),payload:s,sendMode:e}]}if(H)throw new $.SwapKitError({errorKey:"core_swap_invalid_params",info:{asset:z.toString(),reason:"TON sweep is only supported for the native gas asset"}});let k=z.address;if(!k)throw new $.SwapKitError({errorKey:"core_swap_contract_not_found",info:{asset:z.toString()}});let B=Y??await R(),N=await C({jettonMasterAddress:k,ownerAddress:B}),U=Q.Address.parse(G),P=Q.Address.parse(B),u=z.getBaseValue("bigint"),F=Z?S(Z):void 0,_=t({destinationAddress:U,forwardPayload:F,jettonAmount:u,responseAddress:P});return[{address:N.toString(),amount:I3.toString(),payload:_.toBoc().toString("base64")}]}function j({sender:z,...G}){return h({...G,sender:z})}function M(z){return z.map((G)=>{let Z=G.payload?Q.Cell.fromBase64(G.payload):void 0,Y=G.stateInit?Q.loadStateInit(Q.Cell.fromBase64(G.stateInit).asSlice()):void 0,H=Q.Address.parse(G.address),k=Q.Address.isFriendly(G.address)?Q.Address.parseFriendly(G.address).isBounceable:!0;return Q.internal({body:Z,bounce:k,init:Y,to:H,value:BigInt(G.amount)})})}async function b(z){let G=await I(),Z=await L();if(!Z||!G)throw new $.SwapKitError("core_wallet_connection_not_found");let Y=await J(),{state:H}=await Y.getContractState(Z.address),k=H==="active",B=k?await Z.getSeqno():0,N=Z.createTransfer({messages:M(z),secretKey:G.secretKey,sendMode:z[0]?.sendMode??l,seqno:B}),U=Q.external({body:N,init:k?void 0:Z.init,to:Z.address});return Q.beginCell().store(Q.storeMessage(U)).endCell()}async function T(z){return await(await J()).sendFile(z.toBoc()),z.hash().toString("hex")}async function E(z){let G=await b(z);return T(G)}async function r({assetValue:z,recipient:G,memo:Z,sweep:Y}){let H=await j({assetValue:z,memo:Z,recipient:G,sweep:Y});return E(H)}async function a({sender:z,...G}){let{baseDecimal:Z}=$.getChainConfig($.Chain.Ton),Y=await K.match(z).with(K.P.string,(B)=>{return Q.Address.parseFriendly(B).address}).otherwise(async()=>{return(await L()).address});if(!Y)throw new $.SwapKitError("toolbox_fee_estimation_failed",{chain:$.Chain.Ton});let H=$.AssetValue.from({chain:$.Chain.Ton,value:"0.01"}),k=await J();try{let B=await j({sender:z,...G}),N=await I(),U=await L();if(!U||!N)return H;let P=await U.getSeqno(),u=U.createTransfer({messages:M(B),secretKey:N.secretKey,sendMode:B[0]?.sendMode??l,seqno:P}),{source_fees:F}=await k.estimateExternalMessageFee(Y,{body:u,ignoreSignature:!0,initCode:null,initData:null}),_=F.in_fwd_fee+F.storage_fee+F.gas_fee+F.fwd_fee;return H.set($.SwapKitNumber.fromBigInt(BigInt(_),Z))}catch{return H}}async function C({jettonMasterAddress:z,ownerAddress:G}){try{let Z=await J(),Y=Q.Address.parse(z),H=Q.Address.parse(G),{JettonMaster:k}=await import("@ton/ton");return await Z.open(k.create(Y)).getWalletAddress(H)}catch{throw new $.SwapKitError({errorKey:"core_swap_contract_not_found",info:{jettonMasterAddress:z,ownerAddress:G}})}}function t({jettonAmount:z,destinationAddress:G,responseAddress:Z,forwardAmount:Y=x3,forwardPayload:H}){let k=Q.beginCell().storeUint(k3,32).storeUint(0,64).storeCoins(z).storeAddress(G).storeAddress(Z).storeBit(0).storeCoins(Y);if(H)k.storeBit(1).storeRef(H);else k.storeBit(0);return k.endCell()}function S(z){return Q.beginCell().storeUint(0,32).storeStringTail(z).endCell()}return{broadcastTransaction:T,createTransaction:j,estimateTransactionFee:a,getAddress:R,getBalance:O,getJettonWalletAddress:C,sign:b,signAndBroadcastTransaction:E,transfer:r,validateAddress:o}}function o(v){try{return Q.Address.parse(v),!0}catch{return!1}}var $,Q,K,k3=260734629,x3,I3,l,B3,J3=60000,y,d=0;var n=f(()=>{i();$=require("@swapkit/helpers"),Q=require("@ton/core"),K=require("ts-pattern"),x3=Q.toNano("0.01"),I3=Q.toNano("0.05"),l=Q.SendMode.PAY_GAS_SEPARATELY+Q.SendMode.IGNORE_ERRORS,B3=Q.SendMode.CARRY_ALL_REMAINING_BALANCE+Q.SendMode.IGNORE_ERRORS});var N3={};H3(N3,{validateTonAddress:()=>o,getTONToolbox:()=>U3});module.exports=Z3(N3);var F3=f(()=>{n()});F3();
@@ -1 +1 @@
1
- var v3=Object.defineProperty;var z3=(z)=>z;function G3(z,X){this[z]=z3.bind(null,X)}var Q3=(z,X)=>{for(var H in X)v3(z,H,{get:X[H],enumerable:!0,configurable:!0,set:G3.bind(X,H)})};var _=(z,X)=>()=>(z&&(X=z(z=0)),X);var W3=((z)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(z,{get:(X,H)=>(typeof require<"u"?require:X)[H]}):z)(function(z){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+z+'" is not supported')});import{AssetValue as w,getChainConfig as X3}from"@swapkit/helpers";import{SwapKitApi as Z3}from"@swapkit/helpers/api";function E3(){function z(){let X=Date.now(),H=f||X;return f=H,X>f?X:H+1}return $3+z().toString(36)}function c(z){return async function(H,J=!0){let x=await Z3.getChainBalance({address:H,chain:z,scamFilter:J}),{baseDecimal:j}=X3(z),I=x.map(({identifier:N,value:y,decimal:F})=>{return new w({decimal:F||j,identifier:N,value:y})});if(!I.some((N)=>N.isGasAsset))return[w.from({chain:z}),...I];return I}}var $3,f=0;var A=_(()=>{$3=typeof process<"u"&&process.pid?process.pid.toString(36):""});import{getHttpEndpoint as q3}from"@orbs-network/ton-access";import{AssetValue as H3,Chain as O,getChainConfig as Y3,SKConfig as k3,SwapKitError as U,SwapKitNumber as x3}from"@swapkit/helpers";import{mnemonicToWalletKey as I3}from"@ton/crypto";import{Address as k,beginCell as W,Cell as m,external as B3,internal as J3,JettonMaster as L3,loadStateInit as R3,SendMode as V,storeMessage as U3,TonClient as K3,toNano as o,WalletContractV4 as N3}from"@ton/ton";import{match as g,P as M}from"ts-pattern";async function y3(){let z=Date.now();if(D&&z-l<V3)return D;return D=await q3(),l=z,D}async function h3(){let[z]=k3.get("rpcUrls")[O.Ton]??[];if(z)return z;return await y3()}function P3(z={}){let X,H,J;async function x(){if(!X){let v=z.provider??await h3();X=new K3({endpoint:v})}return X}async function j(){return(await K()).address.toString()}async function I(){if(J)return J;return J=await g(z).with({phrase:M.string},async({phrase:v})=>I3(v.split(" "))).with({signer:M.any},({signer:v})=>v).otherwise(()=>{return}),J}async function K(v){if(!H||v){let G=await I(),Q=await x(),$=v||G;if(!$)throw new U("core_wallet_connection_not_found");let Z=N3.create({publicKey:$.publicKey,workchain:0});H=Q.open(Z)}return H}let N=c(O.Ton);async function y({assetValue:v,recipient:G,memo:Q,sender:$,sweep:Z}){if(v.isGasAsset){let s=Q?p(Q).toBoc().toString("base64"):void 0,e=Z?D3:void 0;return[{address:G,amount:v.getBaseValue("string"),payload:s,sendMode:e}]}if(Z)throw new U({errorKey:"core_swap_invalid_params",info:{asset:v.toString(),reason:"TON sweep is only supported for the native gas asset"}});let q=v.address;if(!q)throw new U({errorKey:"core_swap_contract_not_found",info:{asset:v.toString()}});let Y=$??await j(),L=await S({jettonMasterAddress:q,ownerAddress:Y}),B=k.parse(G),h=k.parse(Y),P=v.getBaseValue("bigint"),R=Q?p(Q):void 0,u=a({destinationAddress:B,forwardPayload:R,jettonAmount:P,responseAddress:h});return[{address:L.toString(),amount:j3.toString(),payload:u.toBoc().toString("base64")}]}function F({sender:v,...G}){return y({...G,sender:v})}function b(v){return v.map((G)=>{let Q=G.payload?m.fromBase64(G.payload):void 0,$=G.stateInit?R3(m.fromBase64(G.stateInit).asSlice()):void 0,Z=k.parse(G.address),q=k.isFriendly(G.address)?k.parseFriendly(G.address).isBounceable:!0;return J3({body:Q,bounce:q,init:$,to:Z,value:BigInt(G.amount)})})}async function T(v){let G=await I(),Q=await K();if(!Q||!G)throw new U("core_wallet_connection_not_found");let $=await x(),{state:Z}=await $.getContractState(Q.address),q=Z==="active",Y=q?await Q.getSeqno():0,L=Q.createTransfer({messages:b(v),secretKey:G.secretKey,sendMode:v[0]?.sendMode??i,seqno:Y}),B=B3({body:L,init:q?void 0:Q.init,to:Q.address});return W().store(U3(B)).endCell()}async function E(v){return await(await x()).sendFile(v.toBoc()),v.hash().toString("hex")}async function C(v){let G=await T(v);return E(G)}async function r({assetValue:v,recipient:G,memo:Q,sweep:$}){let Z=await F({assetValue:v,memo:Q,recipient:G,sweep:$});return C(Z)}async function t({sender:v,...G}){let{baseDecimal:Q}=Y3(O.Ton),$=await g(v).with(M.string,(Y)=>{return k.parseFriendly(Y).address}).otherwise(async()=>{return(await K()).address});if(!$)throw new U("toolbox_fee_estimation_failed",{chain:O.Ton});let Z=H3.from({chain:O.Ton,value:"0.01"}),q=await x();try{let Y=await F({sender:v,...G}),L=await I(),B=await K();if(!B||!L)return Z;let h=await B.getSeqno(),P=B.createTransfer({messages:b(Y),secretKey:L.secretKey,sendMode:Y[0]?.sendMode??i,seqno:h}),{source_fees:R}=await q.estimateExternalMessageFee($,{body:P,ignoreSignature:!0,initCode:null,initData:null}),u=R.in_fwd_fee+R.storage_fee+R.gas_fee+R.fwd_fee;return Z.set(x3.fromBigInt(BigInt(u),Q))}catch{return Z}}async function S({jettonMasterAddress:v,ownerAddress:G}){try{let Q=await x(),$=k.parse(v),Z=k.parse(G);return await Q.open(L3.create($)).getWalletAddress(Z)}catch{throw new U({errorKey:"core_swap_contract_not_found",info:{jettonMasterAddress:v,ownerAddress:G}})}}function a({jettonAmount:v,destinationAddress:G,responseAddress:Q,forwardAmount:$=O3,forwardPayload:Z}){let q=W().storeUint(F3,32).storeUint(0,64).storeCoins(v).storeAddress(G).storeAddress(Q).storeBit(0).storeCoins($);if(Z)q.storeBit(1).storeRef(Z);else q.storeBit(0);return q.endCell()}function p(v){return W().storeUint(0,32).storeStringTail(v).endCell()}return{broadcastTransaction:E,createTransaction:F,estimateTransactionFee:t,getAddress:j,getBalance:N,getJettonWalletAddress:S,sign:T,signAndBroadcastTransaction:C,transfer:r,validateAddress:d}}function d(z){try{return k.parse(z),!0}catch{return!1}}var F3=260734629,O3,j3,i,D3,V3=60000,D,l=0;var n=_(()=>{A();O3=o("0.01"),j3=o("0.05"),i=V.PAY_GAS_SEPARATELY+V.IGNORE_ERRORS,D3=V.CARRY_ALL_REMAINING_BALANCE+V.IGNORE_ERRORS});var _3={};Q3(_3,{validateTonAddress:()=>d,getTONToolbox:()=>P3});var f3=_(()=>{n()});f3();export{d as validateTonAddress,P3 as getTONToolbox};
1
+ import{da as A}from"../../chunk-54gntgt1.js";import{ea as L}from"../../chunk-ntbvmmch.js";import{AssetValue as n,Chain as R,getChainConfig as a,SKConfig as t,SwapKitError as x,SwapKitNumber as s}from"@swapkit/helpers";import{Address as Y,beginCell as _,Cell as C,external as e,internal as zz,loadStateInit as Qz,SendMode as N,storeMessage as Xz,toNano as c}from"@ton/core";import{match as S,P as h}from"ts-pattern";var Zz=260734629,$z=c("0.01"),vz=c("0.05"),w=N.PAY_GAS_SEPARATELY+N.IGNORE_ERRORS,Gz=N.CARRY_ALL_REMAINING_BALANCE+N.IGNORE_ERRORS,Hz=60000,F,p=0;async function Yz(){let H=Date.now();if(F&&H-p<Hz)return F;let{getHttpEndpoint:J}=await import("@orbs-network/ton-access");return F=await J(),p=H,F}async function kz(){let[H]=t.get("rpcUrls")[R.Ton]??[];if(H)return H;return await Yz()}function Lz(H={}){let J,O,U;async function B(){if(!J){let{TonClient:z}=await import("@ton/ton"),Q=H.provider??await kz();J=new z({endpoint:Q})}return J}async function W(){return(await K()).address.toString()}async function j(){if(U)return U;return U=await S(H).with({phrase:h.string},async({phrase:z})=>{let{mnemonicToWalletKey:Q}=await import("@ton/crypto");return Q(z.split(" "))}).with({signer:h.any},({signer:z})=>z).otherwise(()=>{return}),U}async function K(z){if(!O||z){let Q=await j(),X=await B(),$=z||Q;if(!$)throw new x("core_wallet_connection_not_found");let{WalletContractV4:Z}=await import("@ton/ton"),v=Z.create({publicKey:$.publicKey,workchain:0});O=X.open(v)}return O}let m=A(R.Ton);async function g({assetValue:z,recipient:Q,memo:X,sender:$,sweep:Z}){if(z.isGasAsset){let o=X?u(X).toBoc().toString("base64"):void 0,r=Z?Gz:void 0;return[{address:Q,amount:z.getBaseValue("string"),payload:o,sendMode:r}]}if(Z)throw new x({errorKey:"core_swap_invalid_params",info:{asset:z.toString(),reason:"TON sweep is only supported for the native gas asset"}});let v=z.address;if(!v)throw new x({errorKey:"core_swap_contract_not_found",info:{asset:z.toString()}});let G=$??await W(),q=await f({jettonMasterAddress:v,ownerAddress:G}),k=Y.parse(Q),P=Y.parse(G),V=z.getBaseValue("bigint"),I=X?u(X):void 0,y=d({destinationAddress:k,forwardPayload:I,jettonAmount:V,responseAddress:P});return[{address:q.toString(),amount:vz.toString(),payload:y.toBoc().toString("base64")}]}function D({sender:z,...Q}){return g({...Q,sender:z})}function M(z){return z.map((Q)=>{let X=Q.payload?C.fromBase64(Q.payload):void 0,$=Q.stateInit?Qz(C.fromBase64(Q.stateInit).asSlice()):void 0,Z=Y.parse(Q.address),v=Y.isFriendly(Q.address)?Y.parseFriendly(Q.address).isBounceable:!0;return zz({body:X,bounce:v,init:$,to:Z,value:BigInt(Q.amount)})})}async function b(z){let Q=await j(),X=await K();if(!X||!Q)throw new x("core_wallet_connection_not_found");let $=await B(),{state:Z}=await $.getContractState(X.address),v=Z==="active",G=v?await X.getSeqno():0,q=X.createTransfer({messages:M(z),secretKey:Q.secretKey,sendMode:z[0]?.sendMode??w,seqno:G}),k=e({body:q,init:v?void 0:X.init,to:X.address});return _().store(Xz(k)).endCell()}async function E(z){return await(await B()).sendFile(z.toBoc()),z.hash().toString("hex")}async function T(z){let Q=await b(z);return E(Q)}async function i({assetValue:z,recipient:Q,memo:X,sweep:$}){let Z=await D({assetValue:z,memo:X,recipient:Q,sweep:$});return T(Z)}async function l({sender:z,...Q}){let{baseDecimal:X}=a(R.Ton),$=await S(z).with(h.string,(G)=>{return Y.parseFriendly(G).address}).otherwise(async()=>{return(await K()).address});if(!$)throw new x("toolbox_fee_estimation_failed",{chain:R.Ton});let Z=n.from({chain:R.Ton,value:"0.01"}),v=await B();try{let G=await D({sender:z,...Q}),q=await j(),k=await K();if(!k||!q)return Z;let P=await k.getSeqno(),V=k.createTransfer({messages:M(G),secretKey:q.secretKey,sendMode:G[0]?.sendMode??w,seqno:P}),{source_fees:I}=await v.estimateExternalMessageFee($,{body:V,ignoreSignature:!0,initCode:null,initData:null}),y=I.in_fwd_fee+I.storage_fee+I.gas_fee+I.fwd_fee;return Z.set(s.fromBigInt(BigInt(y),X))}catch{return Z}}async function f({jettonMasterAddress:z,ownerAddress:Q}){try{let X=await B(),$=Y.parse(z),Z=Y.parse(Q),{JettonMaster:v}=await import("@ton/ton");return await X.open(v.create($)).getWalletAddress(Z)}catch{throw new x({errorKey:"core_swap_contract_not_found",info:{jettonMasterAddress:z,ownerAddress:Q}})}}function d({jettonAmount:z,destinationAddress:Q,responseAddress:X,forwardAmount:$=$z,forwardPayload:Z}){let v=_().storeUint(Zz,32).storeUint(0,64).storeCoins(z).storeAddress(Q).storeAddress(X).storeBit(0).storeCoins($);if(Z)v.storeBit(1).storeRef(Z);else v.storeBit(0);return v.endCell()}function u(z){return _().storeUint(0,32).storeStringTail(z).endCell()}return{broadcastTransaction:E,createTransaction:D,estimateTransactionFee:l,getAddress:W,getBalance:m,getJettonWalletAddress:f,sign:b,signAndBroadcastTransaction:T,transfer:i,validateAddress:qz}}function qz(H){try{return Y.parse(H),!0}catch{return!1}}export{qz as validateTonAddress,Lz as getTONToolbox};
@@ -1 +1 @@
1
- var az=Object.create;var{getPrototypeOf:rz,defineProperty:T,getOwnPropertyNames:Zz,getOwnPropertyDescriptor:sz}=Object,$z=Object.prototype.hasOwnProperty;function Yz(z){return this[z]}var ez,zJ,RJ=(z,J,Q)=>{var Z=z!=null&&typeof z==="object";if(Z){var Y=J?ez??=new WeakMap:zJ??=new WeakMap,q=Y.get(z);if(q)return q}Q=z!=null?az(rz(z)):{};let W=J||!z||!z.__esModule?T(Q,"default",{value:z,enumerable:!0}):Q;for(let k of Zz(z))if(!$z.call(W,k))T(W,k,{get:Yz.bind(z,k),enumerable:!0});if(Z)Y.set(z,W);return W},JJ=(z)=>{var J=(Qz??=new WeakMap).get(z),Q;if(J)return J;if(J=T({},"__esModule",{value:!0}),z&&typeof z==="object"||typeof z==="function"){for(var Z of Zz(z))if(!$z.call(J,Z))T(J,Z,{get:Yz.bind(z,Z),enumerable:!(Q=sz(z,Z))||Q.enumerable})}return Qz.set(z,J),J},Qz;var QJ=(z)=>z;function ZJ(z,J){this[z]=QJ.bind(null,J)}var $J=(z,J)=>{for(var Q in J)T(z,Q,{get:J[Q],enumerable:!0,configurable:!0,set:ZJ.bind(J,Q)})};var f=(z,J)=>()=>(z&&(J=z(z=0)),J);function u(z,J){let Q=0n,Z=0n,Y=J;while(Y<z.length&&Y-J<10){let q=z[Y++];if(q===void 0)break;if(Q|=BigInt(q&127)<<Z,Z+=7n,(q&128)===0)return[Q,Y]}throw new R.SwapKitError("toolbox_tron_transaction_creation_failed")}function w(z){let J=[],Q=z<0n?z+2n**64n:z;while(Q>=128n)J.push(Number(Q&0x7fn)|128),Q>>=7n;return J.push(Number(Q)),J}function y(z,J,Q){let Z=z.get(J);if(Z)Z.push(Q);else z.set(J,[Q])}function qJ(z){let J=new Map,Q=0;while(Q<z.length){let[Z,Y]=u(z,Q);Q=Y;let q=Number(Z>>3n),W=Number(Z&7n);if(W===E){let[k,K]=u(z,Q);Q=K,y(J,q,{data:new Uint8Array(w(k)),wireType:E})}else if(W===A){let[k,K]=u(z,Q);Q=K;let D=Number(k);if(D<0||Q+D>z.length)throw new R.SwapKitError("toolbox_tron_transaction_creation_failed");let m=z.slice(Q,Q+D);Q+=D,y(J,q,{data:m,wireType:A})}else if(W===Xz){if(Q+8>z.length)throw new R.SwapKitError("toolbox_tron_transaction_creation_failed");let k=z.slice(Q,Q+8);Q+=8,y(J,q,{data:k,wireType:Xz})}else if(W===jz){if(Q+4>z.length)throw new R.SwapKitError("toolbox_tron_transaction_creation_failed");let k=z.slice(Q,Q+4);Q+=4,y(J,q,{data:k,wireType:jz})}else throw new R.SwapKitError("toolbox_tron_transaction_creation_failed")}return J}function GJ(z){let J=[];for(let[q,W]of[...z.entries()].sort(([k],[K])=>k-K))for(let{wireType:k,data:K}of W){let D=BigInt(q<<3|k);if(J.push(new Uint8Array(w(D))),k===A)J.push(new Uint8Array(w(BigInt(K.length))));J.push(K)}let Q=J.reduce((q,W)=>q+W.length,0),Z=new Uint8Array(Q),Y=0;for(let q of J)Z.set(q,Y),Y+=q.length;return Z}function Gz(z,J){if(!z||z.length%2!==0)throw new R.SwapKitError("toolbox_tron_transaction_creation_failed");let Q=S.hexToBytes(z),Z=qJ(Q);if(J.expiration!==void 0)Z.set(YJ,[{data:new Uint8Array(w(BigInt(J.expiration))),wireType:E}]);if(J.data!==void 0)Z.set(XJ,[{data:S.hexToBytes(J.data),wireType:A}]);if(J.fee_limit!==void 0)Z.set(jJ,[{data:new Uint8Array(w(BigInt(J.fee_limit))),wireType:E}]);let Y=GJ(Z),q=S.bytesToHex(Y),W=S.bytesToHex(qz.sha256(Y));return{raw_data_hex:q,txID:W}}var qz,S,R,E=0,Xz=1,A=2,jz=5,YJ=8,XJ=10,jJ=18;var Wz=f(()=>{qz=require("@noble/hashes/sha2.js"),S=require("@noble/hashes/utils.js"),R=require("@swapkit/helpers")});function B(z){if(typeof z!=="string")return!1;try{let J=h.decode(z);return J.length===21&&J[0]===Uz}catch{return!1}}function Cz(z){return N.bytesToHex(h.decode(z))}function MJ(z){return h.decode(z).slice(1)}function kz(z){let J=p.secp256k1.getPublicKey(N.hexToBytes(z),!1),Q=Mz.keccak_256(J.slice(1)).slice(-20),Z=new Uint8Array(21);return Z[0]=Uz,Z.set(Q,1),h.encode(Z)}function Kz({txID:z,privateKey:J}){let Q=p.secp256k1.sign(N.hexToBytes(z),N.hexToBytes(J),{format:"recovered",prehash:!1}),Z=Q[0]??0,Y=N.bytesToHex(Q.slice(1,33)),q=N.bytesToHex(Q.slice(33,65)),W=(Z+27).toString(16).padStart(2,"0");return Y+q+W}function v({txID:z,raw_data_hex:J}){let Q=N.bytesToHex(l.sha256(N.hexToBytes(J)));if(z!==Q)throw new c.SwapKitError("toolbox_tron_invalid_transaction_integrity",{expected:Q,txID:z})}function OJ(z){return`000000000000000000000000${N.bytesToHex(MJ(z))}`}function UJ(z){let J=typeof z==="bigint"?z:BigInt(z);if(J<0n||J>=WJ)throw new c.SwapKitError("toolbox_tron_invalid_token_identifier",{identifier:J.toString()});return J.toString(16).padStart(64,"0")}function _(z){return z.map(({type:J,value:Q})=>J==="address"?OJ(Q):UJ(BigInt(Q))).join("")}function Pz(z){return N.bytesToHex(new TextEncoder().encode(z))}var p,l,Mz,N,Oz,c,h,Uz=65,WJ;var o=f(()=>{p=require("@noble/curves/secp256k1.js"),l=require("@noble/hashes/sha2.js"),Mz=require("@noble/hashes/sha3.js"),N=require("@noble/hashes/utils.js"),Oz=require("@scure/base"),c=require("@swapkit/helpers"),h=Oz.createBase58check(l.sha256),WJ=2n**256n});function Lz(){try{return C.getRPCUrlSync(C.Chain.Tron)}catch{return Hz}}function Nz(){let z=new AbortController,J=setTimeout(()=>z.abort(),HJ);return{cleanup:()=>clearTimeout(J),signal:z.signal}}async function V(z,J){let{signal:Q,cleanup:Z}=Nz();try{let Y=await fetch(`${Lz()}${z}`,{body:JSON.stringify(J),headers:{"Content-Type":"application/json"},method:"POST",signal:Q});if(!Y.ok)throw new C.SwapKitError("toolbox_tron_trongrid_api_error",{message:`${Y.status} ${Y.statusText} on ${z}`});return await Y.json()}finally{Z()}}async function Bz(z,J){let{signal:Q,cleanup:Z}=Nz();try{let Y=await fetch(`${J??Lz()}${z}`,{headers:{"Content-Type":"application/json"},signal:Q});if(!Y.ok)throw new C.SwapKitError("toolbox_tron_trongrid_api_error",{message:`${Y.status} ${Y.statusText} on ${z}`});return await Y.json()}finally{Z()}}async function Dz(z){if(!B(z))throw new C.SwapKitError("toolbox_tron_trongrid_api_error",{address:z,message:"Invalid address"});try{let J=await Bz(`/v1/accounts/${z}`,Hz);if(!(J.success&&J.data)||J.data.length===0)return;let Q;try{Q=Cz(z).toLowerCase()}catch{Q=z.toLowerCase()}let Z=J.data.find((Y)=>Y.address.toLowerCase()===Q);if(!Z)return;return{balance:Z.balance,trc20:Z.trc20||[]}}catch(J){if(J instanceof C.SwapKitError)throw J;throw new C.SwapKitError("toolbox_tron_trongrid_api_error",{address:z,message:J instanceof Error?J.message:"Unknown error"})}}async function Fz({from:z,to:J,amount:Q}){let Y=await V("/wallet/createtransaction",{amount:Q,owner_address:z,to_address:J,visible:!0});if(!Y.txID||!Y.raw_data_hex||!Y.raw_data)throw new C.SwapKitError("toolbox_tron_transaction_creation_failed");let W=Y.raw_data?.contract?.[0]?.parameter?.value;if(W?.to_address!==J||W?.owner_address!==z||W?.amount!==Q)throw new C.SwapKitError("toolbox_tron_transaction_creation_failed");return v(Y),Y}async function Rz({ownerAddress:z,contractAddress:J,functionSelector:Q,parameter:Z,feeLimit:Y,callValue:q=0}){let W=await V("/wallet/triggersmartcontract",{call_value:q,contract_address:J,fee_limit:Y,function_selector:Q,owner_address:z,parameter:Z,visible:!0});if(!W.result.result||!W.transaction?.txID||!W.transaction?.raw_data_hex)throw new C.SwapKitError("toolbox_tron_transaction_creation_failed");let K=W.transaction.raw_data?.contract?.[0]?.parameter?.value;if(K?.contract_address!==J||K?.owner_address!==z)throw new C.SwapKitError("toolbox_tron_transaction_creation_failed");return v(W.transaction),W.transaction}function Vz({ownerAddress:z,contractAddress:J,functionSelector:Q,parameter:Z}){return V("/wallet/triggerconstantcontract",{contract_address:J,function_selector:Q,owner_address:z,parameter:Z,visible:!0})}function LJ({ownerAddress:z,contractAddress:J,functionSelector:Q,parameter:Z}){return V("/wallet/estimateenergy",{contract_address:J,function_selector:Q,owner_address:z,parameter:Z,visible:!0})}async function x(z){try{let{result:J,txid:Q}=await V("/wallet/broadcasttransaction",{raw_data:z.raw_data,raw_data_hex:z.raw_data_hex,signature:z.signature,txID:z.txID,visible:z.visible});if(!J||!Q)throw new C.SwapKitError("toolbox_tron_token_transfer_failed");return Q}catch(J){throw new C.SwapKitError("toolbox_tron_broadcast_failed",{error:J})}}async function g(){let z={};try{let{chainParameter:J}=await Bz("/wallet/getchainparameters");for(let Q of J)z[Q.key]=Q.value}catch(J){C.warnOnce({condition:!0,id:"tron_chain_params_failed",warning:`Failed to fetch chain params, using defaults: ${J instanceof Error?J.message:J}`})}return{bandwidthFee:z.getTransactionFee??CJ,createAccountFee:z.getCreateNewAccountFeeInSystemContract??z.getCreateAccountFee??kJ,energyFee:z.getEnergyFee??KJ,memoFee:z.getMemoFee??PJ}}async function i(z){try{let J=await V("/wallet/getaccountresource",{address:z,visible:!0});return{bandwidth:{free:(J.freeNetLimit??600)-(J.freeNetUsed??0),total:J.NetLimit??0,used:J.NetUsed??0},energy:{total:J.EnergyLimit??0,used:J.EnergyUsed??0}}}catch(J){return C.warnOnce({condition:!0,id:"tron_account_resources_failed",warning:`Failed to fetch account resources, using defaults: ${J instanceof Error?J.message:J}`}),{bandwidth:{free:600,total:0,used:0},energy:{total:0,used:0}}}}async function b(z){try{let J=await V("/wallet/getaccount",{address:z,visible:!0});return J&&Object.keys(J).length>0}catch{return!1}}async function n(z){try{let J=await LJ({...z,ownerAddress:z.sender}),Q=J.energy_required??J.energyRequired;if(J.result&&!J.result.result)throw new C.SwapKitError("toolbox_tron_trongrid_api_error",{message:J.result.message||"estimateenergy failed"});if(Q!==void 0){if(Number.isFinite(Q)&&Q>0)return Q;throw new C.SwapKitError("toolbox_tron_trongrid_api_error",{message:"Invalid estimateenergy response"})}}catch(J){C.warnOnce({condition:!0,id:"tron_energy_estimation_failed",warning:`Failed to estimate energy with estimateenergy, falling back to triggerconstantcontract: ${J instanceof Error?J.message:J}`})}try{let{energy_used:J}=await Vz({...z,ownerAddress:z.sender});return J}catch(J){return C.warnOnce({condition:!0,id:"tron_energy_estimation_fallback_failed",warning:`Failed to estimate energy, using default: ${J instanceof Error?J.message:J}`}),65000}}async function Sz({assetAddress:z,owner:J,spender:Q}){let Z=_([{type:"address",value:J},{type:"address",value:Q}]),q=(await Vz({contractAddress:z,functionSelector:"allowance(address,address)",ownerAddress:Q,parameter:Z})).constant_result?.[0];if(!q)return 0n;try{return BigInt(`0x${q}`)}catch{return 0n}}var C,Hz="https://api.trongrid.io",CJ=1000,kJ=1e6,KJ=420,PJ=1e6,HJ=30000;var vz=f(()=>{o();C=require("@swapkit/helpers")});function yz({phrase:z,derivationPath:J}){let Q=xz.HDKey.fromMasterSeed(gz.mnemonicToSeedSync(z)).derive(J);if(!Q.privateKey)throw new $.SwapKitError("toolbox_tron_no_signer");return wz.bytesToHex(Q.privateKey)}function Ez({phrase:z,derivationPath:J,index:Q}){let Z=J||$.derivationPathToString($.updateDerivationPath($.NetworkDerivationPath[$.Chain.Tron],{index:Q||0}));return yz({derivationPath:Z,phrase:z})}function BJ({phrase:z,derivationPath:J}){let Q=yz({derivationPath:J,phrase:z}),Z=kz(Q);return{getAddress:()=>Promise.resolve(Z),signTransaction:(Y)=>{v(Y);let q=Kz({privateKey:Q,txID:Y.txID});return Promise.resolve({...Y,signature:[q]})}}}function fz({transaction:z,memo:J,expiration:Q,feeLimit:Z}){let Y={},q={};if(Z!==void 0&&z.raw_data)Y.fee_limit=Z,q.fee_limit=Z;if(J){let K=J.startsWith("0x")?J.replace(/^0x/,""):Pz(J);Y.data=K,q.data=K}if(Q){let K=z.raw_data.expiration+Q*1000;Y.expiration=K,q.expiration=K}if(Object.keys(Y).length===0)return z;let{raw_data_hex:W,txID:k}=Gz(z.raw_data_hex,Y);return{...z,raw_data:{...z.raw_data,...q},raw_data_hex:W,txID:k}}function Az(z={}){let J="index"in z?z.index||0:0,Q=$.derivationPathToString("derivationPath"in z&&z.derivationPath?z.derivationPath:$.updateDerivationPath($.NetworkDerivationPath[$.Chain.Tron],{index:J})),Z,Y=!1;function q(){if(Y)return Promise.resolve(Z);return Z=I.match(z).with({phrase:I.P.string},({phrase:X})=>BJ({derivationPath:Q,phrase:X})).with({signer:I.P.not(I.P.nullish)},({signer:X})=>X).otherwise(()=>{return}),Y=!0,Promise.resolve(Z)}async function W(){let X=await q();if(!X)throw new $.SwapKitError("toolbox_tron_no_signer");return X.getAddress()}async function k(X,j){let M=X||Iz,G=j??(await g()).energyFee,U=M*G,O=Math.ceil(U*1.5);return Math.min(Math.max(O,1e7),150000000)}async function K({contractAddress:X,functionSelector:j,parameter:M,sender:G,memo:U,expiration:O,extraEnergy:H=0}){let P=await n({contractAddress:X,functionSelector:j,parameter:M,sender:G}),L=await k(P+H),F=await Rz({contractAddress:X,feeLimit:L,functionSelector:j,ownerAddress:G,parameter:M});return fz({expiration:O,feeLimit:L,memo:U,transaction:F})}async function D(X){if(!B(X))return[$.AssetValue.from({chain:$.Chain.Tron})];try{let j=await Dz(X);if(!j)return[$.AssetValue.from({chain:$.Chain.Tron})];let M=[$.AssetValue.from({chain:$.Chain.Tron,fromBaseDecimal:6,value:String(j.balance)})],G=j.trc20?.find((U)=>(t in U));if(G){let U=G[t];M.push($.AssetValue.from({asset:`TRON.USDT-${t}`,fromBaseDecimal:6,value:U}))}return M}catch(j){return $.warnOnce({condition:!0,id:"tron_toolbox_get_balance_failed",warning:`Tron API getBalance failed: ${j instanceof Error?j.message:j}`}),[$.AssetValue.from({chain:$.Chain.Tron})]}}async function m({recipient:X,assetValue:j,memo:M,expiration:G}){if(!B(X))throw new $.SwapKitError("toolbox_tron_token_transfer_failed",{message:"invalid address"});let U=await q();if(!U)throw new $.SwapKitError("toolbox_tron_no_signer");try{let O=await W(),H=await r({assetValue:j,expiration:G,memo:M,recipient:X,sender:O}),P=await U.signTransaction(H),L=await x(P);if(!L)throw new $.SwapKitError("toolbox_tron_token_transfer_failed",{message:"broadcast failed"});return L}catch(O){throw new $.SwapKitError("toolbox_tron_token_transfer_failed",{message:O instanceof Error?O.message:String(O)})}}function a({requiredBandwidth:X,resources:j,feePerUnit:M}){let G=Math.max(0,j.free+j.total-j.used);return X>G?(X-G)*M:0}async function mz({memo:X,recipient:j,senderAddress:M}){let[G,U,O]=await Promise.all([g(),b(j),i(M)]),H=U?0:G.createAccountFee,P=a({feePerUnit:G.bandwidthFee,requiredBandwidth:_z,resources:O.bandwidth}),L=X?G.memoFee:0;return $.AssetValue.from({chain:$.Chain.Tron,fromBaseDecimal:$.BaseDecimal.TRON,value:H+P+L})}async function uz({assetValue:X,memo:j,recipient:M,senderAddress:G}){let U=X.address;if(!U)throw new $.SwapKitError("toolbox_tron_invalid_token_identifier",{identifier:X.toString()});let[O,H,P,L]=await Promise.all([g(),b(M),i(G),n({contractAddress:U,functionSelector:"transfer(address,uint256)",parameter:_([{type:"address",value:M},{type:"uint256",value:X.getBaseValue("string")}]),sender:G})]),zz=L+(H?0:d),nz=a({feePerUnit:O.bandwidthFee,requiredBandwidth:Tz,resources:P.bandwidth}),Jz=Math.max(0,P.energy.total-P.energy.used),dz=zz>Jz?(zz-Jz)*O.energyFee:0,tz=j?O.memoFee:0;return $.AssetValue.from({chain:$.Chain.Tron,fromBaseDecimal:$.BaseDecimal.TRON,value:nz+dz+tz})}async function pz({assetValue:X,memo:j,recipient:M}){let[G,U]=await Promise.all([g(),b(M)]);if(X.isGasAsset){let L=U?0:G.createAccountFee,F=j?G.memoFee:0;return $.AssetValue.from({chain:$.Chain.Tron,fromBaseDecimal:$.BaseDecimal.TRON,value:L+_z*G.bandwidthFee+F})}let H=await k(Iz+(U?0:d),G.energyFee),P=j?G.memoFee:0;return $.AssetValue.from({chain:$.Chain.Tron,fromBaseDecimal:$.BaseDecimal.TRON,value:H+Tz*G.bandwidthFee+P})}async function lz({assetValue:X,memo:j,recipient:M,sender:G}){let U=await q();try{let O=G?G:U?await W():void 0;if(!O)return pz({assetValue:X,memo:j,recipient:M});return X.isGasAsset?mz({memo:j,recipient:M,senderAddress:O}):uz({assetValue:X,memo:j,recipient:M,senderAddress:O})}catch(O){throw $.warnOnce({condition:!0,id:"tron_toolbox_fee_estimation_failed",warning:`Failed to calculate exact fee: ${O instanceof Error?O.message:O}`}),new $.SwapKitError("toolbox_fee_estimation_failed",{chain:$.Chain.Tron,error:O})}}async function r({recipient:X,assetValue:j,memo:M,sender:G,expiration:U}){if(!B(X)||!B(G))throw new $.SwapKitError("toolbox_tron_transaction_creation_failed",{message:"invalid address"});if(j.isGasAsset){let P=await Fz({amount:j.getBaseValue("number"),from:G,to:X});return fz({expiration:U,memo:M,transaction:P})}let O=j.address;if(!O)throw new $.SwapKitError("toolbox_tron_invalid_token_identifier",{identifier:j.toString()});let H=await b(X);return K({contractAddress:O,expiration:U,extraEnergy:H?0:d,functionSelector:"transfer(address,uint256)",memo:M,parameter:_([{type:"address",value:X},{type:"uint256",value:j.getBaseValue("string")}]),sender:G})}async function s(X){v(X);let j=await q();if(!j)throw new $.SwapKitError("toolbox_tron_no_signer");return j.signTransaction(X)}async function cz(X){let j=await s(X);return x(j)}function e({assetAddress:X,spenderAddress:j,from:M}){return Sz({assetAddress:X,owner:M,spender:j})}async function oz({assetAddress:X,spenderAddress:j,from:M,amount:G}){let U=await e({assetAddress:X,from:M,spenderAddress:j});if(!G)return U>0n;return U>=BigInt(G)}async function iz({assetAddress:X,spenderAddress:j,amount:M,from:G}){if(!B(X)||!B(j))throw new $.SwapKitError("toolbox_tron_approve_failed");let U=await q();if(!U)throw new $.SwapKitError("toolbox_tron_no_signer");let O=G||await W(),H=M!==void 0?BigInt(M).toString():NJ;try{let P=await K({contractAddress:X,functionSelector:"approve(address,uint256)",parameter:_([{type:"address",value:j},{type:"uint256",value:H}]),sender:O}),L=await U.signTransaction(P),F=await x(L);if(!F)throw new $.SwapKitError("toolbox_tron_approve_failed");return F}catch(P){if(P instanceof $.SwapKitError)throw P;throw new $.SwapKitError("toolbox_tron_approve_failed",{error:P})}}return{approve:iz,broadcastTransaction:x,createTransaction:r,estimateTransactionFee:lz,getAddress:W,getApprovedAmount:e,getBalance:D,getRpcUrl:()=>$.getRPCUrl($.Chain.Tron),isApproved:oz,signAndBroadcastTransaction:cz,signTransaction:s,transfer:m,validateAddress:B}}var wz,xz,gz,$,I,bz,_z=268,Iz=65000,d=25000,Tz=345,t="TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",NJ="115792089237316195423570985008687907853269984665640564039457584007913129639935";var hz=f(()=>{Wz();vz();o();wz=require("@noble/hashes/utils.js"),xz=require("@scure/bip32"),gz=require("@scure/bip39"),$=require("@swapkit/helpers"),I=require("ts-pattern"),bz=B});var DJ={};$J(DJ,{validateTronAddress:()=>bz,getTronToolbox:()=>Az,getTronPrivateKeyFromMnemonic:()=>Ez});module.exports=JJ(DJ);var FJ=f(()=>{hz()});FJ();
1
+ var sz=Object.create;var{getPrototypeOf:rz,defineProperty:T,getOwnPropertyNames:Zz,getOwnPropertyDescriptor:ez}=Object,$z=Object.prototype.hasOwnProperty;function Yz(z){return this[z]}var zJ,JJ,VJ=(z,J,Q)=>{var Z=z!=null&&typeof z==="object";if(Z){var Y=J?zJ??=new WeakMap:JJ??=new WeakMap,q=Y.get(z);if(q)return q}Q=z!=null?sz(rz(z)):{};let W=J||!z||!z.__esModule?T(Q,"default",{value:z,enumerable:!0}):Q;for(let k of Zz(z))if(!$z.call(W,k))T(W,k,{get:Yz.bind(z,k),enumerable:!0});if(Z)Y.set(z,W);return W},QJ=(z)=>{var J=(Qz??=new WeakMap).get(z),Q;if(J)return J;if(J=T({},"__esModule",{value:!0}),z&&typeof z==="object"||typeof z==="function"){for(var Z of Zz(z))if(!$z.call(J,Z))T(J,Z,{get:Yz.bind(z,Z),enumerable:!(Q=ez(z,Z))||Q.enumerable})}return Qz.set(z,J),J},Qz;var ZJ=(z)=>z;function $J(z,J){this[z]=ZJ.bind(null,J)}var YJ=(z,J)=>{for(var Q in J)T(z,Q,{get:J[Q],enumerable:!0,configurable:!0,set:$J.bind(J,Q)})};var f=(z,J)=>()=>(z&&(J=z(z=0)),J);function u(z,J){let Q=0n,Z=0n,Y=J;while(Y<z.length&&Y-J<10){let q=z[Y++];if(q===void 0)break;if(Q|=BigInt(q&127)<<Z,Z+=7n,(q&128)===0)return[Q,Y]}throw new R.SwapKitError("toolbox_tron_transaction_creation_failed")}function x(z){let J=[],Q=z<0n?z+2n**64n:z;while(Q>=128n)J.push(Number(Q&0x7fn)|128),Q>>=7n;return J.push(Number(Q)),J}function A(z,J,Q){let Z=z.get(J);if(Z)Z.push(Q);else z.set(J,[Q])}function GJ(z){let J=new Map,Q=0;while(Q<z.length){let[Z,Y]=u(z,Q);Q=Y;let q=Number(Z>>3n),W=Number(Z&7n);if(W===y){let[k,H]=u(z,Q);Q=H,A(J,q,{data:new Uint8Array(x(k)),wireType:y})}else if(W===h){let[k,H]=u(z,Q);Q=H;let D=Number(k);if(D<0||Q+D>z.length)throw new R.SwapKitError("toolbox_tron_transaction_creation_failed");let m=z.slice(Q,Q+D);Q+=D,A(J,q,{data:m,wireType:h})}else if(W===Xz){if(Q+8>z.length)throw new R.SwapKitError("toolbox_tron_transaction_creation_failed");let k=z.slice(Q,Q+8);Q+=8,A(J,q,{data:k,wireType:Xz})}else if(W===jz){if(Q+4>z.length)throw new R.SwapKitError("toolbox_tron_transaction_creation_failed");let k=z.slice(Q,Q+4);Q+=4,A(J,q,{data:k,wireType:jz})}else throw new R.SwapKitError("toolbox_tron_transaction_creation_failed")}return J}function WJ(z){let J=[];for(let[q,W]of[...z.entries()].sort(([k],[H])=>k-H))for(let{wireType:k,data:H}of W){let D=BigInt(q<<3|k);if(J.push(new Uint8Array(x(D))),k===h)J.push(new Uint8Array(x(BigInt(H.length))));J.push(H)}let Q=J.reduce((q,W)=>q+W.length,0),Z=new Uint8Array(Q),Y=0;for(let q of J)Z.set(q,Y),Y+=q.length;return Z}function Gz(z,J){if(!z||z.length%2!==0)throw new R.SwapKitError("toolbox_tron_transaction_creation_failed");let Q=S.hexToBytes(z),Z=GJ(Q);if(J.expiration!==void 0)Z.set(XJ,[{data:new Uint8Array(x(BigInt(J.expiration))),wireType:y}]);if(J.data!==void 0)Z.set(jJ,[{data:S.hexToBytes(J.data),wireType:h}]);if(J.fee_limit!==void 0)Z.set(qJ,[{data:new Uint8Array(x(BigInt(J.fee_limit))),wireType:y}]);let Y=WJ(Z),q=S.bytesToHex(Y),W=S.bytesToHex(qz.sha256(Y));return{raw_data_hex:q,txID:W}}var qz,S,R,y=0,Xz=1,h=2,jz=5,XJ=8,jJ=10,qJ=18;var Wz=f(()=>{qz=require("@noble/hashes/sha2.js"),S=require("@noble/hashes/utils.js"),R=require("@swapkit/helpers")});function B(z){if(typeof z!=="string")return!1;try{let J=E.decode(z);return J.length===21&&J[0]===Uz}catch{return!1}}function Cz(z){return N.bytesToHex(E.decode(z))}function OJ(z){return E.decode(z).slice(1)}function kz(z){let J=p.secp256k1.getPublicKey(N.hexToBytes(z),!1),Q=Mz.keccak_256(J.slice(1)).slice(-20),Z=new Uint8Array(21);return Z[0]=Uz,Z.set(Q,1),E.encode(Z)}function Hz({txID:z,privateKey:J}){let Q=p.secp256k1.sign(N.hexToBytes(z),N.hexToBytes(J),{format:"recovered",prehash:!1}),Z=Q[0]??0,Y=N.bytesToHex(Q.slice(1,33)),q=N.bytesToHex(Q.slice(33,65)),W=(Z+27).toString(16).padStart(2,"0");return Y+q+W}function _({txID:z,raw_data_hex:J}){let Q=N.bytesToHex(l.sha256(N.hexToBytes(J)));if(z!==Q)throw new c.SwapKitError("toolbox_tron_invalid_transaction_integrity",{expected:Q,txID:z})}function UJ(z){return`000000000000000000000000${N.bytesToHex(OJ(z))}`}function CJ(z){let J=typeof z==="bigint"?z:BigInt(z);if(J<0n||J>=MJ)throw new c.SwapKitError("toolbox_tron_invalid_token_identifier",{identifier:J.toString()});return J.toString(16).padStart(64,"0")}function I(z){return z.map(({type:J,value:Q})=>J==="address"?UJ(Q):CJ(BigInt(Q))).join("")}function Kz(z){return N.bytesToHex(new TextEncoder().encode(z))}var p,l,Mz,N,Oz,c,E,Uz=65,MJ;var o=f(()=>{p=require("@noble/curves/secp256k1.js"),l=require("@noble/hashes/sha2.js"),Mz=require("@noble/hashes/sha3.js"),N=require("@noble/hashes/utils.js"),Oz=require("@scure/base"),c=require("@swapkit/helpers"),E=Oz.createBase58check(l.sha256),MJ=2n**256n});function Nz(){try{return C.getRPCUrlSync(C.Chain.Tron)}catch{return Lz}}function Bz(){let z=new AbortController,J=setTimeout(()=>z.abort(),LJ);return{cleanup:()=>clearTimeout(J),signal:z.signal}}async function V(z,J){let{signal:Q,cleanup:Z}=Bz();try{let Y=await fetch(`${Nz()}${z}`,{body:JSON.stringify(J),headers:{"Content-Type":"application/json"},method:"POST",signal:Q});if(!Y.ok)throw new C.SwapKitError("toolbox_tron_trongrid_api_error",{message:`${Y.status} ${Y.statusText} on ${z}`});return await Y.json()}finally{Z()}}async function Dz(z,J){let{signal:Q,cleanup:Z}=Bz();try{let Y=await fetch(`${J??Nz()}${z}`,{headers:{"Content-Type":"application/json"},signal:Q});if(!Y.ok)throw new C.SwapKitError("toolbox_tron_trongrid_api_error",{message:`${Y.status} ${Y.statusText} on ${z}`});return await Y.json()}finally{Z()}}async function Fz(z){if(!B(z))throw new C.SwapKitError("toolbox_tron_trongrid_api_error",{address:z,message:"Invalid address"});try{let J=await Dz(`/v1/accounts/${z}`,Lz);if(!(J.success&&J.data)||J.data.length===0)return;let Q;try{Q=Cz(z).toLowerCase()}catch{Q=z.toLowerCase()}let Z=J.data.find((Y)=>Y.address.toLowerCase()===Q);if(!Z)return;return{balance:Z.balance,trc20:Z.trc20||[]}}catch(J){if(J instanceof C.SwapKitError)throw J;throw new C.SwapKitError("toolbox_tron_trongrid_api_error",{address:z,message:J instanceof Error?J.message:"Unknown error"})}}async function Rz({from:z,to:J,amount:Q}){let Y=await V("/wallet/createtransaction",{amount:Q,owner_address:z,to_address:J,visible:!0});if(!Y.txID||!Y.raw_data_hex||!Y.raw_data)throw new C.SwapKitError("toolbox_tron_transaction_creation_failed");let W=Y.raw_data?.contract?.[0]?.parameter?.value;if(W?.to_address!==J||W?.owner_address!==z||W?.amount!==Q)throw new C.SwapKitError("toolbox_tron_transaction_creation_failed");return _(Y),Y}async function Vz({ownerAddress:z,contractAddress:J,functionSelector:Q,parameter:Z,feeLimit:Y,callValue:q=0}){let W=await V("/wallet/triggersmartcontract",{call_value:q,contract_address:J,fee_limit:Y,function_selector:Q,owner_address:z,parameter:Z,visible:!0});if(!W.result.result||!W.transaction?.txID||!W.transaction?.raw_data_hex)throw new C.SwapKitError("toolbox_tron_transaction_creation_failed");let H=W.transaction.raw_data?.contract?.[0]?.parameter?.value;if(H?.contract_address!==J||H?.owner_address!==z)throw new C.SwapKitError("toolbox_tron_transaction_creation_failed");return _(W.transaction),W.transaction}function Sz({ownerAddress:z,contractAddress:J,functionSelector:Q,parameter:Z}){return V("/wallet/triggerconstantcontract",{contract_address:J,function_selector:Q,owner_address:z,parameter:Z,visible:!0})}function NJ({ownerAddress:z,contractAddress:J,functionSelector:Q,parameter:Z}){return V("/wallet/estimateenergy",{contract_address:J,function_selector:Q,owner_address:z,parameter:Z,visible:!0})}function Pz(z){let J=typeof z==="number"?z:typeof z==="string"?Number(z):Number.NaN;return Number.isFinite(J)&&J>0?J:void 0}async function w(z){try{let{result:J,txid:Q}=await V("/wallet/broadcasttransaction",{raw_data:z.raw_data,raw_data_hex:z.raw_data_hex,signature:z.signature,txID:z.txID,visible:z.visible});if(!J||!Q)throw new C.SwapKitError("toolbox_tron_token_transfer_failed");return Q}catch(J){throw new C.SwapKitError("toolbox_tron_broadcast_failed",{error:J})}}async function b(){let z={};try{let{chainParameter:J}=await Dz("/wallet/getchainparameters");for(let Q of J)z[Q.key]=Q.value}catch(J){C.warnOnce({condition:!0,id:"tron_chain_params_failed",warning:`Failed to fetch chain params, using defaults: ${J instanceof Error?J.message:J}`})}return{bandwidthFee:z.getTransactionFee??kJ,createAccountFee:z.getCreateNewAccountFeeInSystemContract??z.getCreateAccountFee??HJ,energyFee:z.getEnergyFee??KJ,memoFee:z.getMemoFee??PJ}}async function i(z){try{let J=await V("/wallet/getaccountresource",{address:z,visible:!0});return{bandwidth:{free:(J.freeNetLimit??600)-(J.freeNetUsed??0),total:J.NetLimit??0,used:J.NetUsed??0},energy:{total:J.EnergyLimit??0,used:J.EnergyUsed??0}}}catch(J){return C.warnOnce({condition:!0,id:"tron_account_resources_failed",warning:`Failed to fetch account resources, using defaults: ${J instanceof Error?J.message:J}`}),{bandwidth:{free:600,total:0,used:0},energy:{total:0,used:0}}}}async function g(z){try{let J=await V("/wallet/getaccount",{address:z,visible:!0});return J&&Object.keys(J).length>0}catch{return!1}}async function n(z){try{let J=await NJ({...z,ownerAddress:z.sender}),Q=J.energy_required??J.energyRequired;if(J.result&&!J.result.result)throw new C.SwapKitError("toolbox_tron_trongrid_api_error",{message:J.result.message||"estimateenergy failed"});if(Q!==void 0){let Z=Pz(Q);if(Z!==void 0)return Z;throw new C.SwapKitError("toolbox_tron_trongrid_api_error",{message:"Invalid estimateenergy response"})}}catch(J){C.warnOnce({condition:!0,id:"tron_energy_estimation_failed",warning:`Failed to estimate energy with estimateenergy, falling back to triggerconstantcontract: ${J instanceof Error?J.message:J}`})}try{let{energy_used:J}=await Sz({...z,ownerAddress:z.sender}),Q=Pz(J);if(Q!==void 0)return Q;throw new C.SwapKitError("toolbox_tron_trongrid_api_error",{message:"Invalid triggerconstantcontract energy response"})}catch(J){throw C.warnOnce({condition:!0,id:"tron_energy_estimation_fallback_failed",warning:`Failed to estimate energy: ${J instanceof Error?J.message:J}`}),new C.SwapKitError("toolbox_tron_trongrid_api_error",{message:`Unable to estimate contract energy: ${J instanceof Error?J.message:J}`})}}async function _z({assetAddress:z,owner:J,spender:Q}){let Z=I([{type:"address",value:J},{type:"address",value:Q}]),q=(await Sz({contractAddress:z,functionSelector:"allowance(address,address)",ownerAddress:Q,parameter:Z})).constant_result?.[0];if(!q)return 0n;try{return BigInt(`0x${q}`)}catch{return 0n}}var C,Lz="https://api.trongrid.io",kJ=1000,HJ=1e6,KJ=420,PJ=1e6,LJ=30000;var Iz=f(()=>{o();C=require("@swapkit/helpers")});function yz({phrase:z,derivationPath:J}){let Q=bz.HDKey.fromMasterSeed(gz.mnemonicToSeedSync(z)).derive(J);if(!Q.privateKey)throw new $.SwapKitError("toolbox_tron_no_signer");return wz.bytesToHex(Q.privateKey)}function hz({phrase:z,derivationPath:J,index:Q}){let Z=J||$.derivationPathToString($.updateDerivationPath($.NetworkDerivationPath[$.Chain.Tron],{index:Q||0}));return yz({derivationPath:Z,phrase:z})}function DJ({phrase:z,derivationPath:J}){let Q=yz({derivationPath:J,phrase:z}),Z=kz(Q);return{getAddress:()=>Promise.resolve(Z),signTransaction:(Y)=>{_(Y);let q=Hz({privateKey:Q,txID:Y.txID});return Promise.resolve({...Y,signature:[q]})}}}function xz({transaction:z,memo:J,expiration:Q,feeLimit:Z}){let Y={},q={};if(Z!==void 0&&z.raw_data)Y.fee_limit=Z,q.fee_limit=Z;if(J){let H=J.startsWith("0x")?J.replace(/^0x/,""):Kz(J);Y.data=H,q.data=H}if(Q){let H=z.raw_data.expiration+Q*1000;Y.expiration=H,q.expiration=H}if(Object.keys(Y).length===0)return z;let{raw_data_hex:W,txID:k}=Gz(z.raw_data_hex,Y);return{...z,raw_data:{...z.raw_data,...q},raw_data_hex:W,txID:k}}function Ez(z={}){let J="index"in z?z.index||0:0,Q=$.derivationPathToString("derivationPath"in z&&z.derivationPath?z.derivationPath:$.updateDerivationPath($.NetworkDerivationPath[$.Chain.Tron],{index:J})),Z,Y=!1;function q(){if(Y)return Promise.resolve(Z);return Z=v.match(z).with({phrase:v.P.string},({phrase:X})=>DJ({derivationPath:Q,phrase:X})).with({signer:v.P.not(v.P.nullish)},({signer:X})=>X).otherwise(()=>{return}),Y=!0,Promise.resolve(Z)}async function W(){let X=await q();if(!X)throw new $.SwapKitError("toolbox_tron_no_signer");return X.getAddress()}async function k(X,j){let M=X||Tz,G=j??(await b()).energyFee,U=M*G,O=Math.ceil(U*1.5);return Math.min(Math.max(O,1e7),150000000)}async function H({contractAddress:X,functionSelector:j,parameter:M,sender:G,memo:U,expiration:O,extraEnergy:P=0}){let K=await n({contractAddress:X,functionSelector:j,parameter:M,sender:G}),L=await k(K+P),F=await Vz({contractAddress:X,feeLimit:L,functionSelector:j,ownerAddress:G,parameter:M});return xz({expiration:O,feeLimit:L,memo:U,transaction:F})}async function D(X){if(!B(X))return[$.AssetValue.from({chain:$.Chain.Tron})];try{let j=await Fz(X);if(!j)return[$.AssetValue.from({chain:$.Chain.Tron})];let M=[$.AssetValue.from({chain:$.Chain.Tron,fromBaseDecimal:6,value:String(j.balance)})],G=j.trc20?.find((U)=>(t in U));if(G){let U=G[t];M.push($.AssetValue.from({asset:`TRON.USDT-${t}`,fromBaseDecimal:6,value:U}))}return M}catch(j){return $.warnOnce({condition:!0,id:"tron_toolbox_get_balance_failed",warning:`Tron API getBalance failed: ${j instanceof Error?j.message:j}`}),[$.AssetValue.from({chain:$.Chain.Tron})]}}async function m({recipient:X,assetValue:j,memo:M,expiration:G}){if(!B(X))throw new $.SwapKitError("toolbox_tron_token_transfer_failed",{message:"invalid address"});let U=await q();if(!U)throw new $.SwapKitError("toolbox_tron_no_signer");try{let O=await W(),P=await s({assetValue:j,expiration:G,memo:M,recipient:X,sender:O}),K=await U.signTransaction(P),L=await w(K);if(!L)throw new $.SwapKitError("toolbox_tron_token_transfer_failed",{message:"broadcast failed"});return L}catch(O){throw new $.SwapKitError("toolbox_tron_token_transfer_failed",{message:O instanceof Error?O.message:String(O)})}}function a({requiredBandwidth:X,resources:j,feePerUnit:M}){let G=Math.max(0,j.free+j.total-j.used);return X>G?(X-G)*M:0}async function uz({memo:X,recipient:j,senderAddress:M}){let[G,U,O]=await Promise.all([b(),g(j),i(M)]),P=U?0:G.createAccountFee,K=a({feePerUnit:G.bandwidthFee,requiredBandwidth:vz,resources:O.bandwidth}),L=X?G.memoFee:0;return $.AssetValue.from({chain:$.Chain.Tron,fromBaseDecimal:$.BaseDecimal.TRON,value:P+K+L})}async function pz({assetValue:X,memo:j,recipient:M,senderAddress:G}){let U=X.address;if(!U)throw new $.SwapKitError("toolbox_tron_invalid_token_identifier",{identifier:X.toString()});let[O,P,K,L]=await Promise.all([b(),g(M),i(G),n({contractAddress:U,functionSelector:"transfer(address,uint256)",parameter:I([{type:"address",value:M},{type:"uint256",value:X.getBaseValue("string")}]),sender:G})]),zz=L+(P?0:d),dz=a({feePerUnit:O.bandwidthFee,requiredBandwidth:fz,resources:K.bandwidth}),Jz=Math.max(0,K.energy.total-K.energy.used),tz=zz>Jz?(zz-Jz)*O.energyFee:0,az=j?O.memoFee:0;return $.AssetValue.from({chain:$.Chain.Tron,fromBaseDecimal:$.BaseDecimal.TRON,value:dz+tz+az})}async function lz({assetValue:X,memo:j,recipient:M}){let[G,U]=await Promise.all([b(),g(M)]);if(X.isGasAsset){let L=U?0:G.createAccountFee,F=j?G.memoFee:0;return $.AssetValue.from({chain:$.Chain.Tron,fromBaseDecimal:$.BaseDecimal.TRON,value:L+vz*G.bandwidthFee+F})}let P=await k(Tz+(U?0:d),G.energyFee),K=j?G.memoFee:0;return $.AssetValue.from({chain:$.Chain.Tron,fromBaseDecimal:$.BaseDecimal.TRON,value:P+fz*G.bandwidthFee+K})}async function cz({assetValue:X,memo:j,recipient:M,sender:G}){let U=await q();try{let O=G?G:U?await W():void 0;if(!O)return lz({assetValue:X,memo:j,recipient:M});return X.isGasAsset?uz({memo:j,recipient:M,senderAddress:O}):pz({assetValue:X,memo:j,recipient:M,senderAddress:O})}catch(O){throw $.warnOnce({condition:!0,id:"tron_toolbox_fee_estimation_failed",warning:`Failed to calculate exact fee: ${O instanceof Error?O.message:O}`}),new $.SwapKitError("toolbox_fee_estimation_failed",{chain:$.Chain.Tron,error:O})}}async function s({recipient:X,assetValue:j,memo:M,sender:G,expiration:U}){if(!B(X)||!B(G))throw new $.SwapKitError("toolbox_tron_transaction_creation_failed",{message:"invalid address"});if(j.isGasAsset){let K=await Rz({amount:j.getBaseValue("number"),from:G,to:X});return xz({expiration:U,memo:M,transaction:K})}let O=j.address;if(!O)throw new $.SwapKitError("toolbox_tron_invalid_token_identifier",{identifier:j.toString()});let P=await g(X);return H({contractAddress:O,expiration:U,extraEnergy:P?0:d,functionSelector:"transfer(address,uint256)",memo:M,parameter:I([{type:"address",value:X},{type:"uint256",value:j.getBaseValue("string")}]),sender:G})}async function r(X){_(X);let j=await q();if(!j)throw new $.SwapKitError("toolbox_tron_no_signer");return j.signTransaction(X)}async function oz(X){let j=await r(X);return w(j)}function e({assetAddress:X,spenderAddress:j,from:M}){return _z({assetAddress:X,owner:M,spender:j})}async function iz({assetAddress:X,spenderAddress:j,from:M,amount:G}){let U=await e({assetAddress:X,from:M,spenderAddress:j});if(!G)return U>0n;return U>=BigInt(G)}async function nz({assetAddress:X,spenderAddress:j,amount:M,from:G}){if(!B(X)||!B(j))throw new $.SwapKitError("toolbox_tron_approve_failed");let U=await q();if(!U)throw new $.SwapKitError("toolbox_tron_no_signer");let O=G||await W(),P=M!==void 0?BigInt(M).toString():BJ;try{let K=await H({contractAddress:X,functionSelector:"approve(address,uint256)",parameter:I([{type:"address",value:j},{type:"uint256",value:P}]),sender:O}),L=await U.signTransaction(K),F=await w(L);if(!F)throw new $.SwapKitError("toolbox_tron_approve_failed");return F}catch(K){if(K instanceof $.SwapKitError)throw K;throw new $.SwapKitError("toolbox_tron_approve_failed",{error:K})}}return{approve:nz,broadcastTransaction:w,createTransaction:s,estimateTransactionFee:cz,getAddress:W,getApprovedAmount:e,getBalance:D,getRpcUrl:()=>$.getRPCUrl($.Chain.Tron),isApproved:iz,signAndBroadcastTransaction:oz,signTransaction:r,transfer:m,validateAddress:B}}var wz,bz,gz,$,v,Az,vz=268,Tz=65000,d=25000,fz=345,t="TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",BJ="115792089237316195423570985008687907853269984665640564039457584007913129639935";var mz=f(()=>{Wz();Iz();o();wz=require("@noble/hashes/utils.js"),bz=require("@scure/bip32"),gz=require("@scure/bip39"),$=require("@swapkit/helpers"),v=require("ts-pattern"),Az=B});var FJ={};YJ(FJ,{validateTronAddress:()=>Az,getTronToolbox:()=>Ez,getTronPrivateKeyFromMnemonic:()=>hz});module.exports=QJ(FJ);var RJ=f(()=>{mz()});RJ();
@@ -1 +1 @@
1
- var tz=Object.defineProperty;var az=(J)=>J;function rz(J,z){this[J]=az.bind(null,z)}var sz=(J,z)=>{for(var Q in z)tz(J,Q,{get:z[Q],enumerable:!0,configurable:!0,set:rz.bind(z,Q)})};var T=(J,z)=>()=>(J&&(z=J(J=0)),z);var _J=((J)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(J,{get:(z,Q)=>(typeof require<"u"?require:z)[Q]}):J)(function(J){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+J+'" is not supported')});import{sha256 as ez}from"@noble/hashes/sha2.js";import{bytesToHex as Qz,hexToBytes as Zz}from"@noble/hashes/utils.js";import{SwapKitError as S}from"@swapkit/helpers";function l(J,z){let Q=0n,Z=0n,$=z;while($<J.length&&$-z<10){let j=J[$++];if(j===void 0)break;if(Q|=BigInt(j&127)<<Z,Z+=7n,(j&128)===0)return[Q,$]}throw new S("toolbox_tron_transaction_creation_failed")}function f(J){let z=[],Q=J<0n?J+2n**64n:J;while(Q>=128n)z.push(Number(Q&0x7fn)|128),Q>>=7n;return z.push(Number(Q)),z}function b(J,z,Q){let Z=J.get(z);if(Z)Z.push(Q);else J.set(z,[Q])}function ZJ(J){let z=new Map,Q=0;while(Q<J.length){let[Z,$]=l(J,Q);Q=$;let j=Number(Z>>3n),W=Number(Z&7n);if(W===y){let[k,U]=l(J,Q);Q=U,b(z,j,{data:new Uint8Array(f(k)),wireType:y})}else if(W===E){let[k,U]=l(J,Q);Q=U;let F=Number(k);if(F<0||Q+F>J.length)throw new S("toolbox_tron_transaction_creation_failed");let p=J.slice(Q,Q+F);Q+=F,b(z,j,{data:p,wireType:E})}else if(W===$z){if(Q+8>J.length)throw new S("toolbox_tron_transaction_creation_failed");let k=J.slice(Q,Q+8);Q+=8,b(z,j,{data:k,wireType:$z})}else if(W===Yz){if(Q+4>J.length)throw new S("toolbox_tron_transaction_creation_failed");let k=J.slice(Q,Q+4);Q+=4,b(z,j,{data:k,wireType:Yz})}else throw new S("toolbox_tron_transaction_creation_failed")}return z}function $J(J){let z=[];for(let[j,W]of[...J.entries()].sort(([k],[U])=>k-U))for(let{wireType:k,data:U}of W){let F=BigInt(j<<3|k);if(z.push(new Uint8Array(f(F))),k===E)z.push(new Uint8Array(f(BigInt(U.length))));z.push(U)}let Q=z.reduce((j,W)=>j+W.length,0),Z=new Uint8Array(Q),$=0;for(let j of z)Z.set(j,$),$+=j.length;return Z}function Xz(J,z){if(!J||J.length%2!==0)throw new S("toolbox_tron_transaction_creation_failed");let Q=Zz(J),Z=ZJ(Q);if(z.expiration!==void 0)Z.set(zJ,[{data:new Uint8Array(f(BigInt(z.expiration))),wireType:y}]);if(z.data!==void 0)Z.set(JJ,[{data:Zz(z.data),wireType:E}]);if(z.fee_limit!==void 0)Z.set(QJ,[{data:new Uint8Array(f(BigInt(z.fee_limit))),wireType:y}]);let $=$J(Z),j=Qz($),W=Qz(ez($));return{raw_data_hex:j,txID:W}}var y=0,$z=1,E=2,Yz=5,zJ=8,JJ=10,QJ=18;var jz=()=>{};import{secp256k1 as qz}from"@noble/curves/secp256k1.js";import{sha256 as Gz}from"@noble/hashes/sha2.js";import{keccak_256 as YJ}from"@noble/hashes/sha3.js";import{bytesToHex as v,hexToBytes as A}from"@noble/hashes/utils.js";import{createBase58check as XJ}from"@scure/base";import{SwapKitError as Wz}from"@swapkit/helpers";function B(J){if(typeof J!=="string")return!1;try{let z=h.decode(J);return z.length===21&&z[0]===Mz}catch{return!1}}function Oz(J){return v(h.decode(J))}function qJ(J){return h.decode(J).slice(1)}function Uz(J){let z=qz.getPublicKey(A(J),!1),Q=YJ(z.slice(1)).slice(-20),Z=new Uint8Array(21);return Z[0]=Mz,Z.set(Q,1),h.encode(Z)}function Cz({txID:J,privateKey:z}){let Q=qz.sign(A(J),A(z),{format:"recovered",prehash:!1}),Z=Q[0]??0,$=v(Q.slice(1,33)),j=v(Q.slice(33,65)),W=(Z+27).toString(16).padStart(2,"0");return $+j+W}function _({txID:J,raw_data_hex:z}){let Q=v(Gz(A(z)));if(J!==Q)throw new Wz("toolbox_tron_invalid_transaction_integrity",{expected:Q,txID:J})}function GJ(J){return`000000000000000000000000${v(qJ(J))}`}function WJ(J){let z=typeof J==="bigint"?J:BigInt(J);if(z<0n||z>=jJ)throw new Wz("toolbox_tron_invalid_token_identifier",{identifier:z.toString()});return z.toString(16).padStart(64,"0")}function I(J){return J.map(({type:z,value:Q})=>z==="address"?GJ(Q):WJ(BigInt(Q))).join("")}function kz(J){return v(new TextEncoder().encode(J))}var h,Mz=65,jJ;var c=T(()=>{h=XJ(Gz),jJ=2n**256n});import{Chain as MJ,getRPCUrlSync as OJ,SwapKitError as L,warnOnce as m}from"@swapkit/helpers";function Pz(){try{return OJ(MJ.Tron)}catch{return Kz}}function Hz(){let J=new AbortController,z=setTimeout(()=>J.abort(),PJ);return{cleanup:()=>clearTimeout(z),signal:J.signal}}async function V(J,z){let{signal:Q,cleanup:Z}=Hz();try{let $=await fetch(`${Pz()}${J}`,{body:JSON.stringify(z),headers:{"Content-Type":"application/json"},method:"POST",signal:Q});if(!$.ok)throw new L("toolbox_tron_trongrid_api_error",{message:`${$.status} ${$.statusText} on ${J}`});return await $.json()}finally{Z()}}async function Lz(J,z){let{signal:Q,cleanup:Z}=Hz();try{let $=await fetch(`${z??Pz()}${J}`,{headers:{"Content-Type":"application/json"},signal:Q});if(!$.ok)throw new L("toolbox_tron_trongrid_api_error",{message:`${$.status} ${$.statusText} on ${J}`});return await $.json()}finally{Z()}}async function Nz(J){if(!B(J))throw new L("toolbox_tron_trongrid_api_error",{address:J,message:"Invalid address"});try{let z=await Lz(`/v1/accounts/${J}`,Kz);if(!(z.success&&z.data)||z.data.length===0)return;let Q;try{Q=Oz(J).toLowerCase()}catch{Q=J.toLowerCase()}let Z=z.data.find(($)=>$.address.toLowerCase()===Q);if(!Z)return;return{balance:Z.balance,trc20:Z.trc20||[]}}catch(z){if(z instanceof L)throw z;throw new L("toolbox_tron_trongrid_api_error",{address:J,message:z instanceof Error?z.message:"Unknown error"})}}async function Bz({from:J,to:z,amount:Q}){let $=await V("/wallet/createtransaction",{amount:Q,owner_address:J,to_address:z,visible:!0});if(!$.txID||!$.raw_data_hex||!$.raw_data)throw new L("toolbox_tron_transaction_creation_failed");let W=$.raw_data?.contract?.[0]?.parameter?.value;if(W?.to_address!==z||W?.owner_address!==J||W?.amount!==Q)throw new L("toolbox_tron_transaction_creation_failed");return _($),$}async function Dz({ownerAddress:J,contractAddress:z,functionSelector:Q,parameter:Z,feeLimit:$,callValue:j=0}){let W=await V("/wallet/triggersmartcontract",{call_value:j,contract_address:z,fee_limit:$,function_selector:Q,owner_address:J,parameter:Z,visible:!0});if(!W.result.result||!W.transaction?.txID||!W.transaction?.raw_data_hex)throw new L("toolbox_tron_transaction_creation_failed");let U=W.transaction.raw_data?.contract?.[0]?.parameter?.value;if(U?.contract_address!==z||U?.owner_address!==J)throw new L("toolbox_tron_transaction_creation_failed");return _(W.transaction),W.transaction}function Fz({ownerAddress:J,contractAddress:z,functionSelector:Q,parameter:Z}){return V("/wallet/triggerconstantcontract",{contract_address:z,function_selector:Q,owner_address:J,parameter:Z,visible:!0})}function HJ({ownerAddress:J,contractAddress:z,functionSelector:Q,parameter:Z}){return V("/wallet/estimateenergy",{contract_address:z,function_selector:Q,owner_address:J,parameter:Z,visible:!0})}async function w(J){try{let{result:z,txid:Q}=await V("/wallet/broadcasttransaction",{raw_data:J.raw_data,raw_data_hex:J.raw_data_hex,signature:J.signature,txID:J.txID,visible:J.visible});if(!z||!Q)throw new L("toolbox_tron_token_transfer_failed");return Q}catch(z){throw new L("toolbox_tron_broadcast_failed",{error:z})}}async function x(){let J={};try{let{chainParameter:z}=await Lz("/wallet/getchainparameters");for(let Q of z)J[Q.key]=Q.value}catch(z){m({condition:!0,id:"tron_chain_params_failed",warning:`Failed to fetch chain params, using defaults: ${z instanceof Error?z.message:z}`})}return{bandwidthFee:J.getTransactionFee??UJ,createAccountFee:J.getCreateNewAccountFeeInSystemContract??J.getCreateAccountFee??CJ,energyFee:J.getEnergyFee??kJ,memoFee:J.getMemoFee??KJ}}async function o(J){try{let z=await V("/wallet/getaccountresource",{address:J,visible:!0});return{bandwidth:{free:(z.freeNetLimit??600)-(z.freeNetUsed??0),total:z.NetLimit??0,used:z.NetUsed??0},energy:{total:z.EnergyLimit??0,used:z.EnergyUsed??0}}}catch(z){return m({condition:!0,id:"tron_account_resources_failed",warning:`Failed to fetch account resources, using defaults: ${z instanceof Error?z.message:z}`}),{bandwidth:{free:600,total:0,used:0},energy:{total:0,used:0}}}}async function g(J){try{let z=await V("/wallet/getaccount",{address:J,visible:!0});return z&&Object.keys(z).length>0}catch{return!1}}async function i(J){try{let z=await HJ({...J,ownerAddress:J.sender}),Q=z.energy_required??z.energyRequired;if(z.result&&!z.result.result)throw new L("toolbox_tron_trongrid_api_error",{message:z.result.message||"estimateenergy failed"});if(Q!==void 0){if(Number.isFinite(Q)&&Q>0)return Q;throw new L("toolbox_tron_trongrid_api_error",{message:"Invalid estimateenergy response"})}}catch(z){m({condition:!0,id:"tron_energy_estimation_failed",warning:`Failed to estimate energy with estimateenergy, falling back to triggerconstantcontract: ${z instanceof Error?z.message:z}`})}try{let{energy_used:z}=await Fz({...J,ownerAddress:J.sender});return z}catch(z){return m({condition:!0,id:"tron_energy_estimation_fallback_failed",warning:`Failed to estimate energy, using default: ${z instanceof Error?z.message:z}`}),65000}}async function Rz({assetAddress:J,owner:z,spender:Q}){let Z=I([{type:"address",value:z},{type:"address",value:Q}]),j=(await Fz({contractAddress:J,functionSelector:"allowance(address,address)",ownerAddress:Q,parameter:Z})).constant_result?.[0];if(!j)return 0n;try{return BigInt(`0x${j}`)}catch{return 0n}}var Kz="https://api.trongrid.io",UJ=1000,CJ=1e6,kJ=420,KJ=1e6,PJ=30000;var Vz=T(()=>{c()});import{bytesToHex as LJ}from"@noble/hashes/utils.js";import{HDKey as NJ}from"@scure/bip32";import{mnemonicToSeedSync as BJ}from"@scure/bip39";import{AssetValue as D,BaseDecimal as u,Chain as N,derivationPathToString as fz,getRPCUrl as DJ,NetworkDerivationPath as wz,SwapKitError as K,updateDerivationPath as xz,warnOnce as Sz}from"@swapkit/helpers";import{match as FJ,P as n}from"ts-pattern";function bz({phrase:J,derivationPath:z}){let Q=NJ.fromMasterSeed(BJ(J)).derive(z);if(!Q.privateKey)throw new K("toolbox_tron_no_signer");return LJ(Q.privateKey)}function yz({phrase:J,derivationPath:z,index:Q}){let Z=z||fz(xz(wz[N.Tron],{index:Q||0}));return bz({derivationPath:Z,phrase:J})}function VJ({phrase:J,derivationPath:z}){let Q=bz({derivationPath:z,phrase:J}),Z=Uz(Q);return{getAddress:()=>Promise.resolve(Z),signTransaction:($)=>{_($);let j=Cz({privateKey:Q,txID:$.txID});return Promise.resolve({...$,signature:[j]})}}}function Tz({transaction:J,memo:z,expiration:Q,feeLimit:Z}){let $={},j={};if(Z!==void 0&&J.raw_data)$.fee_limit=Z,j.fee_limit=Z;if(z){let U=z.startsWith("0x")?z.replace(/^0x/,""):kz(z);$.data=U,j.data=U}if(Q){let U=J.raw_data.expiration+Q*1000;$.expiration=U,j.expiration=U}if(Object.keys($).length===0)return J;let{raw_data_hex:W,txID:k}=Xz(J.raw_data_hex,$);return{...J,raw_data:{...J.raw_data,...j},raw_data_hex:W,txID:k}}function Ez(J={}){let z="index"in J?J.index||0:0,Q=fz("derivationPath"in J&&J.derivationPath?J.derivationPath:xz(wz[N.Tron],{index:z})),Z,$=!1;function j(){if($)return Promise.resolve(Z);return Z=FJ(J).with({phrase:n.string},({phrase:Y})=>VJ({derivationPath:Q,phrase:Y})).with({signer:n.not(n.nullish)},({signer:Y})=>Y).otherwise(()=>{return}),$=!0,Promise.resolve(Z)}async function W(){let Y=await j();if(!Y)throw new K("toolbox_tron_no_signer");return Y.getAddress()}async function k(Y,X){let G=Y||_z,q=X??(await x()).energyFee,O=G*q,M=Math.ceil(O*1.5);return Math.min(Math.max(M,1e7),150000000)}async function U({contractAddress:Y,functionSelector:X,parameter:G,sender:q,memo:O,expiration:M,extraEnergy:P=0}){let C=await i({contractAddress:Y,functionSelector:X,parameter:G,sender:q}),H=await k(C+P),R=await Dz({contractAddress:Y,feeLimit:H,functionSelector:X,ownerAddress:q,parameter:G});return Tz({expiration:M,feeLimit:H,memo:O,transaction:R})}async function F(Y){if(!B(Y))return[D.from({chain:N.Tron})];try{let X=await Nz(Y);if(!X)return[D.from({chain:N.Tron})];let G=[D.from({chain:N.Tron,fromBaseDecimal:6,value:String(X.balance)})],q=X.trc20?.find((O)=>(t in O));if(q){let O=q[t];G.push(D.from({asset:`TRON.USDT-${t}`,fromBaseDecimal:6,value:O}))}return G}catch(X){return Sz({condition:!0,id:"tron_toolbox_get_balance_failed",warning:`Tron API getBalance failed: ${X instanceof Error?X.message:X}`}),[D.from({chain:N.Tron})]}}async function p({recipient:Y,assetValue:X,memo:G,expiration:q}){if(!B(Y))throw new K("toolbox_tron_token_transfer_failed",{message:"invalid address"});let O=await j();if(!O)throw new K("toolbox_tron_no_signer");try{let M=await W(),P=await r({assetValue:X,expiration:q,memo:G,recipient:Y,sender:M}),C=await O.signTransaction(P),H=await w(C);if(!H)throw new K("toolbox_tron_token_transfer_failed",{message:"broadcast failed"});return H}catch(M){throw new K("toolbox_tron_token_transfer_failed",{message:M instanceof Error?M.message:String(M)})}}function a({requiredBandwidth:Y,resources:X,feePerUnit:G}){let q=Math.max(0,X.free+X.total-X.used);return Y>q?(Y-q)*G:0}async function hz({memo:Y,recipient:X,senderAddress:G}){let[q,O,M]=await Promise.all([x(),g(X),o(G)]),P=O?0:q.createAccountFee,C=a({feePerUnit:q.bandwidthFee,requiredBandwidth:vz,resources:M.bandwidth}),H=Y?q.memoFee:0;return D.from({chain:N.Tron,fromBaseDecimal:u.TRON,value:P+C+H})}async function mz({assetValue:Y,memo:X,recipient:G,senderAddress:q}){let O=Y.address;if(!O)throw new K("toolbox_tron_invalid_token_identifier",{identifier:Y.toString()});let[M,P,C,H]=await Promise.all([x(),g(G),o(q),i({contractAddress:O,functionSelector:"transfer(address,uint256)",parameter:I([{type:"address",value:G},{type:"uint256",value:Y.getBaseValue("string")}]),sender:q})]),zz=H+(P?0:d),iz=a({feePerUnit:M.bandwidthFee,requiredBandwidth:Iz,resources:C.bandwidth}),Jz=Math.max(0,C.energy.total-C.energy.used),nz=zz>Jz?(zz-Jz)*M.energyFee:0,dz=X?M.memoFee:0;return D.from({chain:N.Tron,fromBaseDecimal:u.TRON,value:iz+nz+dz})}async function uz({assetValue:Y,memo:X,recipient:G}){let[q,O]=await Promise.all([x(),g(G)]);if(Y.isGasAsset){let H=O?0:q.createAccountFee,R=X?q.memoFee:0;return D.from({chain:N.Tron,fromBaseDecimal:u.TRON,value:H+vz*q.bandwidthFee+R})}let P=await k(_z+(O?0:d),q.energyFee),C=X?q.memoFee:0;return D.from({chain:N.Tron,fromBaseDecimal:u.TRON,value:P+Iz*q.bandwidthFee+C})}async function pz({assetValue:Y,memo:X,recipient:G,sender:q}){let O=await j();try{let M=q?q:O?await W():void 0;if(!M)return uz({assetValue:Y,memo:X,recipient:G});return Y.isGasAsset?hz({memo:X,recipient:G,senderAddress:M}):mz({assetValue:Y,memo:X,recipient:G,senderAddress:M})}catch(M){throw Sz({condition:!0,id:"tron_toolbox_fee_estimation_failed",warning:`Failed to calculate exact fee: ${M instanceof Error?M.message:M}`}),new K("toolbox_fee_estimation_failed",{chain:N.Tron,error:M})}}async function r({recipient:Y,assetValue:X,memo:G,sender:q,expiration:O}){if(!B(Y)||!B(q))throw new K("toolbox_tron_transaction_creation_failed",{message:"invalid address"});if(X.isGasAsset){let C=await Bz({amount:X.getBaseValue("number"),from:q,to:Y});return Tz({expiration:O,memo:G,transaction:C})}let M=X.address;if(!M)throw new K("toolbox_tron_invalid_token_identifier",{identifier:X.toString()});let P=await g(Y);return U({contractAddress:M,expiration:O,extraEnergy:P?0:d,functionSelector:"transfer(address,uint256)",memo:G,parameter:I([{type:"address",value:Y},{type:"uint256",value:X.getBaseValue("string")}]),sender:q})}async function s(Y){_(Y);let X=await j();if(!X)throw new K("toolbox_tron_no_signer");return X.signTransaction(Y)}async function lz(Y){let X=await s(Y);return w(X)}function e({assetAddress:Y,spenderAddress:X,from:G}){return Rz({assetAddress:Y,owner:G,spender:X})}async function cz({assetAddress:Y,spenderAddress:X,from:G,amount:q}){let O=await e({assetAddress:Y,from:G,spenderAddress:X});if(!q)return O>0n;return O>=BigInt(q)}async function oz({assetAddress:Y,spenderAddress:X,amount:G,from:q}){if(!B(Y)||!B(X))throw new K("toolbox_tron_approve_failed");let O=await j();if(!O)throw new K("toolbox_tron_no_signer");let M=q||await W(),P=G!==void 0?BigInt(G).toString():RJ;try{let C=await U({contractAddress:Y,functionSelector:"approve(address,uint256)",parameter:I([{type:"address",value:X},{type:"uint256",value:P}]),sender:M}),H=await O.signTransaction(C),R=await w(H);if(!R)throw new K("toolbox_tron_approve_failed");return R}catch(C){if(C instanceof K)throw C;throw new K("toolbox_tron_approve_failed",{error:C})}}return{approve:oz,broadcastTransaction:w,createTransaction:r,estimateTransactionFee:pz,getAddress:W,getApprovedAmount:e,getBalance:F,getRpcUrl:()=>DJ(N.Tron),isApproved:cz,signAndBroadcastTransaction:lz,signTransaction:s,transfer:p,validateAddress:B}}var gz,vz=268,_z=65000,d=25000,Iz=345,t="TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",RJ="115792089237316195423570985008687907853269984665640564039457584007913129639935";var Az=T(()=>{jz();Vz();c();gz=B});var SJ={};sz(SJ,{validateTronAddress:()=>gz,getTronToolbox:()=>Ez,getTronPrivateKeyFromMnemonic:()=>yz});var vJ=T(()=>{Az()});vJ();export{gz as validateTronAddress,Ez as getTronToolbox,yz as getTronPrivateKeyFromMnemonic};
1
+ import"../../chunk-ntbvmmch.js";import{bytesToHex as qJ}from"@noble/hashes/utils.js";import{HDKey as GJ}from"@scure/bip32";import{mnemonicToSeedSync as WJ}from"@scure/bip39";import{AssetValue as D,BaseDecimal as m,Chain as N,derivationPathToString as Iz,getRPCUrl as MJ,NetworkDerivationPath as vz,SwapKitError as H,updateDerivationPath as Tz,warnOnce as Fz}from"@swapkit/helpers";import{match as OJ,P as o}from"ts-pattern";import{sha256 as pz}from"@noble/hashes/sha2.js";import{bytesToHex as zz,hexToBytes as Jz}from"@noble/hashes/utils.js";import{SwapKitError as S}from"@swapkit/helpers";var g=0,Qz=1,A=2,Zz=5,lz=8,cz=10,oz=18;function p(J,z){let Q=0n,Z=0n,$=z;while($<J.length&&$-z<10){let j=J[$++];if(j===void 0)break;if(Q|=BigInt(j&127)<<Z,Z+=7n,(j&128)===0)return[Q,$]}throw new S("toolbox_tron_transaction_creation_failed")}function T(J){let z=[],Q=J<0n?J+2n**64n:J;while(Q>=128n)z.push(Number(Q&0x7fn)|128),Q>>=7n;return z.push(Number(Q)),z}function b(J,z,Q){let Z=J.get(z);if(Z)Z.push(Q);else J.set(z,[Q])}function iz(J){let z=new Map,Q=0;while(Q<J.length){let[Z,$]=p(J,Q);Q=$;let j=Number(Z>>3n),W=Number(Z&7n);if(W===g){let[k,U]=p(J,Q);Q=U,b(z,j,{data:new Uint8Array(T(k)),wireType:g})}else if(W===A){let[k,U]=p(J,Q);Q=U;let F=Number(k);if(F<0||Q+F>J.length)throw new S("toolbox_tron_transaction_creation_failed");let u=J.slice(Q,Q+F);Q+=F,b(z,j,{data:u,wireType:A})}else if(W===Qz){if(Q+8>J.length)throw new S("toolbox_tron_transaction_creation_failed");let k=J.slice(Q,Q+8);Q+=8,b(z,j,{data:k,wireType:Qz})}else if(W===Zz){if(Q+4>J.length)throw new S("toolbox_tron_transaction_creation_failed");let k=J.slice(Q,Q+4);Q+=4,b(z,j,{data:k,wireType:Zz})}else throw new S("toolbox_tron_transaction_creation_failed")}return z}function nz(J){let z=[];for(let[j,W]of[...J.entries()].sort(([k],[U])=>k-U))for(let{wireType:k,data:U}of W){let F=BigInt(j<<3|k);if(z.push(new Uint8Array(T(F))),k===A)z.push(new Uint8Array(T(BigInt(U.length))));z.push(U)}let Q=z.reduce((j,W)=>j+W.length,0),Z=new Uint8Array(Q),$=0;for(let j of z)Z.set(j,$),$+=j.length;return Z}function $z(J,z){if(!J||J.length%2!==0)throw new S("toolbox_tron_transaction_creation_failed");let Q=Jz(J),Z=iz(Q);if(z.expiration!==void 0)Z.set(lz,[{data:new Uint8Array(T(BigInt(z.expiration))),wireType:g}]);if(z.data!==void 0)Z.set(cz,[{data:Jz(z.data),wireType:A}]);if(z.fee_limit!==void 0)Z.set(oz,[{data:new Uint8Array(T(BigInt(z.fee_limit))),wireType:g}]);let $=nz(Z),j=zz($),W=zz(pz($));return{raw_data_hex:j,txID:W}}import{Chain as zJ,getRPCUrlSync as JJ,SwapKitError as K,warnOnce as E}from"@swapkit/helpers";import{secp256k1 as Yz}from"@noble/curves/secp256k1.js";import{sha256 as Xz}from"@noble/hashes/sha2.js";import{keccak_256 as dz}from"@noble/hashes/sha3.js";import{bytesToHex as _,hexToBytes as y}from"@noble/hashes/utils.js";import{createBase58check as tz}from"@scure/base";import{SwapKitError as jz}from"@swapkit/helpers";var h=tz(Xz),qz=65,az=2n**256n;function B(J){if(typeof J!=="string")return!1;try{let z=h.decode(J);return z.length===21&&z[0]===qz}catch{return!1}}function Gz(J){return _(h.decode(J))}function sz(J){return h.decode(J).slice(1)}function Wz(J){let z=Yz.getPublicKey(y(J),!1),Q=dz(z.slice(1)).slice(-20),Z=new Uint8Array(21);return Z[0]=qz,Z.set(Q,1),h.encode(Z)}function Mz({txID:J,privateKey:z}){let Q=Yz.sign(y(J),y(z),{format:"recovered",prehash:!1}),Z=Q[0]??0,$=_(Q.slice(1,33)),j=_(Q.slice(33,65)),W=(Z+27).toString(16).padStart(2,"0");return $+j+W}function I({txID:J,raw_data_hex:z}){let Q=_(Xz(y(z)));if(J!==Q)throw new jz("toolbox_tron_invalid_transaction_integrity",{expected:Q,txID:J})}function rz(J){return`000000000000000000000000${_(sz(J))}`}function ez(J){let z=typeof J==="bigint"?J:BigInt(J);if(z<0n||z>=az)throw new jz("toolbox_tron_invalid_token_identifier",{identifier:z.toString()});return z.toString(16).padStart(64,"0")}function v(J){return J.map(({type:z,value:Q})=>z==="address"?rz(Q):ez(BigInt(Q))).join("")}function Oz(J){return _(new TextEncoder().encode(J))}var Cz="https://api.trongrid.io",QJ=1000,ZJ=1e6,$J=420,YJ=1e6,XJ=30000;function kz(){try{return JJ(zJ.Tron)}catch{return Cz}}function Hz(){let J=new AbortController,z=setTimeout(()=>J.abort(),XJ);return{cleanup:()=>clearTimeout(z),signal:J.signal}}async function V(J,z){let{signal:Q,cleanup:Z}=Hz();try{let $=await fetch(`${kz()}${J}`,{body:JSON.stringify(z),headers:{"Content-Type":"application/json"},method:"POST",signal:Q});if(!$.ok)throw new K("toolbox_tron_trongrid_api_error",{message:`${$.status} ${$.statusText} on ${J}`});return await $.json()}finally{Z()}}async function Kz(J,z){let{signal:Q,cleanup:Z}=Hz();try{let $=await fetch(`${z??kz()}${J}`,{headers:{"Content-Type":"application/json"},signal:Q});if(!$.ok)throw new K("toolbox_tron_trongrid_api_error",{message:`${$.status} ${$.statusText} on ${J}`});return await $.json()}finally{Z()}}async function Pz(J){if(!B(J))throw new K("toolbox_tron_trongrid_api_error",{address:J,message:"Invalid address"});try{let z=await Kz(`/v1/accounts/${J}`,Cz);if(!(z.success&&z.data)||z.data.length===0)return;let Q;try{Q=Gz(J).toLowerCase()}catch{Q=J.toLowerCase()}let Z=z.data.find(($)=>$.address.toLowerCase()===Q);if(!Z)return;return{balance:Z.balance,trc20:Z.trc20||[]}}catch(z){if(z instanceof K)throw z;throw new K("toolbox_tron_trongrid_api_error",{address:J,message:z instanceof Error?z.message:"Unknown error"})}}async function Lz({from:J,to:z,amount:Q}){let $=await V("/wallet/createtransaction",{amount:Q,owner_address:J,to_address:z,visible:!0});if(!$.txID||!$.raw_data_hex||!$.raw_data)throw new K("toolbox_tron_transaction_creation_failed");let W=$.raw_data?.contract?.[0]?.parameter?.value;if(W?.to_address!==z||W?.owner_address!==J||W?.amount!==Q)throw new K("toolbox_tron_transaction_creation_failed");return I($),$}async function Nz({ownerAddress:J,contractAddress:z,functionSelector:Q,parameter:Z,feeLimit:$,callValue:j=0}){let W=await V("/wallet/triggersmartcontract",{call_value:j,contract_address:z,fee_limit:$,function_selector:Q,owner_address:J,parameter:Z,visible:!0});if(!W.result.result||!W.transaction?.txID||!W.transaction?.raw_data_hex)throw new K("toolbox_tron_transaction_creation_failed");let U=W.transaction.raw_data?.contract?.[0]?.parameter?.value;if(U?.contract_address!==z||U?.owner_address!==J)throw new K("toolbox_tron_transaction_creation_failed");return I(W.transaction),W.transaction}function Bz({ownerAddress:J,contractAddress:z,functionSelector:Q,parameter:Z}){return V("/wallet/triggerconstantcontract",{contract_address:z,function_selector:Q,owner_address:J,parameter:Z,visible:!0})}function jJ({ownerAddress:J,contractAddress:z,functionSelector:Q,parameter:Z}){return V("/wallet/estimateenergy",{contract_address:z,function_selector:Q,owner_address:J,parameter:Z,visible:!0})}function Uz(J){let z=typeof J==="number"?J:typeof J==="string"?Number(J):Number.NaN;return Number.isFinite(z)&&z>0?z:void 0}async function f(J){try{let{result:z,txid:Q}=await V("/wallet/broadcasttransaction",{raw_data:J.raw_data,raw_data_hex:J.raw_data_hex,signature:J.signature,txID:J.txID,visible:J.visible});if(!z||!Q)throw new K("toolbox_tron_token_transfer_failed");return Q}catch(z){throw new K("toolbox_tron_broadcast_failed",{error:z})}}async function x(){let J={};try{let{chainParameter:z}=await Kz("/wallet/getchainparameters");for(let Q of z)J[Q.key]=Q.value}catch(z){E({condition:!0,id:"tron_chain_params_failed",warning:`Failed to fetch chain params, using defaults: ${z instanceof Error?z.message:z}`})}return{bandwidthFee:J.getTransactionFee??QJ,createAccountFee:J.getCreateNewAccountFeeInSystemContract??J.getCreateAccountFee??ZJ,energyFee:J.getEnergyFee??$J,memoFee:J.getMemoFee??YJ}}async function l(J){try{let z=await V("/wallet/getaccountresource",{address:J,visible:!0});return{bandwidth:{free:(z.freeNetLimit??600)-(z.freeNetUsed??0),total:z.NetLimit??0,used:z.NetUsed??0},energy:{total:z.EnergyLimit??0,used:z.EnergyUsed??0}}}catch(z){return E({condition:!0,id:"tron_account_resources_failed",warning:`Failed to fetch account resources, using defaults: ${z instanceof Error?z.message:z}`}),{bandwidth:{free:600,total:0,used:0},energy:{total:0,used:0}}}}async function w(J){try{let z=await V("/wallet/getaccount",{address:J,visible:!0});return z&&Object.keys(z).length>0}catch{return!1}}async function c(J){try{let z=await jJ({...J,ownerAddress:J.sender}),Q=z.energy_required??z.energyRequired;if(z.result&&!z.result.result)throw new K("toolbox_tron_trongrid_api_error",{message:z.result.message||"estimateenergy failed"});if(Q!==void 0){let Z=Uz(Q);if(Z!==void 0)return Z;throw new K("toolbox_tron_trongrid_api_error",{message:"Invalid estimateenergy response"})}}catch(z){E({condition:!0,id:"tron_energy_estimation_failed",warning:`Failed to estimate energy with estimateenergy, falling back to triggerconstantcontract: ${z instanceof Error?z.message:z}`})}try{let{energy_used:z}=await Bz({...J,ownerAddress:J.sender}),Q=Uz(z);if(Q!==void 0)return Q;throw new K("toolbox_tron_trongrid_api_error",{message:"Invalid triggerconstantcontract energy response"})}catch(z){throw E({condition:!0,id:"tron_energy_estimation_fallback_failed",warning:`Failed to estimate energy: ${z instanceof Error?z.message:z}`}),new K("toolbox_tron_trongrid_api_error",{message:`Unable to estimate contract energy: ${z instanceof Error?z.message:z}`})}}async function Dz({assetAddress:J,owner:z,spender:Q}){let Z=v([{type:"address",value:z},{type:"address",value:Q}]),j=(await Bz({contractAddress:J,functionSelector:"allowance(address,address)",ownerAddress:Q,parameter:Z})).constant_result?.[0];if(!j)return 0n;try{return BigInt(`0x${j}`)}catch{return 0n}}var UJ=B,Rz=268,Vz=65000,i=25000,Sz=345,n="TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",CJ="115792089237316195423570985008687907853269984665640564039457584007913129639935";function fz({phrase:J,derivationPath:z}){let Q=GJ.fromMasterSeed(WJ(J)).derive(z);if(!Q.privateKey)throw new H("toolbox_tron_no_signer");return qJ(Q.privateKey)}function kJ({phrase:J,derivationPath:z,index:Q}){let Z=z||Iz(Tz(vz[N.Tron],{index:Q||0}));return fz({derivationPath:Z,phrase:J})}function HJ({phrase:J,derivationPath:z}){let Q=fz({derivationPath:z,phrase:J}),Z=Wz(Q);return{getAddress:()=>Promise.resolve(Z),signTransaction:($)=>{I($);let j=Mz({privateKey:Q,txID:$.txID});return Promise.resolve({...$,signature:[j]})}}}function _z({transaction:J,memo:z,expiration:Q,feeLimit:Z}){let $={},j={};if(Z!==void 0&&J.raw_data)$.fee_limit=Z,j.fee_limit=Z;if(z){let U=z.startsWith("0x")?z.replace(/^0x/,""):Oz(z);$.data=U,j.data=U}if(Q){let U=J.raw_data.expiration+Q*1000;$.expiration=U,j.expiration=U}if(Object.keys($).length===0)return J;let{raw_data_hex:W,txID:k}=$z(J.raw_data_hex,$);return{...J,raw_data:{...J.raw_data,...j},raw_data_hex:W,txID:k}}function KJ(J={}){let z="index"in J?J.index||0:0,Q=Iz("derivationPath"in J&&J.derivationPath?J.derivationPath:Tz(vz[N.Tron],{index:z})),Z,$=!1;function j(){if($)return Promise.resolve(Z);return Z=OJ(J).with({phrase:o.string},({phrase:Y})=>HJ({derivationPath:Q,phrase:Y})).with({signer:o.not(o.nullish)},({signer:Y})=>Y).otherwise(()=>{return}),$=!0,Promise.resolve(Z)}async function W(){let Y=await j();if(!Y)throw new H("toolbox_tron_no_signer");return Y.getAddress()}async function k(Y,X){let G=Y||Vz,q=X??(await x()).energyFee,O=G*q,M=Math.ceil(O*1.5);return Math.min(Math.max(M,1e7),150000000)}async function U({contractAddress:Y,functionSelector:X,parameter:G,sender:q,memo:O,expiration:M,extraEnergy:P=0}){let C=await c({contractAddress:Y,functionSelector:X,parameter:G,sender:q}),L=await k(C+P),R=await Nz({contractAddress:Y,feeLimit:L,functionSelector:X,ownerAddress:q,parameter:G});return _z({expiration:M,feeLimit:L,memo:O,transaction:R})}async function F(Y){if(!B(Y))return[D.from({chain:N.Tron})];try{let X=await Pz(Y);if(!X)return[D.from({chain:N.Tron})];let G=[D.from({chain:N.Tron,fromBaseDecimal:6,value:String(X.balance)})],q=X.trc20?.find((O)=>(n in O));if(q){let O=q[n];G.push(D.from({asset:`TRON.USDT-${n}`,fromBaseDecimal:6,value:O}))}return G}catch(X){return Fz({condition:!0,id:"tron_toolbox_get_balance_failed",warning:`Tron API getBalance failed: ${X instanceof Error?X.message:X}`}),[D.from({chain:N.Tron})]}}async function u({recipient:Y,assetValue:X,memo:G,expiration:q}){if(!B(Y))throw new H("toolbox_tron_token_transfer_failed",{message:"invalid address"});let O=await j();if(!O)throw new H("toolbox_tron_no_signer");try{let M=await W(),P=await t({assetValue:X,expiration:q,memo:G,recipient:Y,sender:M}),C=await O.signTransaction(P),L=await f(C);if(!L)throw new H("toolbox_tron_token_transfer_failed",{message:"broadcast failed"});return L}catch(M){throw new H("toolbox_tron_token_transfer_failed",{message:M instanceof Error?M.message:String(M)})}}function d({requiredBandwidth:Y,resources:X,feePerUnit:G}){let q=Math.max(0,X.free+X.total-X.used);return Y>q?(Y-q)*G:0}async function xz({memo:Y,recipient:X,senderAddress:G}){let[q,O,M]=await Promise.all([x(),w(X),l(G)]),P=O?0:q.createAccountFee,C=d({feePerUnit:q.bandwidthFee,requiredBandwidth:Rz,resources:M.bandwidth}),L=Y?q.memoFee:0;return D.from({chain:N.Tron,fromBaseDecimal:m.TRON,value:P+C+L})}async function wz({assetValue:Y,memo:X,recipient:G,senderAddress:q}){let O=Y.address;if(!O)throw new H("toolbox_tron_invalid_token_identifier",{identifier:Y.toString()});let[M,P,C,L]=await Promise.all([x(),w(G),l(q),c({contractAddress:O,functionSelector:"transfer(address,uint256)",parameter:v([{type:"address",value:G},{type:"uint256",value:Y.getBaseValue("string")}]),sender:q})]),r=L+(P?0:i),Ez=d({feePerUnit:M.bandwidthFee,requiredBandwidth:Sz,resources:C.bandwidth}),e=Math.max(0,C.energy.total-C.energy.used),mz=r>e?(r-e)*M.energyFee:0,uz=X?M.memoFee:0;return D.from({chain:N.Tron,fromBaseDecimal:m.TRON,value:Ez+mz+uz})}async function bz({assetValue:Y,memo:X,recipient:G}){let[q,O]=await Promise.all([x(),w(G)]);if(Y.isGasAsset){let L=O?0:q.createAccountFee,R=X?q.memoFee:0;return D.from({chain:N.Tron,fromBaseDecimal:m.TRON,value:L+Rz*q.bandwidthFee+R})}let P=await k(Vz+(O?0:i),q.energyFee),C=X?q.memoFee:0;return D.from({chain:N.Tron,fromBaseDecimal:m.TRON,value:P+Sz*q.bandwidthFee+C})}async function gz({assetValue:Y,memo:X,recipient:G,sender:q}){let O=await j();try{let M=q?q:O?await W():void 0;if(!M)return bz({assetValue:Y,memo:X,recipient:G});return Y.isGasAsset?xz({memo:X,recipient:G,senderAddress:M}):wz({assetValue:Y,memo:X,recipient:G,senderAddress:M})}catch(M){throw Fz({condition:!0,id:"tron_toolbox_fee_estimation_failed",warning:`Failed to calculate exact fee: ${M instanceof Error?M.message:M}`}),new H("toolbox_fee_estimation_failed",{chain:N.Tron,error:M})}}async function t({recipient:Y,assetValue:X,memo:G,sender:q,expiration:O}){if(!B(Y)||!B(q))throw new H("toolbox_tron_transaction_creation_failed",{message:"invalid address"});if(X.isGasAsset){let C=await Lz({amount:X.getBaseValue("number"),from:q,to:Y});return _z({expiration:O,memo:G,transaction:C})}let M=X.address;if(!M)throw new H("toolbox_tron_invalid_token_identifier",{identifier:X.toString()});let P=await w(Y);return U({contractAddress:M,expiration:O,extraEnergy:P?0:i,functionSelector:"transfer(address,uint256)",memo:G,parameter:v([{type:"address",value:Y},{type:"uint256",value:X.getBaseValue("string")}]),sender:q})}async function a(Y){I(Y);let X=await j();if(!X)throw new H("toolbox_tron_no_signer");return X.signTransaction(Y)}async function Az(Y){let X=await a(Y);return f(X)}function s({assetAddress:Y,spenderAddress:X,from:G}){return Dz({assetAddress:Y,owner:G,spender:X})}async function yz({assetAddress:Y,spenderAddress:X,from:G,amount:q}){let O=await s({assetAddress:Y,from:G,spenderAddress:X});if(!q)return O>0n;return O>=BigInt(q)}async function hz({assetAddress:Y,spenderAddress:X,amount:G,from:q}){if(!B(Y)||!B(X))throw new H("toolbox_tron_approve_failed");let O=await j();if(!O)throw new H("toolbox_tron_no_signer");let M=q||await W(),P=G!==void 0?BigInt(G).toString():CJ;try{let C=await U({contractAddress:Y,functionSelector:"approve(address,uint256)",parameter:v([{type:"address",value:X},{type:"uint256",value:P}]),sender:M}),L=await O.signTransaction(C),R=await f(L);if(!R)throw new H("toolbox_tron_approve_failed");return R}catch(C){if(C instanceof H)throw C;throw new H("toolbox_tron_approve_failed",{error:C})}}return{approve:hz,broadcastTransaction:f,createTransaction:t,estimateTransactionFee:gz,getAddress:W,getApprovedAmount:s,getBalance:F,getRpcUrl:()=>MJ(N.Tron),isApproved:yz,signAndBroadcastTransaction:Az,signTransaction:a,transfer:u,validateAddress:B}}export{UJ as validateTronAddress,KJ as getTronToolbox,kJ as getTronPrivateKeyFromMnemonic};
@@ -1 +1 @@
1
- var q0=Object.defineProperty;var L0=(X)=>X;function z0(X,$){this[X]=L0.bind(null,$)}var U0=(X,$)=>{for(var J in $)q0(X,J,{get:$[J],enumerable:!0,configurable:!0,set:z0.bind($,J)})};var E=(X,$)=>()=>(X&&($=X(X=0)),$);var t1=((X)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(X,{get:($,J)=>(typeof require<"u"?require:$)[J]}):X)(function(X){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+X+'" is not supported')});import{NetworkDerivationPath as W0}from"@swapkit/helpers";function v(X,$){if(!Number.isInteger($)||$<0)throw RangeError(`${X} must be a non-negative integer, got: ${$}`)}function c({accountIndex:X,chain:$,derivationPath:J}){if(X!==void 0)v("accountIndex",X);let j=[...J?.slice(0,3)??W0[$].slice(0,3)];if(X!==void 0)j[2]=X;return j}function jX({accountIndex:X,change:$=!1,chain:J,derivationPath:j,index:Q}){return v("index",Q),[...c({accountIndex:X,chain:J,derivationPath:j}),Number($),Q]}function s(X){return X[2]??0}function _2({deriveAddress:X,getBalance:$,getUtxos:J}){async function j(L){let{accountIndex:G,count:Y,startIndex:U=0,change:z=!1}=L;if(v("count",Y),Y<1)throw RangeError("count must be at least 1");v("startIndex",U);let W=[];for(let B=0;B<Y;B++){let _=await X({accountIndex:G,change:z,index:U+B});if(_)W.push(_)}return W}async function Q(L){let{gapLimit:G=20,change:Y=!1}=L??{},U=[],z=0,W=0;while(z<G){let B=await X({change:Y,index:W});if(!B)break;if((await $(B.address)).some((b)=>b.getValue("number")>0))U.push(B),z=0;else z++;W++}return U}async function Z(L=20){let[G,Y]=await Promise.all([Q({change:!1,gapLimit:L}),Q({change:!0,gapLimit:L})]),U=[...G,...Y],z=await Promise.all(U.map(async(B)=>{let D=(await $(B.address)).reduce((b,JX)=>b+JX.getValue("number"),0);return{...B,balance:D}})),W=z.reduce((B,_)=>B+_.balance,0);return{addresses:z,total:W}}async function q(L=20){let[G,Y]=await Promise.all([Q({change:!1,gapLimit:L}),Q({change:!0,gapLimit:L})]),U=[...G,...Y];return(await Promise.all(U.map(async(W)=>{return(await J(W.address)).map((_)=>({..._,address:W.address,derivationIndex:W.index,isChange:W.change}))}))).flat()}return{deriveAddresses:j,getAggregatedBalance:Z,getAggregatedUtxos:q,scanForAddresses:Q}}var MX=()=>{};import{AssetValue as N2,getChainConfig as B0}from"@swapkit/helpers";import{SwapKitApi as _0}from"@swapkit/helpers/api";function M2(){function X(){let $=Date.now(),J=iX||$;return iX=J,$>iX?$:J+1}return N0+X().toString(36)}function D2(X){return async function(J,j=!0){let Q=await _0.getChainBalance({address:J,chain:X,scamFilter:j}),{baseDecimal:Z}=B0(X),q=Q.map(({identifier:G,value:Y,decimal:U})=>{return new N2({decimal:U||Z,identifier:G,value:Y})});if(!q.some((G)=>G.isGasAsset))return[N2.from({chain:X}),...q];return q}}var N0,iX=0;var sX=E(()=>{N0=typeof process<"u"&&process.pid?process.pid.toString(36):""});import{Chain as T,getRPCUrl as M0,RequestClient as wX,SKConfig as D0,SwapKitError as K,warnOnce as C0}from"@swapkit/helpers";import{NETWORKS as QX}from"@swapkit/utxo-signer";async function H0({chain:X,txHash:$}){let J=`${DX(X)}/push/transaction`,j=JSON.stringify({data:$});try{let Q=await wX.post(J,{body:j,headers:{"Content-Type":"application/json"}});if(Q.context.code!==200)throw new K("toolbox_utxo_broadcast_failed",{error:Q.context.error||"Transaction broadcast failed"});return Q.data?.transaction_hash||$}catch(Q){let Z=await M0(X);if(Z){let q=JSON.stringify({id:M2(),jsonrpc:"2.0",method:"sendrawtransaction",params:[$]}),L=await wX.post(Z,{body:q,headers:{"Content-Type":"application/json"}});if(L.error)throw new K("toolbox_utxo_broadcast_failed",{error:L.error?.message});if(L.result.includes('"code":-26'))throw new K("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return L.result}throw Q}}function DX(X){return`https://api.blockchair.com/${O0(X)}`}function C2(X){switch(X){case T.Bitcoin:return 5;case T.Dogecoin:return 1e4;case T.Litecoin:return 1;case T.Zcash:return 1;default:return 2}}function O0(X){switch(X){case T.BitcoinCash:return"bitcoin-cash";case T.Litecoin:return"litecoin";case T.Dash:return"dash";case T.Dogecoin:return"dogecoin";case T.Zcash:return"zcash";case T.Polkadot:return"polkadot";default:return"bitcoin"}}async function V0(X){try{let{feePerKb:$}=await wX.get(`https://app.bitgo.com/api/v2/${X.toLowerCase()}/tx/fee`),J=$/1000;return Math.max(J,C2(X))}catch{return C2(X)}}async function SX(X,$){let J=await wX.get(`${X}${$?`${X.includes("?")?"&":"?"}key=${$}`:""}`);if(!J||J.context.code!==200)throw new K("toolbox_utxo_api_error",{error:`Failed to query ${X}`});return J.data}async function O2({address:X,chain:$,apiKey:J}){if(!X)throw new K("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await SX(`${DX($)}/dashboards/address/${X}?transaction_details=true`,J))[X]}catch{return{address:{balance:0,transaction_count:0},utxo:[]}}}async function b0({address:X,chain:$,apiKey:J}){return(await O2({address:X,apiKey:J,chain:$}))?.address.balance||0}async function V2({chain:X,apiKey:$,txHash:J}){if(!J)throw new K("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await SX(`${DX(X)}/raw/transaction/${J}`,$))?.[J]?.raw_transaction||""}catch(j){let Q=j instanceof Error?j.message:String(j);return console.error(`Failed to fetch raw transaction: ${Q}`),""}}async function I0({chain:X,apiKey:$,txHash:J}){if(!J)throw new K("toolbox_utxo_invalid_params",{error:"TxHash is required"});let Q=(await SX(`${DX(X)}/dashboards/transaction/${J}`,$))?.[J];if(!Q)throw new K("toolbox_utxo_tx_not_found",{txHash:J});let{transaction:Z,inputs:q,outputs:L}=Q,G=q.map((U)=>U.spending_sequence),Y=Z.is_rbf===!0||G.some((U)=>U<k0);return{blockId:Z.block_id,confirmed:Z.block_id!==-1,fee:Z.fee,inputs:q,isRBF:Y,outputs:L,sequences:G,size:Z.size,txid:Z.hash,weight:Z.weight}}async function f0({chain:X,address:$,apiKey:J,offset:j=0,limit:Q=30}){return(await SX(`${DX(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:U,transaction_hash:z,index:W,value:B,spending_signature_hex:_})=>({hash:z,index:W,is_confirmed:U!==-1,is_spent:G,script_hex:Y,txHex:_,value:B}))}function T0(X){return X.reduce(($,J)=>$+J.value,0)}function H2(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 b2({chain:X,address:$,apiKey:J,targetValue:j,accumulativeValue:Q=0,offset:Z=0,limit:q=30}){if(!$)throw new K("toolbox_utxo_invalid_params",{error:"Address is required"});try{let L=await f0({address:$,apiKey:J,chain:X,limit:q,offset:Z,targetValue:j}),Y=L.length<q,U=L.filter(({is_spent:b})=>!b),z=T0(U),W=Q+z,B=j&&W>=j;if(Y||B)return H2(U,j);let _=await b2({accumulativeValue:W,address:$,apiKey:J,chain:X,limit:q,offset:Z+q,targetValue:j}),D=[...U,..._];return H2(D,j)}catch(L){let G=L instanceof Error?L.message:String(L);return console.error(`Failed to fetch unspent UTXOs: ${G}`),[]}}async function E0({address:X,chain:$,apiKey:J,fetchTxHex:j=!0,targetValue:Q}){let Z=await b2({address:X,apiKey:J,chain:$,targetValue:Q}),q=[];for(let{hash:L,index:G,script_hex:Y,value:U}of Z){let z;if(j)z=await V2({apiKey:J,chain:$,txHash:L});q.push({address:X,hash:L,index:G,txHex:z,value:U,witnessUtxo:{script:Buffer.from(Y,"hex"),value:U}})}return q}function k(X){let $=D0.get("apiKeys").blockchair||"";return C0({condition:!$,id:"no_blockchair_api_key_warning",warning:"No Blockchair API key found. Functionality will be limited."}),{broadcastTx:(J)=>H0({chain:X,txHash:J}),getAddressData:(J)=>O2({address:J,apiKey:$,chain:X}),getBalance:(J)=>b0({address:J,apiKey:$,chain:X}),getRawTx:(J)=>V2({apiKey:$,chain:X,txHash:J}),getSuggestedTxFee:()=>V0(X),getTransactionDetails:(J)=>I0({apiKey:$,chain:X,txHash:J}),getUtxos:(J)=>E0({...J,apiKey:$,chain:X})}}function F0(X){return X}function P0(){return function($){switch($){case T.Bitcoin:return QX.bitcoin;case T.BitcoinCash:return QX.bitcoinCash;case T.Dash:return QX.dash;case T.Litecoin:return QX.litecoin;case T.Dogecoin:return QX.dogecoin;case T.Zcash:return QX.zcash;default:throw new K("toolbox_utxo_not_supported",{chain:$})}}}var k0=4294967294;var k2=E(()=>{sX()});import{CashAddrType as KX,decodeCashAddr as R0,encodeCashAddr as y0}from"@swapkit/utxo-signer";function w0(X,$,J){return y0({hash:J,prefix:X,type:v0[$]})}function S0(X){let $=R0(X),J=A0[$.type];if(!J)throw Error(`Unknown CashAddr type: ${$.type}`);return{hash:$.hash,prefix:$.prefix,type:J}}var v0,A0,aX;var I2=E(()=>{v0={P2PKH:KX.P2PKH,P2SH:KX.P2SH},A0={[KX.P2PKH]:"P2PKH",[KX.P2SH]:"P2SH"};aX={decode:S0,encode:w0}});import{sha256 as K0}from"@noble/hashes/sha2.js";import{createBase58check as m0}from"@scure/base";import{SwapKitError as T2}from"@swapkit/helpers";function eX(X){try{return mX(X),!0}catch{return!1}}function X2(X){return mX(X)?.network}function x(X){let $=mX(X);if($?.format==="legacy")return X;return x0($)}function CX(X){let $=mX(X);return h0($)}function mX(X){try{let $=g0(X);if($)return $}catch{}try{let $=l0(X);if($)return $}catch{}throw new T2("toolbox_utxo_invalid_address",{address:X})}function g0(X){try{let $=E2.decode(X);if($.length!==21)throw new T2("toolbox_utxo_invalid_address",{address:X});let J=$[0],j=Array.prototype.slice.call($,1);switch(J){case a.legacy.mainnet.p2pkh:return{format:"legacy",hash:j,network:"mainnet",type:"p2pkh"};case a.legacy.mainnet.p2sh:return{format:"legacy",hash:j,network:"mainnet",type:"p2sh"};case a.legacy.testnet.p2pkh:return{format:"legacy",hash:j,network:"testnet",type:"p2pkh"};case a.legacy.testnet.p2sh:return{format:"legacy",hash:j,network:"testnet",type:"p2sh"};case a.bitpay.mainnet.p2pkh:return{format:"bitpay",hash:j,network:"mainnet",type:"p2pkh"};case a.bitpay.mainnet.p2sh:return{format:"bitpay",hash:j,network:"mainnet",type:"p2sh"};default:return}}catch{return}}function l0(X){if(X.indexOf(":")!==-1)try{return f2(X)}catch{}else{let $=["bitcoincash","bchtest","bchreg"];for(let J of $)try{return f2(`${J}:${X}`)}catch{}}return}function f2(X){try{let{hash:$,prefix:J,type:j}=aX.decode(X);return{format:"cashaddr",hash:Array.prototype.slice.call($,0),network:J==="bitcoincash"?"mainnet":"testnet",type:j==="P2PKH"?"p2pkh":"p2sh"}}catch{return}}function x0(X){let $=a.legacy[X.network][X.type],J=Buffer.alloc(1+X.hash.length);return J[0]=$,J.set(X.hash,1),E2.encode(J)}function h0(X){let $=X.network==="mainnet"?"bitcoincash":"bchtest",J=X.type==="p2pkh"?"P2PKH":"P2SH",j=new Uint8Array(X.hash);return aX.encode($,J,j)}var E2,tX,a;var F2=E(()=>{I2();E2=m0(K0);((J)=>{J.Mainnet="mainnet";J.Testnet="testnet"})(tX||={});a={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}}});import{SwapKitError as p0}from"@swapkit/helpers";import{Script as u0}from"@swapkit/utxo-signer";function R(X){let $=new Uint8Array(Buffer.from(X,"utf8"));return u0.encode(["RETURN",$])}var o0=1000,lX=10,xX=2,P2=10,c0=41,d0=107,hX,gX,HX,ZX=(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 p0("toolbox_utxo_invalid_address",{address:X})},t=({inputs:X,outputs:$,feeRate:J})=>{let j=X[0]&&"address"in X[0]&&X[0].address?ZX(X[0].address):"P2PKH",Z=(J?X.filter((Y)=>Y.value>=gX["type"in Y&&Y.type?Y.type:"P2PKH"]*Math.ceil(J)):X).reduce((Y,U)=>Y+d(U),0),q=$?.reduce((Y,U)=>Y+OX(U),0)||HX[j],L=lX+Z+q;return j==="P2WPKH"?Math.ceil(L+xX/4):L},d=(X)=>{if("type"in X&&X.type)return gX[X.type];if("address"in X&&X.address)return gX[ZX(X.address)];return c0+d0},OX=(X,$)=>{if(X?.script)return P2+X.script.length+(X.script.length>=74?2:1);if($)return HX[$];if("address"in X&&X.address)return HX[ZX(X.address)];return HX.P2PKH};var $2=E(()=>{((J)=>{J.P2PKH="P2PKH";J.P2WPKH="P2WPKH"})(hX||={});gX={["P2PKH"]:148,["P2WPKH"]:68},HX={["P2PKH"]:34,["P2WPKH"]:31}});import{Chain as e,SwapKitError as r0}from"@swapkit/helpers";function VX(X){switch(X){case e.Bitcoin:case e.BitcoinCash:return 550;case e.Dash:case e.Litecoin:return 5500;case e.Dogecoin:return 1e5;case e.Zcash:return 546;default:throw new r0("toolbox_utxo_not_supported",{chain:X})}}function A({inputs:X,outputs:$,feeRate:J=1,chain:j=e.Bitcoin,changeAddress:Q=""}){let Z=X[0]&&"address"in X[0]&&X[0].address?ZX(X[0].address):"P2PKH",q=X.filter((_)=>d(_)*J<=_.value),G=Z==="P2WPKH"?Math.ceil(xX/4):0,Y=lX+G+$.reduce((_,D)=>_+OX(D),0),U=$.reduce((_,D)=>_+D.value,0),z=Y*J,W=0,B=[];for(let _ of q){let D=d(_),b=J*D;z+=b,W+=_.value,B.push(_);let JX=z+U;if(W<JX)continue;let FX=W-JX,PX=J*OX({address:Q,value:0});if(FX>PX){let BX=PX+z,_X=W-(U+Math.ceil(BX));if(_X>Math.max(d({value:0})*J,VX(j)))return{fee:Math.ceil(BX),inputs:B,outputs:$.concat({address:Q,value:_X})}}return{fee:Math.ceil(z),inputs:B,outputs:$}}return{fee:Math.ceil(J*t({inputs:X,outputs:$}))}}var R2=E(()=>{$2()});var GX=E(()=>{k2();F2();R2();$2()});import{Address as n0,ZCASH_NETWORK as i0}from"@swapkit/utxo-signer";function XX(X){return X.replace(/(bchtest:|bitcoincash:)/,"")}function r(X){let $=XX(X);return eX($)&&X2($)==="mainnet"}function YX(X){try{if(X.startsWith("z"))return console.warn("Shielded Zcash addresses (z-addresses) are not supported. Use transparent addresses (t1/t3) only."),!1;let J=n0(i0).decode(X);return J.type==="pkh"||J.type==="sh"}catch{return!1}}var bX=E(()=>{GX()});import{secp256k1 as s0}from"@noble/curves/secp256k1.js";import{hex as $X}from"@scure/base";import{HDKey as w2}from"@scure/bip32";import{mnemonicToSeedSync as j2}from"@scure/bip39";import{AssetValue as pX,applyFeeMultiplier as y2,Chain as I,derivationPathToString as kX,FeeOption as m,NetworkDerivationPath as S2,SwapKitError as V,SwapKitNumber as a0,updateDerivationPath as t0,warnOnce as e0}from"@swapkit/helpers";import{Address as X1,BCHSigHash as Q2,CashAddrPrefix as $1,CashAddrType as J1,encodeCashAddr as j1,NETWORKS as qX,p2pkh as v2,p2wpkh as Q1,RBF_SEQUENCE as Z1,SigHash as K2,Transaction as J2,WIF as m2}from"@swapkit/utxo-signer";import{match as g2}from"ts-pattern";function Z2({address:X,chain:$}){return g2($).with(I.BitcoinCash,()=>r(X)).with(I.Zcash,()=>YX(X)).otherwise(()=>{try{return X1(F($)).decode(X),!0}catch{return!1}})}function F(X){return g2(X).with(I.Bitcoin,()=>qX.bitcoin).with(I.BitcoinCash,()=>qX.bitcoinCash).with(I.Dash,()=>qX.dash).with(I.Dogecoin,()=>qX.dogecoin).with(I.Litecoin,()=>qX.litecoin).with(I.Zcash,()=>qX.zcash).exhaustive()}function G1({phrase:X,derivationPath:$,network:J,seed:j}){let Q=j??j2(X),q=w2.fromMasterSeed(Q,J.bip32).derive($);if(!q.privateKey)throw new V("toolbox_utxo_invalid_params",{error:"Could not derive private key from phrase"});return q.privateKey}function A2(X){return s0.getPublicKey(X,!0)}function fX({publicKey:X,chain:$,network:J}){if($===I.BitcoinCash){let Z=v2(X,J);if(!Z.hash)throw new V("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return j1({hash:Z.hash,prefix:$1.MAINNET,type:J1.P2PKH}).replace(/^bitcoincash:/,"")}let Q=!IX.includes($)?Q1(X,J):v2(X,J);if(!Q.address)throw new V("toolbox_utxo_invalid_address",{error:"Could not derive address"});return Q.address}function LX({phrase:X,derivationPath:$,chain:J,wif:j,seed:Q}){let Z=F(J);if(j){let Y=m2(Z).decode(j),U=A2(Y);return{privateKey:Y,publicKey:U}}if(!X)throw new V("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let q=$||kX(S2[J]),L=G1({derivationPath:q,network:Z,phrase:X,seed:Q}),G=A2(L);return{privateKey:L,publicKey:G}}function Y1(X,$){return m2(F($)).encode(X)}function q1({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),q=j??j2(X),L=w2.fromMasterSeed(q,Z.bip32),G=Q.slice(0,4).join("/");return L.derive(G)}function n({inputs:X,outputs:$,chain:J,tx:j,sender:Q,compiledMemo:Z,enableRBF:q=!1}){let L=F(J),G=!IX.includes(J),Y=q?Z1: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 B=typeof z.hash==="string"?$X.decode(z.hash):z.hash;if(G&&z.witnessUtxo)j.addInput({index:z.index,sequence:Y,txid:B,witnessUtxo:{amount:BigInt(z.witnessUtxo.value),script:z.witnessUtxo.script}});else if(z.txHex)j.addInput({index:z.index,nonWitnessUtxo:$X.decode(z.txHex),sequence:Y,txid:B,...J===I.BitcoinCash?{sighashType:Q2.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===I.BitcoinCash)W=x(W);if(z.script){if(Z)j.addOutput({amount:0n,script:Z})}else j.addOutputAddress(W,BigInt(z.value),L)}return{inputs:X,tx:j}}async function zX(X){let $=await k(X).getSuggestedTxFee();return{[m.Average]:$,[m.Fast]:y2($,m.Fast),[m.Fastest]:y2($,m.Fastest)}}async function l2({assetValue:X,recipient:$,memo:J,sender:j,fetchTxHex:Q=!1}){let Z=X.chain,q=(await zX(Z))[m.Fastest],L=Q||IX.includes(Z),G=X.getBaseValue("number"),Y=Math.ceil(G+q*5000);return{inputs:await k(Z).getUtxos({address:j,fetchTxHex:L,targetValue:Y}),outputs:[{address:$,value:G},...J?[{address:"",script:R(J),value:0}]:[]]}}async function x2({assetValue:X,recipient:$,memo:J,feeRate:j,sender:Q,fetchTxHex:Z=!1,enableRBF:q=!1}){let L=X.chain,G=J?R(J):null,Y=await l2({assetValue:X,fetchTxHex:Z,memo:J,recipient:$,sender:Q}),{inputs:U,outputs:z}=A({...Y,chain:L,feeRate:j});if(!(U&&z))throw new V("toolbox_utxo_insufficient_balance",{assetValue:X,sender:Q});let W=new J2({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!G,version:1}),{inputs:B,tx:_}=n({chain:L,compiledMemo:G,enableRBF:q,inputs:U,outputs:z,sender:Q,tx:W});return{inputs:B,tx:_,utxos:Y.inputs}}async function h2({assetValue:X,feeOptionKey:$=m.Fast,feeRate:J,memo:j,sender:Q,recipient:Z}){let q=X.chain,L=await l2({assetValue:X,memo:j,recipient:Z,sender:Q}),G=J?Math.floor(J):(await zX(q))[$];return A({...L,chain:q,feeRate:G})}function L1(X){return async function({from:J,memo:j,feeRate:Q,feeOptionKey:Z=m.Fast,recipients:q=1}){let L=await k(X).getAddressData(J),G=Q?Math.ceil(Q):(await zX(X))[Z],Y=L?.utxo.map((D)=>({...D,hash:"",type:"P2PKH"})).filter((D)=>D.value>Math.max(VX(X),d(D)*G));if(!Y?.length)return pX.from({chain:X});let U=BigInt(Y.reduce((D,b)=>D+b.value,0)),z=pX.from({chain:X,value:U}),W=typeof q==="number"?Array.from({length:q},()=>({address:J,value:0})):q;if(j)W.push({address:J,script:R(j),value:0});let B=t({inputs:Y,outputs:W}),_=pX.from({chain:X,value:BigInt(B*G)});return z.sub(_)}}function z1(X){return async function(J){let{fee:j}=await h2(J);return pX.from({chain:X,value:a0.fromBigInt(BigInt(j),8).getValue("string")})}}function U1({chain:X,phrase:$,derivationPath:J,seed:j}){let Q=F(X),{privateKey:Z,publicKey:q}=LX({chain:X,derivationPath:J,phrase:$,seed:j}),L=X===I.BitcoinCash?[Q2.ALL]:[K2.ALL];return{getAddress:()=>fX({chain:X,network:Q,publicKey:q}),privateKey:Z,publicKey:q,signTransaction:(G)=>{return G.sign(Z,L),G}}}function W1(X,$){return async function({memo:j,recipient:Q,feeOptionKey:Z,feeRate:q,assetValue:L,enableRBF:G=!1}){let Y=await $?.getAddress();if(!($&&Y))throw new V("toolbox_utxo_no_signer");if(!Q)throw new V("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});e0({condition:G&&!uX.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=G&&uX.includes(X),z=q||(await zX(X))[Z||m.Fast],{tx:W}=await x2({assetValue:L,enableRBF:U,feeRate:z,memo:j,recipient:Q,sender:Y}),B=await $.signTransaction(W);return B.finalize(),k(X).broadcastTx($X.encode(B.extract()))}}function G2(X){return($)=>Z2({address:$,chain:X})}function Y2(X){let $=F(X);return function(j){if(!j)throw new V("toolbox_utxo_invalid_params",{error:"Keys must be provided"});return fX({chain:X,network:$,publicKey:j.publicKey})}}function i({chain:X,...$}){let J="phrase"in $?$.phrase:void 0,j="index"in $?$.index||0:0,Q=J?j2(J):void 0,Z="derivationPath"in $&&$.derivationPath?$.derivationPath:t0(S2[X],{index:j}),q=kX(Z),L=J?U1({chain:X,derivationPath:q,phrase:J,seed:Q}):void 0,G="signer"in $?$.signer:void 0,Y=L||G,U=J?LX({chain:X,derivationPath:q,phrase:J,seed:Q}):void 0;function z(){if(Y)return Y.getAddress();return Promise.resolve(void 0)}function W(N){if(!J)return;let M=c({accountIndex:N,chain:X,derivationPath:Z});return q1({chain:X,derivationPath:kX(M),phrase:J,seed:Q})}let B=W();function _(){if(!B)return;return B.publicExtendedKey}function D({accountIndex:N}={}){let M=N===void 0?B:W(N);if(!M)return;let C=c({accountIndex:N,chain:X,derivationPath:Z});return{accountIndex:s(C),path:kX(C),xpub:M.publicExtendedKey}}function b({accountIndex:N,index:M,change:C=!1}){let H=N===void 0?B:W(N);if(!H)return;let O=jX({accountIndex:N,chain:X,change:C,derivationPath:Z,index:M}),y=F(X),w=H.deriveChild(Number(C)).deriveChild(M);if(!w.publicKey)throw new V("toolbox_utxo_invalid_params",{error:"Could not derive public key"});let P=fX({chain:X,network:y,publicKey:w.publicKey}),S=$X.encode(w.publicKey);return{accountIndex:s(O),address:P,change:C,index:M,path:kX(O),pubkey:S}}async function JX(N){if(!uX.includes(X))return{reason:`RBF is not supported on ${X}`,supported:!1};let M=await k(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 FX({txid:N,newFeeRate:M,recipient:C,memo:H}){if(!uX.includes(X))throw new V("toolbox_utxo_rbf_not_supported",{chain:X});let O=await k(X).getTransactionDetails(N);if(!O.isRBF)throw new V("toolbox_utxo_tx_not_replaceable",{txid:N});if(O.confirmed)throw new V("toolbox_utxo_tx_already_confirmed",{blockId:O.blockId,txid:N});let y=O.inputs.reduce((f,o)=>f+o.value,0),P=O.outputs.find((f)=>f.recipient===C)?.value||0;if(P===0)throw new V("toolbox_utxo_invalid_params",{error:"Could not determine send amount from original transaction"});let S=await Promise.all(O.inputs.map(async(f)=>{let o=await k(X).getRawTx(f.transaction_hash);return{hash:f.transaction_hash,index:f.index,txHex:o,value:f.value,witnessUtxo:void 0}})),RX=H?R(H):null,rX=t({feeRate:M,inputs:S.map((f)=>({...f,type:"P2WPKH"})),outputs:[{address:C,value:P}]}),l=Math.ceil(rX*M);if(l<=O.fee)throw new V("toolbox_utxo_rbf_fee_too_low",{newFee:l,originalFee:O.fee});let NX=l-O.fee,p=P-NX;if(p<=0)throw new V("toolbox_utxo_rbf_insufficient_change");let yX=new J2({allowLegacyWitnessUtxo:!0,version:1}),vX=[{address:C,value:p},...H?[{address:"",script:R(H),value:0}]:[]],AX=y-p-l,u=await z();if(AX>VX(X)&&u)vX.push({address:u,value:AX});return n({chain:X,compiledMemo:RX,inputs:S,outputs:vX,sender:u||C,tx:yX}),{feeDelta:NX,newFee:l,originalFee:O.fee,tx:yX}}async function PX({txid:N,newFeeRate:M,recipient:C,memo:H}){let{tx:O,originalFee:y,newFee:w}=await FX({memo:H,newFeeRate:M,recipient:C,txid:N}),P=await dX(O);P.finalize();let S=await k(X).broadcastTx($X.encode(P.extract()));return{newFee:w,originalFee:y,txid:S}}function BX({accountIndex:N,index:M,change:C=!1}){v("index",M);let H=N===void 0?B:W(N);if(!H)return;return H.deriveChild(Number(C)).deriveChild(M).privateKey||void 0}function _X({tx:N,inputDerivations:M}){if(!B)throw new V("toolbox_utxo_no_signer");let C=X===I.BitcoinCash?[Q2.ALL]:[K2.ALL];for(let H=0;H<M.length;H++){let O=M[H];if(!O)continue;let{derivationIndex:y,isChange:w}=O,P=BX({change:w,index:y});if(!P)throw new V("toolbox_utxo_invalid_params",{error:`Could not derive private key for input ${H} at index ${y}`});N.signIdx(P,H,C)}return N}async function Q0({utxos:N,recipient:M,assetValue:C,memo:H,feeRate:O,feeOptionKey:y,changeAddress:w}){if(!B)throw new V("toolbox_utxo_no_signer");let P=O||(await zX(X))[y||m.Fast],S=H?R(H):null,RX=[{address:M,value:C.getBaseValue("number")}];if(S)RX.push({address:"",script:S,value:0});let rX=N.map(({hash:u,index:f,value:o,txHex:Y0,witnessUtxo:nX})=>({hash:u,index:f,txHex:Y0,value:o,witnessUtxo:nX?{script:nX.script,value:nX.value}:void 0})),{inputs:l,outputs:NX}=A({chain:X,feeRate:P,inputs:rX,outputs:RX});if(!(l&&NX))throw new V("toolbox_utxo_insufficient_balance",{assetValue:C,sender:"multiple addresses"});let p=new J2({allowLegacyWitnessUtxo:!0,version:1}),yX=N[0]?.address,vX=w||await z()||yX||M;n({chain:X,compiledMemo:S,inputs:l,outputs:NX,sender:vX,tx:p});let AX=l.map((u)=>{let f=N.find((o)=>o.hash===u.hash&&o.index===u.index);return f?{derivationIndex:f.derivationIndex,isChange:f.isChange}:{derivationIndex:0,isChange:!1}});return _X({inputDerivations:AX,tx:p}),p.finalize(),k(X).broadcastTx($X.encode(p.extract()))}function Z0({address:N,gapLimit:M=20}){if(!B)return;for(let C=0;C<M;C++){let H=b({change:!1,index:C}),O=b({change:!0,index:C}),y=H?.address===N?!1:O?.address===N;if(H?.address===N||O?.address===N)return{change:y,index:C}}return}function dX(N){if(!Y)throw new V("toolbox_utxo_no_signer");return Y.signTransaction(N)}async function G0(N){let M=await dX(N);return M.finalize(),await k(X).broadcastTx($X.encode(M.extract()))}return{accumulative:A,broadcastTx:(N)=>k(X).broadcastTx(N),bumpFee:PX,calculateTxSize:t,createKeysForPath:(N)=>LX({...N,chain:X}),createReplacementTransaction:FX,createTransaction:x2,deriveAddressAtIndex:b,derivePrivateKeyAtIndex:BX,estimateMaxSendableAmount:L1(X),estimateTransactionFee:z1(X),getAddress:z,getAddressFromKeys:Y2(X),getBalance:D2(X),getExtendedPublicKey:_,getExtendedPublicKeyInfo:D,getFeeRates:()=>zX(X),getInputsOutputsFee:h2,getNetworkForChain:()=>F(X),getPrivateKeyFromMnemonic:(N)=>Y1(LX({...N,chain:X}).privateKey,X),isRBFEnabled:JX,keys:U,resolveDerivationIndex:Z0,signAndBroadcastTransaction:G0,signTransaction:dX,signTransactionWithMultipleKeys:_X,transfer:W1(X,Y),transferFromMultipleAddresses:Q0,validateAddress:G2(X)}}var IX,uX;var UX=E(()=>{sX();MX();GX();bX();IX=[I.Dash,I.Dogecoin,I.Zcash,I.BitcoinCash],uX=[I.Bitcoin]});import{hex as p2}from"@scure/base";import{Chain as B1,derivationPathToString as _1,FeeOption as N1,NetworkDerivationPath as M1,SwapKitError as h,updateDerivationPath as D1}from"@swapkit/helpers";import{BCHSigHash as C1,CashAddrPrefix as u2,CashAddrType as o2,encodeCashAddr as c2,NETWORKS as H1,p2pkh as d2,Transaction as r2}from"@swapkit/utxo-signer";function TX(X){return XX(CX(X))}function O1(X){let $=F(g);function J(Q){return Q.sign(X.privateKey,[C1.ALL]),Q}function j(){let Q=d2(X.publicKey,$);if(!Q.hash)throw new h("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});let Z=c2({hash:Q.hash,prefix:u2.MAINNET,type:o2.P2PKH});return Promise.resolve(Z.replace(/^bitcoincash:/,""))}return{getAddress:j,signTransaction:J}}function q2(X){let $="phrase"in X?X.phrase:void 0,J="index"in X?X.index||0:0,j=_1("derivationPath"in X&&X.derivationPath?X.derivationPath:D1(M1[g],{index:J})),Q=$?LX({chain:g,derivationPath:j,phrase:$}):void 0,Z=Q?O1(Q):("signer"in X)?X.signer:void 0;function q(){return Promise.resolve(Z?.getAddress())}let{getBalance:L,getFeeRates:G,broadcastTx:Y,...U}=i({chain:g});function z(_,D=!0){return L(XX(CX(_)))}function W(_){if(!Z)throw new h("toolbox_utxo_no_signer");return Z.signTransaction(_)}async function B(_){let D=await W(_);return D.finalize(),await Y(p2.encode(D.extract()))}return{...U,broadcastTx:Y,buildTx:b1,createTransaction:n2,getAddress:q,getAddressFromKeys:k1,getBalance:z,getFeeRates:G,signAndBroadcastTransaction:B,signTransaction:W,stripPrefix:XX,stripToCashAddress:TX,transfer:V1({broadcastTx:Y,getFeeRates:G,signer:Z}),validateAddress:r}}async function n2({assetValue:X,recipient:$,memo:J,feeRate:j,sender:Q}){if(!r($))throw new h("toolbox_utxo_invalid_address",{address:$});let Z=Math.ceil(X.getBaseValue("number")+j*7500),q=await k(g).getUtxos({address:TX(Q),fetchTxHex:!0,targetValue:Z}),L=J?R(J):null,G=[],Y=x($);if(G.push({address:Y,value:X.getBaseValue("number")}),L)G.push({script:L,value:0});let{inputs:U,outputs:z}=A({chain:g,feeRate:j,inputs:q,outputs:G});if(!(U&&z))throw new h("toolbox_utxo_insufficient_balance",{assetValue:X,sender:Q});let W=new r2({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!L,version:1}),B=x(Q),{inputs:_,tx:D}=n({chain:g,compiledMemo:L,inputs:U,outputs:z.map((b)=>("address"in b)&&b.address?{...b,address:x(b.address)}:b),sender:B,tx:W});return{inputs:_,tx:D,utxos:U}}function V1({broadcastTx:X,getFeeRates:$,signer:J}){return async function({recipient:Q,assetValue:Z,feeOptionKey:q=N1.Fast,...L}){let G=await J?.getAddress();if(!(J&&G))throw new h("toolbox_utxo_no_signer");if(!Q)throw new h("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let Y=L.feeRate||(await $())[q],{tx:U}=await n2({...L,assetValue:Z,feeRate:Y,recipient:Q,sender:G}),z=await J.signTransaction(U);return z.finalize(),X(p2.encode(z.extract()))}}async function b1({assetValue:X,recipient:$,memo:J,feeRate:j,sender:Q}){let Z=CX($);if(!r(Z))throw new h("toolbox_utxo_invalid_address",{address:Z});let q=Math.ceil(X.getBaseValue("number")+j*7500),L=await k(g).getUtxos({address:TX(Q),fetchTxHex:!0,targetValue:q}),G=Number(j.toFixed(0)),Y=J?R(J):null,U=[];if(U.push({address:x($),value:X.getBaseValue("number")}),Y)U.push({script:Y,value:0});let{inputs:z,outputs:W}=A({chain:g,feeRate:G,inputs:L,outputs:U});if(!(z&&W))throw new h("toolbox_utxo_insufficient_balance",{assetValue:X,sender:Q});let B=new r2({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!Y,version:1}),{inputs:_,tx:D}=n({chain:g,compiledMemo:Y,inputs:z,outputs:W,sender:x(Q),tx:B});return{inputs:_,tx:D,utxos:L}}function k1(X){let $=H1.bitcoinCash,J=d2(X.publicKey,$);if(!J.hash)throw new h("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return c2({hash:J.hash,prefix:u2.MAINNET,type:o2.P2PKH}).replace(/^bitcoincash:/,"")}var g;var oX=E(()=>{GX();UX();bX();g=B1.BitcoinCash});import{createBase58check as I1,hex as f1}from"@scure/base";import{HDKey as s2}from"@scure/bip32";import{mnemonicToSeedSync as a2}from"@scure/bip39";import{Chain as cX,derivationPathToString as T1,FeeOption as E1,NetworkDerivationPath as F1,SKConfig as t2,SwapKitError as EX,updateDerivationPath as P1}from"@swapkit/helpers";import{Address as R1,createZcashTransaction as y1,OutScript as v1,PCZT as A1,utils as e2,WIF as w1,ZCASH_NETWORK as S1,ZCASH_TEST_NETWORK as K1,ZcashConsensusBranchId as m1,ZcashPSBT as g1,ZcashSigHash as L2,ZcashVersionGroupId as l1}from"@swapkit/utxo-signer";import{match as x1,P as z2}from"ts-pattern";function X0(){let{isStagenet:X}=t2.get("envs");return X?K1:S1}function p1(X){return h1.encode(X)}function u1({phrase:X,derivationPath:$}){let J=a2(X),Q=s2.fromMasterSeed(J).derive($);if(!Q.privateKey||!Q.publicKey)throw new EX("toolbox_utxo_invalid_params");let{privateKey:Z,publicKey:q}=Q,L=e2.hash160(q),{isStagenet:G}=t2.get("envs"),Y=G?new Uint8Array([29,37]):new Uint8Array([28,184]),U=new Uint8Array(Y.length+L.length);U.set(Y,0),U.set(L,Y.length);let z=p1(U);return{getAddress:()=>Promise.resolve(z),signTransaction:(W)=>{if(W instanceof g1){let B=W.toPCZT();return B.signAllInputs(Z,q,L2.ALL),B.finalizeAllInputs(),Promise.resolve(B.extract())}if(W instanceof A1)return W.signAllInputs(Z,q,L2.ALL),W.finalizeAllInputs(),Promise.resolve(W.extract());return W.signAllInputs(Z,q,L2.ALL),Promise.resolve(W)}}}function o1({inputs:X,outputs:$,tx:J,sender:j,compiledMemo:Q}){let Z=X0();for(let q of X){let L=R1(Z).decode(j),G=v1.encode(L);J.addInput({index:q.index,script:G,sequence:4294967295,txid:f1.decode(q.hash),value:BigInt(q.value)})}for(let q of $){let L="address"in q&&q.address?q.address:j,G=q.script;if(G&&!Q)continue;if(G&&Q)J.addOutput({amount:0n,script:Q});else J.addOutputAddress(L,BigInt(q.value),Z)}return{inputs:X,tx:J}}async function i2(X){let{assetValue:$,recipient:J,memo:j,feeRate:Q,sender:Z,fetchTxHex:q}=X,L=j?R(j):null,G=await k(cX.Zcash).getUtxos({address:Z,fetchTxHex:q!==!1}),Y=[{address:J,value:Number($.getBaseValue("string"))},...L?[{script:L,value:0}]:[]],{inputs:U,outputs:z}=A({chain:cX.Zcash,changeAddress:Z,feeRate:Q,inputs:G,outputs:Y});if(!(U&&z))throw new EX("toolbox_utxo_insufficient_balance",{assetValue:$,sender:Z});let W=y1({consensusBranchId:m1.NU6_2,expiryHeight:0,lockTime:0,version:4,versionGroupId:l1.SAPLING}),{tx:B,inputs:_}=o1({compiledMemo:L,inputs:U,outputs:z,sender:Z,tx:W});return{inputs:_,outputs:z,tx:B}}function U2(X){let $=x1(X).with({signer:z2.not(z2.nullish)},({signer:G})=>G).with({phrase:z2.string},({phrase:G,derivationPath:Y,index:U=0})=>{let z=Y||F1[cX.Zcash]||[44,133,0,0,0],W=P1(z,{index:U}),B=T1(W);return u1({derivationPath:B,phrase:G})}).otherwise(()=>{return}),J=i({chain:cX.Zcash,signer:$});async function j(G){if(!$)throw new EX("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:U=E1.Fast,...z}){let W=await $?.getAddress();if(!($&&W))throw new EX("toolbox_utxo_no_signer");let B=z.feeRate||(await J.getFeeRates())[U],{tx:_}=await i2({...z,assetValue:Y,feeRate:B,recipient:G,sender:W}),b=(await $.signTransaction(_)).toHex();return J.broadcastTx(b)}function q({phrase:G,derivationPath:Y="m/44'/133'/0'/0/0"}){let U=a2(G),W=s2.fromMasterSeed(U).derive(Y);if(!W.privateKey||!W.publicKey)throw new EX("toolbox_utxo_invalid_params");return{privateKey:W.privateKey,publicKey:W.publicKey}}function L({phrase:G,derivationPath:Y="m/44'/133'/0'/0/0"}){let U=q({derivationPath:Y,phrase:G}),z=X0();return w1(z).encode(U.privateKey)}return{...J,createKeysForPath:q,createTransaction:i2,getPrivateKeyFromMnemonic:L,signAndBroadcastTransaction:Q,signTransaction:j,transfer:Z,validateAddress:YX}}var h1;var W2=E(()=>{GX();UX();bX();h1=I1(e2.sha256)});import{hex as c1}from"@scure/base";import{HDKey as d1}from"@scure/bip32";import{derivationPathToString as r1}from"@swapkit/helpers";function $0({xpub:X,chain:$,count:J,startIndex:j=0,accountIndex:Q}){if(v("count",J),J<1)throw RangeError("count must be at least 1");v("startIndex",j);let Z=F($),q=d1.fromExtendedKey(X,Z.bip32),L=c({accountIndex:Q,chain:$}),G=s(L),Y=[];for(let U of[!1,!0]){let z=q.deriveChild(Number(U));for(let W=0;W<J;W++){let B=j+W,_=z.deriveChild(B);if(!_.publicKey)continue;let D=jX({accountIndex:Q,chain:$,change:U,index:B});Y.push({accountIndex:G,address:fX({chain:$,network:Z,publicKey:_.publicKey}),change:U,index:B,path:r1(D),pubkey:c1.encode(_.publicKey)})}}return Y}var J0=E(()=>{MX();UX()});import{Chain as WX,SwapKitError as n1}from"@swapkit/helpers";function i1(X,$){switch(X){case WX.BitcoinCash:return q2($||{});case WX.Zcash:return U2($);case WX.Bitcoin:case WX.Dogecoin:case WX.Litecoin:case WX.Dash:return i({chain:X,...$});default:throw new n1("toolbox_utxo_not_supported",{chain:X})}}var j0=E(()=>{oX();UX();W2();MX();J0();oX();bX()});var s1={};U0(s1,{validateZcashAddress:()=>YX,validateUtxoAddress:()=>Z2,validateBchAddress:()=>r,toLegacyAddress:()=>x,toCashAddress:()=>CX,stripToCashAddress:()=>TX,stripPrefix:()=>XX,nonSegwitChains:()=>IX,isValidAddress:()=>eX,getUtxoToolbox:()=>i1,getUtxoNetwork:()=>P0,getUtxoApi:()=>k,getUTXOAddressValidator:()=>G2,getUTXOAddressPath:()=>jX,getUTXOAccountPath:()=>c,getUTXOAccountIndexFromPath:()=>s,getScriptTypeForAddress:()=>ZX,getOutputSize:()=>OX,getNetworkForChain:()=>F,getInputSize:()=>d,getDustThreshold:()=>VX,detectAddressNetwork:()=>X2,deriveAddressesFromXpub:()=>$0,createZcashToolbox:()=>U2,createUTXOToolbox:()=>i,createHDWalletHelpers:()=>_2,createCustomUtxoApi:()=>F0,createBCHToolbox:()=>q2,compileMemo:()=>R,calculateTxSize:()=>t,assertDerivationIndex:()=>v,addressFromKeysGetter:()=>Y2,addInputsAndOutputs:()=>n,accumulative:()=>A,UtxoNetwork:()=>tX,UTXOScriptType:()=>hX,TX_OVERHEAD:()=>lX,SEGWIT_MARKER_FLAG_WEIGHT:()=>xX,OutputSizes:()=>HX,OP_RETURN_OVERHEAD:()=>P2,MIN_TX_FEE:()=>o0,InputSizes:()=>gX});var a1=E(()=>{UX();MX();GX();j0();oX();W2()});a1();export{YX as validateZcashAddress,Z2 as validateUtxoAddress,r as validateBchAddress,x as toLegacyAddress,CX as toCashAddress,TX as stripToCashAddress,XX as stripPrefix,IX as nonSegwitChains,eX as isValidAddress,i1 as getUtxoToolbox,P0 as getUtxoNetwork,k as getUtxoApi,G2 as getUTXOAddressValidator,jX as getUTXOAddressPath,c as getUTXOAccountPath,s as getUTXOAccountIndexFromPath,ZX as getScriptTypeForAddress,OX as getOutputSize,F as getNetworkForChain,d as getInputSize,VX as getDustThreshold,X2 as detectAddressNetwork,$0 as deriveAddressesFromXpub,U2 as createZcashToolbox,i as createUTXOToolbox,_2 as createHDWalletHelpers,F0 as createCustomUtxoApi,q2 as createBCHToolbox,R as compileMemo,t as calculateTxSize,v as assertDerivationIndex,Y2 as addressFromKeysGetter,n as addInputsAndOutputs,A as accumulative,tX as UtxoNetwork,hX as UTXOScriptType,lX as TX_OVERHEAD,xX as SEGWIT_MARKER_FLAG_WEIGHT,HX as OutputSizes,P2 as OP_RETURN_OVERHEAD,o0 as MIN_TX_FEE,gX as InputSizes};
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,4 +1,4 @@
1
- import { Transaction } from "@stricahq/typhonjs";
1
+ import type { Transaction } from "@stricahq/typhonjs";
2
2
  import { AssetValue, type ChainSigner, type DerivationPathArray } from "@swapkit/helpers";
3
3
  import type { CardanoCreateTransactionParams, CardanoProvider, CardanoTransferParams } from "./types";
4
4
  type CardanoChainSigner = ChainSigner<string, string> & {
@@ -1,4 +1,3 @@
1
- import { DirectSecp256k1HdWallet } from "@cosmjs/proto-signing";
2
1
  import type { Account } from "@cosmjs/stargate";
3
2
  import { AssetValue, Chain, type ChainId, type CosmosChain, type DerivationPathArray, type GenericTransferParams, SwapKitNumber } from "@swapkit/helpers";
4
3
  import { type CosmosTransaction } from "@swapkit/helpers/api";
@@ -14,7 +13,7 @@ export declare function getSignerFromPhrase({ phrase, prefix, ...derivationParam
14
13
  index?: number;
15
14
  } | {
16
15
  derivationPath: string;
17
- })): Promise<DirectSecp256k1HdWallet>;
16
+ })): Promise<import("@cosmjs/proto-signing/build").DirectSecp256k1HdWallet>;
18
17
  export declare function getSignerFromPrivateKey({ privateKey, prefix }: {
19
18
  privateKey: Uint8Array;
20
19
  prefix: string;
@@ -44,7 +43,7 @@ export declare function createCosmosToolbox({ chain, ...toolboxParams }: CosmosT
44
43
  getSignerFromPhrase: ({ phrase, derivationPath }: {
45
44
  phrase: string;
46
45
  derivationPath: DerivationPathArray;
47
- }) => Promise<DirectSecp256k1HdWallet>;
46
+ }) => Promise<import("@cosmjs/proto-signing/build").DirectSecp256k1HdWallet>;
48
47
  getSignerFromPrivateKey: (privateKey: Uint8Array) => Promise<import("@cosmjs/proto-signing/build").DirectSecp256k1Wallet>;
49
48
  signAndBroadcastTransaction: (transaction: CosmosTransaction) => Promise<string>;
50
49
  signTransaction: (transaction: CosmosTransaction) => Promise<TxRaw>;
@@ -1,9 +1,19 @@
1
1
  import { Chain, type EVMChain, type NetworkParams } from "@swapkit/helpers";
2
2
  import type { Authorization, JsonFragment, Signer } from "ethers";
3
- import { JsonRpcProvider } from "ethers";
3
+ import { FallbackProvider, JsonRpcProvider } from "ethers";
4
4
  import type { EIP712TypedData } from "./types";
5
5
  export declare function getProviderSync(url: string): JsonRpcProvider;
6
6
  export declare function getProvider(chain: EVMChain, customUrl?: string): Promise<JsonRpcProvider>;
7
+ /**
8
+ * Builds the default read provider for a chain with ZERO network I/O at construct time.
9
+ *
10
+ * Passing a static `Network` (the chain's known chainId) tells ethers not to probe `eth_chainId`,
11
+ * so neither the single provider nor the FallbackProvider makes a request until a method is actually
12
+ * called. With multiple configured RPC URLs it returns a `FallbackProvider` (quorum 1, priority by
13
+ * order) that fails over across endpoints on the first real request — so the toolbox is never bound
14
+ * to a single possibly-dead URL "at load", yet it performs no eager probe.
15
+ */
16
+ export declare function getFallbackProvider(chain: EVMChain): JsonRpcProvider | FallbackProvider;
7
17
  export declare function toHexString(value: bigint): string;
8
18
  export declare function getNetworkParams<C extends EVMChain>(chain: C): () => C extends Chain.Ethereum ? undefined : NetworkParams;
9
19
  export declare function getIsEIP1559Compatible<C extends EVMChain>(chain: C): boolean;
@@ -1,5 +1,4 @@
1
1
  import type { Account, Contract } from "@near-js/accounts";
2
- import { JsonRpcProvider } from "@near-js/providers";
3
2
  import type { SignedTransaction, Transaction } from "@near-js/transactions";
4
3
  import { AssetValue } from "@swapkit/helpers";
5
4
  import { getNearSignerFromPhrase, getNearSignerFromPrivateKey, validateNearAddress } from "./helpers/core";
@@ -22,7 +21,7 @@ export declare function getNearToolbox(toolboxParams?: NearToolboxParams): {
22
21
  getAddress: () => Promise<string>;
23
22
  getBalance: (address: string, scamFilter?: boolean) => Promise<AssetValue[]>;
24
23
  getGasPrice: () => Promise<string>;
25
- getNearProvider: () => Promise<JsonRpcProvider>;
24
+ getNearProvider: () => Promise<import("@near-js/providers").JsonRpcProvider>;
26
25
  getPublicKey: () => Promise<string>;
27
26
  getSignerFromPhrase: typeof getNearSignerFromPhrase;
28
27
  getSignerFromPrivateKey: typeof getNearSignerFromPrivateKey;
@@ -1,4 +1,4 @@
1
- import { GatewayApiClient } from "@radixdlt/babylon-gateway-api-sdk";
1
+ import type { GatewayApiClient } from "@radixdlt/babylon-gateway-api-sdk";
2
2
  import { AssetValue, type SKConfigIntegrations } from "@swapkit/helpers";
3
3
  export type RadixWallet = ReturnType<typeof getRadixToolbox>;
4
4
  export declare function validateRadixAddress(address: string): boolean;
@@ -7,7 +7,7 @@ export declare function getRadixToolbox({ dappConfig }?: {
7
7
  }): {
8
8
  getAddress: () => string;
9
9
  getBalance: (address: string) => Promise<AssetValue[]>;
10
- networkApi: GatewayApiClient;
10
+ getNetworkApi: () => Promise<GatewayApiClient>;
11
11
  signAndBroadcast: (params: any) => Promise<string>;
12
12
  validateAddress: typeof validateRadixAddress;
13
13
  };