@swapkit/toolboxes 4.13.1 → 4.13.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/src/tron/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var Vn=Object.create;var{getPrototypeOf:bn,defineProperty:j,getOwnPropertyNames:on,getOwnPropertyDescriptor:yn}=Object,tn=Object.prototype.hasOwnProperty;function rn(n){return this[n]}var Hn,Ln,hi=(n,i,o)=>{var t=n!=null&&typeof n==="object";if(t){var a=i?Hn??=new WeakMap:Ln??=new WeakMap,g=a.get(n);if(g)return g}o=n!=null?Vn(bn(n)):{};let m=i||!n||!n.__esModule?j(o,"default",{value:n,enumerable:!0}):o;for(let w of on(n))if(!tn.call(m,w))j(m,w,{get:rn.bind(n,w),enumerable:!0});if(t)a.set(n,m);return m},dn=(n)=>{var i=(nn??=new WeakMap).get(n),o;if(i)return i;if(i=j({},"__esModule",{value:!0}),n&&typeof n==="object"||typeof n==="function"){for(var t of on(n))if(!tn.call(i,t))j(i,t,{get:rn.bind(n,t),enumerable:!(o=yn(n,t))||o.enumerable})}return nn.set(n,i),i},nn;var ln=(n)=>n;function In(n,i){this[n]=ln.bind(null,i)}var pn=(n,i)=>{for(var o in i)j(n,o,{get:i[o],enumerable:!0,configurable:!0,set:In.bind(i,o)})};var X=(n,i)=>()=>(n&&(i=n(n=0)),i);function K(n,i){let o=0n,t=0n,a=i;while(a<n.length&&a-i<10){let g=n[a++];if(g===void 0)break;if(o|=BigInt(g&127)<<t,t+=7n,(g&128)===0)return[o,a]}throw new C.SwapKitError("toolbox_tron_transaction_creation_failed")}function M(n){let i=[],o=n<0n?n+2n**64n:n;while(o>=128n)i.push(Number(o&0x7fn)|128),o>>=7n;return i.push(Number(o)),i}function B(n,i,o){let t=n.get(i);if(t)t.push(o);else n.set(i,[o])}function ii(n){let i=new Map,o=0;while(o<n.length){let[t,a]=K(n,o);o=a;let g=Number(t>>3n),m=Number(t&7n);if(m===A){let[w,_]=K(n,o);o=_,B(i,g,{data:new Uint8Array(M(w)),wireType:A})}else if(m===W){let[w,_]=K(n,o);o=_;let $=Number(w);if($<0||o+$>n.length)throw new C.SwapKitError("toolbox_tron_transaction_creation_failed");let D=n.slice(o,o+$);o+=$,B(i,g,{data:D,wireType:W})}else if(m===an){if(o+8>n.length)throw new C.SwapKitError("toolbox_tron_transaction_creation_failed");let w=n.slice(o,o+8);o+=8,B(i,g,{data:w,wireType:an})}else if(m===cn){if(o+4>n.length)throw new C.SwapKitError("toolbox_tron_transaction_creation_failed");let w=n.slice(o,o+4);o+=4,B(i,g,{data:w,wireType:cn})}else throw new C.SwapKitError("toolbox_tron_transaction_creation_failed")}return i}function oi(n){let i=[];for(let[g,m]of[...n.entries()].sort(([w],[_])=>w-_))for(let{wireType:w,data:_}of m){let $=BigInt(g<<3|w);if(i.push(new Uint8Array(M($))),w===W)i.push(new Uint8Array(M(BigInt(_.length))));i.push(_)}let o=i.reduce((g,m)=>g+m.length,0),t=new Uint8Array(o),a=0;for(let g of i)t.set(g,a),a+=g.length;return t}function gn(n,i){if(!n||n.length%2!==0)throw new C.SwapKitError("toolbox_tron_transaction_creation_failed");let o=Q.hexToBytes(n),t=ii(o);if(i.expiration!==void 0)t.set(En,[{data:new Uint8Array(M(BigInt(i.expiration))),wireType:A}]);if(i.data!==void 0)t.set(sn,[{data:Q.hexToBytes(i.data),wireType:W}]);if(i.fee_limit!==void 0)t.set(ni,[{data:new Uint8Array(M(BigInt(i.fee_limit))),wireType:A}]);let a=oi(t),g=Q.bytesToHex(a),m=Q.bytesToHex(fn.sha256(a));return{raw_data_hex:g,txID:m}}var fn,Q,C,A=0,an=1,W=2,cn=5,En=8,sn=10,ni=18;var mn=X(()=>{fn=require("@noble/hashes/sha2.js"),Q=require("@noble/hashes/utils.js"),C=require("@swapkit/helpers")});function q(n){if(typeof n!=="string")return!1;try{let i=S.decode(n);return i.length===21&&i[0]===Pn}catch{return!1}}function wn(n){return F.bytesToHex(S.decode(n))}function ri(n){return S.decode(n).slice(1)}function _n(n){let i=N.secp256k1.getPublicKey(F.hexToBytes(n),!1),o=Tn.keccak_256(i.slice(1)).slice(-20),t=new Uint8Array(21);return t[0]=Pn,t.set(o,1),S.encode(t)}function vn({txID:n,privateKey:i}){let o=N.secp256k1.sign(F.hexToBytes(n),F.hexToBytes(i),{format:"recovered",prehash:!1}),t=o[0]??0,a=F.bytesToHex(o.slice(1,33)),g=F.bytesToHex(o.slice(33,65)),m=(t+27).toString(16).padStart(2,"0");return a+g+m}function Y({txID:n,raw_data_hex:i}){let o=F.bytesToHex(R.sha256(F.hexToBytes(i)));if(n!==o)throw new V.SwapKitError("toolbox_tron_token_transfer_failed")}function ai(n){return`000000000000000000000000${F.bytesToHex(ri(n))}`}function ci(n){let i=typeof n==="bigint"?n:BigInt(n);if(i<0n||i>=ti)throw new V.SwapKitError("toolbox_tron_invalid_token_identifier",{identifier:i.toString()});return i.toString(16).padStart(64,"0")}function Z(n){return n.map(({type:i,value:o})=>i==="address"?ai(o):ci(BigInt(o))).join("")}function un(n){return F.bytesToHex(new TextEncoder().encode(n))}var N,R,Tn,F,en,V,S,Pn=65,ti;var b=X(()=>{N=require("@noble/curves/secp256k1.js"),R=require("@noble/hashes/sha2.js"),Tn=require("@noble/hashes/sha3.js"),F=require("@noble/hashes/utils.js"),en=require("@scure/base"),V=require("@swapkit/helpers"),S=en.createBase58check(R.sha256),ti=2n**256n});function hn(){try{return v.getRPCUrlSync(v.Chain.Tron)}catch{return xn}}function Fn(){let n=new AbortController,i=setTimeout(()=>n.abort(),Ti);return{cleanup:()=>clearTimeout(i),signal:n.signal}}async function J(n,i){let{signal:o,cleanup:t}=Fn();try{let a=await fetch(`${hn()}${n}`,{body:JSON.stringify(i),headers:{"Content-Type":"application/json"},method:"POST",signal:o});if(!a.ok)throw new v.SwapKitError("toolbox_tron_trongrid_api_error",{message:`${a.status} ${a.statusText} on ${n}`});return await a.json()}finally{t()}}async function qn(n,i){let{signal:o,cleanup:t}=Fn();try{let a=await fetch(`${i??hn()}${n}`,{headers:{"Content-Type":"application/json"},signal:o});if(!a.ok)throw new v.SwapKitError("toolbox_tron_trongrid_api_error",{message:`${a.status} ${a.statusText} on ${n}`});return await a.json()}finally{t()}}async function $n(n){if(!q(n))throw new v.SwapKitError("toolbox_tron_trongrid_api_error",{address:n,message:"Invalid address"});try{let i=await qn(`/v1/accounts/${n}`,xn);if(!(i.success&&i.data)||i.data.length===0)return;let o;try{o=wn(n).toLowerCase()}catch{o=n.toLowerCase()}let t=i.data.find((a)=>a.address.toLowerCase()===o);if(!t)return;return{balance:t.balance,trc20:t.trc20||[]}}catch(i){if(i instanceof v.SwapKitError)throw i;throw new v.SwapKitError("toolbox_tron_trongrid_api_error",{address:n,message:i instanceof Error?i.message:"Unknown error"})}}async function zn({from:n,to:i,amount:o}){let a=await J("/wallet/createtransaction",{amount:o,owner_address:n,to_address:i,visible:!0});if(!a.txID||!a.raw_data_hex||!a.raw_data)throw new v.SwapKitError("toolbox_tron_transaction_creation_failed");let m=a.raw_data?.contract?.[0]?.parameter?.value;if(m?.to_address!==i||m?.owner_address!==n||m?.amount!==o)throw new v.SwapKitError("toolbox_tron_transaction_creation_failed");return Y(a),a}async function Cn({ownerAddress:n,contractAddress:i,functionSelector:o,parameter:t,feeLimit:a,callValue:g=0}){let m=await J("/wallet/triggersmartcontract",{call_value:g,contract_address:i,fee_limit:a,function_selector:o,owner_address:n,parameter:t,visible:!0});if(!m.result.result||!m.transaction?.txID||!m.transaction?.raw_data_hex)throw new v.SwapKitError("toolbox_tron_transaction_creation_failed");let _=m.transaction.raw_data?.contract?.[0]?.parameter?.value;if(_?.contract_address!==i||_?.owner_address!==n)throw new v.SwapKitError("toolbox_tron_transaction_creation_failed");return Y(m.transaction),m.transaction}function Qn({ownerAddress:n,contractAddress:i,functionSelector:o,parameter:t}){return J("/wallet/triggerconstantcontract",{contract_address:i,function_selector:o,owner_address:n,parameter:t,visible:!0})}async function O(n){let{result:i,txid:o}=await J("/wallet/broadcasttransaction",{raw_data:n.raw_data,raw_data_hex:n.raw_data_hex,signature:n.signature,txID:n.txID,visible:n.visible});if(!i||!o)throw new v.SwapKitError("toolbox_tron_token_transfer_failed");return o}async function k(){let n={};try{let{chainParameter:i}=await qn("/wallet/getchainparameters");for(let o of i)n[o.key]=o.value}catch(i){v.warnOnce({condition:!0,id:"tron_chain_params_failed",warning:`Failed to fetch chain params, using defaults: ${i instanceof Error?i.message:i}`})}return{bandwidthFee:n.getTransactionFee??fi,createAccountFee:n.getCreateAccountFee??gi,energyFee:n.getEnergyFee??mi}}async function y(n){try{let i=await J("/wallet/getaccountresource",{address:n,visible:!0});return{bandwidth:{free:(i.freeNetLimit??600)-(i.freeNetUsed??0),total:i.NetLimit??0,used:i.NetUsed??0},energy:{total:i.EnergyLimit??0,used:i.EnergyUsed??0}}}catch(i){return v.warnOnce({condition:!0,id:"tron_account_resources_failed",warning:`Failed to fetch account resources, using defaults: ${i instanceof Error?i.message:i}`}),{bandwidth:{free:600,total:0,used:0},energy:{total:0,used:0}}}}async function H(n){try{let i=await J("/wallet/getaccount",{address:n,visible:!0});return i&&Object.keys(i).length>0}catch{return!1}}async function L(n){try{let{energy_used:i}=await Qn({...n,ownerAddress:n.sender});return i}catch(i){return v.warnOnce({condition:!0,id:"tron_energy_estimation_failed",warning:`Failed to estimate energy, using default: ${i instanceof Error?i.message:i}`}),65000}}async function Yn({assetAddress:n,owner:i,spender:o}){let t=Z([{type:"address",value:i},{type:"address",value:o}]),g=(await Qn({contractAddress:n,functionSelector:"allowance(address,address)",ownerAddress:o,parameter:t})).constant_result?.[0];if(!g)return 0n;try{return BigInt(`0x${g}`)}catch{return 0n}}var v,xn="https://api.trongrid.io",fi=1000,gi=1e5,mi=420,Ti=30000;var Zn=X(()=>{b();v=require("@swapkit/helpers")});function On({phrase:n,derivationPath:i}){let o=jn.HDKey.fromMasterSeed(Xn.mnemonicToSeedSync(n)).derive(i);if(!o.privateKey)throw new r.SwapKitError("toolbox_tron_no_signer");return Un.bytesToHex(o.privateKey)}function Gn({phrase:n,derivationPath:i,index:o}){let t=i||r.derivationPathToString(r.updateDerivationPath(r.NetworkDerivationPath[r.Chain.Tron],{index:o||0}));return On({derivationPath:t,phrase:n})}function vi({phrase:n,derivationPath:i}){let o=On({derivationPath:i,phrase:n}),t=_n(o);return{getAddress:()=>Promise.resolve(t),signTransaction:(a)=>{Y(a);let g=vn({privateKey:o,txID:a.txID});return Promise.resolve({...a,signature:[g]})}}}function Jn({transaction:n,memo:i,expiration:o,feeLimit:t}){let a={},g={};if(t!==void 0&&n.raw_data)a.fee_limit=t,g.fee_limit=t;if(i){let _=un(i);a.data=_,g.data=_}if(o){let _=n.raw_data.expiration+o*1000;a.expiration=_,g.expiration=_}if(Object.keys(a).length===0)return n;let{raw_data_hex:m,txID:w}=gn(n.raw_data_hex,a);return{...n,raw_data:{...n.raw_data,...g},raw_data_hex:m,txID:w}}function Bn(n={}){let i="index"in n?n.index||0:0,o=r.derivationPathToString("derivationPath"in n&&n.derivationPath?n.derivationPath:r.updateDerivationPath(r.NetworkDerivationPath[r.Chain.Tron],{index:i})),t,a=!1;function g(){if(a)return Promise.resolve(t);return t=U.match(n).with({phrase:U.P.string},({phrase:c})=>vi({derivationPath:o,phrase:c})).with({signer:U.P.not(U.P.nullish)},({signer:c})=>c).otherwise(()=>{return}),a=!0,Promise.resolve(t)}async function m(){let c=await g();if(!c)throw new r.SwapKitError("toolbox_tron_no_signer");return c.getAddress()}async function w(c){let f=c||Pi,e=await k(),P=f*e.energyFee,T=Math.ceil(P*1.5);return Math.min(Math.max(T,1e7),150000000)}async function _({contractAddress:c,functionSelector:f,parameter:e,sender:P,memo:T,expiration:h}){let u=await L({contractAddress:c,functionSelector:f,parameter:e,sender:P}),x=await w(u),z=await Cn({contractAddress:c,feeLimit:x,functionSelector:f,ownerAddress:P,parameter:e});return Jn({expiration:h,feeLimit:x,memo:T,transaction:z})}async function $(c){if(!q(c))return[r.AssetValue.from({chain:r.Chain.Tron})];try{let f=await $n(c);if(!f)return[r.AssetValue.from({chain:r.Chain.Tron})];let e=[r.AssetValue.from({chain:r.Chain.Tron,fromBaseDecimal:6,value:String(f.balance)})],P=f.trc20?.find((T)=>(d in T));if(P){let T=P[d];e.push(r.AssetValue.from({asset:`TRON.USDT-${d}`,fromBaseDecimal:6,value:T}))}return e}catch(f){return r.warnOnce({condition:!0,id:"tron_toolbox_get_balance_failed",warning:`Tron API getBalance failed: ${f instanceof Error?f.message:f}`}),[r.AssetValue.from({chain:r.Chain.Tron})]}}async function D({recipient:c,assetValue:f,memo:e,expiration:P}){if(!q(c))throw new r.SwapKitError("toolbox_tron_token_transfer_failed");let T=await g();if(!T)throw new r.SwapKitError("toolbox_tron_no_signer");let h=await m(),u=await I({assetValue:f,expiration:P,memo:e,recipient:c,sender:h}),x=await T.signTransaction(u),z=await O(x);if(!z)throw new r.SwapKitError("toolbox_tron_token_transfer_failed");return z}function l({requiredBandwidth:c,resources:f,feePerUnit:e}){let P=Math.max(0,f.free+f.total-f.used);return c>P?(c-P)*e:0}async function Wn({recipient:c,senderAddress:f}){let[e,P,T]=await Promise.all([k(),H(c),y(f)]),h=P?0:e.createAccountFee,u=l({feePerUnit:e.bandwidthFee,requiredBandwidth:ei,resources:T.bandwidth});return r.AssetValue.from({chain:r.Chain.Tron,fromBaseDecimal:r.BaseDecimal.TRON,value:h+u})}async function Sn({assetValue:c,recipient:f,senderAddress:e}){let P=c.address;if(!P)throw new r.SwapKitError("toolbox_tron_invalid_token_identifier",{identifier:c.toString()});let[T,h,u,x]=await Promise.all([k(),H(f),y(e),L({contractAddress:P,functionSelector:"transfer(address,uint256)",parameter:Z([{type:"address",value:f},{type:"uint256",value:c.getBaseValue("string")}]),sender:e})]),z=h?0:T.createAccountFee,G=l({feePerUnit:T.bandwidthFee,requiredBandwidth:wi,resources:u.bandwidth}),s=Math.max(0,u.energy.total-u.energy.used),Rn=x>s?(x-s)*T.energyFee:0;return r.AssetValue.from({chain:r.Chain.Tron,fromBaseDecimal:r.BaseDecimal.TRON,value:z+G+Rn})}async function kn({assetValue:c,recipient:f,sender:e}){let P=await g();try{let T=e?e:P?await m():void 0;if(!T)return c.isGasAsset?r.AssetValue.from({chain:r.Chain.Tron,value:0.1}):r.AssetValue.from({chain:r.Chain.Tron,value:15});return c.isGasAsset?Wn({recipient:f,senderAddress:T}):Sn({assetValue:c,recipient:f,senderAddress:T})}catch(T){throw r.warnOnce({condition:!0,id:"tron_toolbox_fee_estimation_failed",warning:`Failed to calculate exact fee: ${T instanceof Error?T.message:T}`}),new r.SwapKitError("toolbox_fee_estimation_failed",{chain:r.Chain.Tron,error:T})}}async function I({recipient:c,assetValue:f,memo:e,sender:P,expiration:T}){if(!q(c)||!q(P))throw new r.SwapKitError("toolbox_tron_token_transfer_failed");if(f.isGasAsset){let u=await zn({amount:f.getBaseValue("number"),from:P,to:c});return Jn({expiration:T,memo:e,transaction:u})}let h=f.address;if(!h)throw new r.SwapKitError("toolbox_tron_invalid_token_identifier",{identifier:f.toString()});return _({contractAddress:h,expiration:T,functionSelector:"transfer(address,uint256)",memo:e,parameter:Z([{type:"address",value:c},{type:"uint256",value:f.getBaseValue("string")}]),sender:P})}async function p(c){Y(c);let f=await g();if(!f)throw new r.SwapKitError("toolbox_tron_no_signer");return f.signTransaction(c)}async function Dn(c){let f=await p(c);return O(f)}function E({assetAddress:c,spenderAddress:f,from:e}){return Yn({assetAddress:c,owner:e,spender:f})}async function Kn({assetAddress:c,spenderAddress:f,from:e,amount:P}){let T=await E({assetAddress:c,from:e,spenderAddress:f});if(!P)return T>0n;return T>=BigInt(P)}async function Nn({assetAddress:c,spenderAddress:f,amount:e,from:P}){if(!q(c)||!q(f))throw new r.SwapKitError("toolbox_tron_approve_failed");let T=await g();if(!T)throw new r.SwapKitError("toolbox_tron_no_signer");let h=P||await m(),u=e!==void 0?BigInt(e).toString():_i;try{let x=await _({contractAddress:c,functionSelector:"approve(address,uint256)",parameter:Z([{type:"address",value:f},{type:"uint256",value:u}]),sender:h}),z=await T.signTransaction(x),G=await O(z);if(!G)throw new r.SwapKitError("toolbox_tron_approve_failed");return G}catch(x){if(x instanceof r.SwapKitError)throw x;throw new r.SwapKitError("toolbox_tron_approve_failed",{error:x})}}return{approve:Nn,broadcastTransaction:O,createTransaction:I,estimateTransactionFee:kn,getAddress:m,getApprovedAmount:E,getBalance:$,getRpcUrl:()=>r.getRPCUrl(r.Chain.Tron),isApproved:Kn,signAndBroadcastTransaction:Dn,signTransaction:p,transfer:D,validateAddress:q}}var Un,jn,Xn,r,U,Mn,ei=268,Pi=65000,wi=345,d="TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",_i="115792089237316195423570985008687907853269984665640564039457584007913129639935";var An=X(()=>{mn();Zn();b();Un=require("@noble/hashes/utils.js"),jn=require("@scure/bip32"),Xn=require("@scure/bip39"),r=require("@swapkit/helpers"),U=require("ts-pattern"),Mn=q});var ui={};pn(ui,{validateTronAddress:()=>Mn,getTronToolbox:()=>Bn,getTronPrivateKeyFromMnemonic:()=>Gn});module.exports=dn(ui);var xi=X(()=>{An()});xi();
|
|
1
|
+
var bn=Object.create;var{getPrototypeOf:dn,defineProperty:j,getOwnPropertyNames:on,getOwnPropertyDescriptor:yn}=Object,tn=Object.prototype.hasOwnProperty;function rn(n){return this[n]}var Vn,Hn,hi=(n,i,o)=>{var t=n!=null&&typeof n==="object";if(t){var a=i?Vn??=new WeakMap:Hn??=new WeakMap,g=a.get(n);if(g)return g}o=n!=null?bn(dn(n)):{};let m=i||!n||!n.__esModule?j(o,"default",{value:n,enumerable:!0}):o;for(let P of on(n))if(!tn.call(m,P))j(m,P,{get:rn.bind(n,P),enumerable:!0});if(t)a.set(n,m);return m},Ln=(n)=>{var i=(nn??=new WeakMap).get(n),o;if(i)return i;if(i=j({},"__esModule",{value:!0}),n&&typeof n==="object"||typeof n==="function"){for(var t of on(n))if(!tn.call(i,t))j(i,t,{get:rn.bind(n,t),enumerable:!(o=yn(n,t))||o.enumerable})}return nn.set(n,i),i},nn;var ln=(n)=>n;function In(n,i){this[n]=ln.bind(null,i)}var sn=(n,i)=>{for(var o in i)j(n,o,{get:i[o],enumerable:!0,configurable:!0,set:In.bind(i,o)})};var X=(n,i)=>()=>(n&&(i=n(n=0)),i);function N(n,i){let o=0n,t=0n,a=i;while(a<n.length&&a-i<10){let g=n[a++];if(g===void 0)break;if(o|=BigInt(g&127)<<t,t+=7n,(g&128)===0)return[o,a]}throw new C.SwapKitError("toolbox_tron_transaction_creation_failed")}function M(n){let i=[],o=n<0n?n+2n**64n:n;while(o>=128n)i.push(Number(o&0x7fn)|128),o>>=7n;return i.push(Number(o)),i}function B(n,i,o){let t=n.get(i);if(t)t.push(o);else n.set(i,[o])}function ii(n){let i=new Map,o=0;while(o<n.length){let[t,a]=N(n,o);o=a;let g=Number(t>>3n),m=Number(t&7n);if(m===A){let[P,w]=N(n,o);o=w,B(i,g,{data:new Uint8Array(M(P)),wireType:A})}else if(m===W){let[P,w]=N(n,o);o=w;let $=Number(P);if($<0||o+$>n.length)throw new C.SwapKitError("toolbox_tron_transaction_creation_failed");let K=n.slice(o,o+$);o+=$,B(i,g,{data:K,wireType:W})}else if(m===an){if(o+8>n.length)throw new C.SwapKitError("toolbox_tron_transaction_creation_failed");let P=n.slice(o,o+8);o+=8,B(i,g,{data:P,wireType:an})}else if(m===cn){if(o+4>n.length)throw new C.SwapKitError("toolbox_tron_transaction_creation_failed");let P=n.slice(o,o+4);o+=4,B(i,g,{data:P,wireType:cn})}else throw new C.SwapKitError("toolbox_tron_transaction_creation_failed")}return i}function oi(n){let i=[];for(let[g,m]of[...n.entries()].sort(([P],[w])=>P-w))for(let{wireType:P,data:w}of m){let $=BigInt(g<<3|P);if(i.push(new Uint8Array(M($))),P===W)i.push(new Uint8Array(M(BigInt(w.length))));i.push(w)}let o=i.reduce((g,m)=>g+m.length,0),t=new Uint8Array(o),a=0;for(let g of i)t.set(g,a),a+=g.length;return t}function gn(n,i){if(!n||n.length%2!==0)throw new C.SwapKitError("toolbox_tron_transaction_creation_failed");let o=Q.hexToBytes(n),t=ii(o);if(i.expiration!==void 0)t.set(pn,[{data:new Uint8Array(M(BigInt(i.expiration))),wireType:A}]);if(i.data!==void 0)t.set(En,[{data:Q.hexToBytes(i.data),wireType:W}]);if(i.fee_limit!==void 0)t.set(ni,[{data:new Uint8Array(M(BigInt(i.fee_limit))),wireType:A}]);let a=oi(t),g=Q.bytesToHex(a),m=Q.bytesToHex(fn.sha256(a));return{raw_data_hex:g,txID:m}}var fn,Q,C,A=0,an=1,W=2,cn=5,pn=8,En=10,ni=18;var mn=X(()=>{fn=require("@noble/hashes/sha2.js"),Q=require("@noble/hashes/utils.js"),C=require("@swapkit/helpers")});function q(n){if(typeof n!=="string")return!1;try{let i=S.decode(n);return i.length===21&&i[0]===_n}catch{return!1}}function Pn(n){return F.bytesToHex(S.decode(n))}function ri(n){return S.decode(n).slice(1)}function wn(n){let i=D.secp256k1.getPublicKey(F.hexToBytes(n),!1),o=Tn.keccak_256(i.slice(1)).slice(-20),t=new Uint8Array(21);return t[0]=_n,t.set(o,1),S.encode(t)}function vn({txID:n,privateKey:i}){let o=D.secp256k1.sign(F.hexToBytes(n),F.hexToBytes(i),{format:"recovered",prehash:!1}),t=o[0]??0,a=F.bytesToHex(o.slice(1,33)),g=F.bytesToHex(o.slice(33,65)),m=(t+27).toString(16).padStart(2,"0");return a+g+m}function Y({txID:n,raw_data_hex:i}){let o=F.bytesToHex(R.sha256(F.hexToBytes(i)));if(n!==o)throw new b.SwapKitError("toolbox_tron_invalid_transaction_integrity",{expected:o,txID:n})}function ai(n){return`000000000000000000000000${F.bytesToHex(ri(n))}`}function ci(n){let i=typeof n==="bigint"?n:BigInt(n);if(i<0n||i>=ti)throw new b.SwapKitError("toolbox_tron_invalid_token_identifier",{identifier:i.toString()});return i.toString(16).padStart(64,"0")}function Z(n){return n.map(({type:i,value:o})=>i==="address"?ai(o):ci(BigInt(o))).join("")}function un(n){return F.bytesToHex(new TextEncoder().encode(n))}var D,R,Tn,F,en,b,S,_n=65,ti;var d=X(()=>{D=require("@noble/curves/secp256k1.js"),R=require("@noble/hashes/sha2.js"),Tn=require("@noble/hashes/sha3.js"),F=require("@noble/hashes/utils.js"),en=require("@scure/base"),b=require("@swapkit/helpers"),S=en.createBase58check(R.sha256),ti=2n**256n});function hn(){try{return v.getRPCUrlSync(v.Chain.Tron)}catch{return xn}}function Fn(){let n=new AbortController,i=setTimeout(()=>n.abort(),Ti);return{cleanup:()=>clearTimeout(i),signal:n.signal}}async function J(n,i){let{signal:o,cleanup:t}=Fn();try{let a=await fetch(`${hn()}${n}`,{body:JSON.stringify(i),headers:{"Content-Type":"application/json"},method:"POST",signal:o});if(!a.ok)throw new v.SwapKitError("toolbox_tron_trongrid_api_error",{message:`${a.status} ${a.statusText} on ${n}`});return await a.json()}finally{t()}}async function qn(n,i){let{signal:o,cleanup:t}=Fn();try{let a=await fetch(`${i??hn()}${n}`,{headers:{"Content-Type":"application/json"},signal:o});if(!a.ok)throw new v.SwapKitError("toolbox_tron_trongrid_api_error",{message:`${a.status} ${a.statusText} on ${n}`});return await a.json()}finally{t()}}async function $n(n){if(!q(n))throw new v.SwapKitError("toolbox_tron_trongrid_api_error",{address:n,message:"Invalid address"});try{let i=await qn(`/v1/accounts/${n}`,xn);if(!(i.success&&i.data)||i.data.length===0)return;let o;try{o=Pn(n).toLowerCase()}catch{o=n.toLowerCase()}let t=i.data.find((a)=>a.address.toLowerCase()===o);if(!t)return;return{balance:t.balance,trc20:t.trc20||[]}}catch(i){if(i instanceof v.SwapKitError)throw i;throw new v.SwapKitError("toolbox_tron_trongrid_api_error",{address:n,message:i instanceof Error?i.message:"Unknown error"})}}async function zn({from:n,to:i,amount:o}){let a=await J("/wallet/createtransaction",{amount:o,owner_address:n,to_address:i,visible:!0});if(!a.txID||!a.raw_data_hex||!a.raw_data)throw new v.SwapKitError("toolbox_tron_transaction_creation_failed");let m=a.raw_data?.contract?.[0]?.parameter?.value;if(m?.to_address!==i||m?.owner_address!==n||m?.amount!==o)throw new v.SwapKitError("toolbox_tron_transaction_creation_failed");return Y(a),a}async function Cn({ownerAddress:n,contractAddress:i,functionSelector:o,parameter:t,feeLimit:a,callValue:g=0}){let m=await J("/wallet/triggersmartcontract",{call_value:g,contract_address:i,fee_limit:a,function_selector:o,owner_address:n,parameter:t,visible:!0});if(!m.result.result||!m.transaction?.txID||!m.transaction?.raw_data_hex)throw new v.SwapKitError("toolbox_tron_transaction_creation_failed");let w=m.transaction.raw_data?.contract?.[0]?.parameter?.value;if(w?.contract_address!==i||w?.owner_address!==n)throw new v.SwapKitError("toolbox_tron_transaction_creation_failed");return Y(m.transaction),m.transaction}function Qn({ownerAddress:n,contractAddress:i,functionSelector:o,parameter:t}){return J("/wallet/triggerconstantcontract",{contract_address:i,function_selector:o,owner_address:n,parameter:t,visible:!0})}async function O(n){try{let{result:i,txid:o}=await J("/wallet/broadcasttransaction",{raw_data:n.raw_data,raw_data_hex:n.raw_data_hex,signature:n.signature,txID:n.txID,visible:n.visible});if(!i||!o)throw new v.SwapKitError("toolbox_tron_token_transfer_failed");return o}catch(i){throw new v.SwapKitError("toolbox_tron_broadcast_failed",{error:i})}}async function k(){let n={};try{let{chainParameter:i}=await qn("/wallet/getchainparameters");for(let o of i)n[o.key]=o.value}catch(i){v.warnOnce({condition:!0,id:"tron_chain_params_failed",warning:`Failed to fetch chain params, using defaults: ${i instanceof Error?i.message:i}`})}return{bandwidthFee:n.getTransactionFee??fi,createAccountFee:n.getCreateAccountFee??gi,energyFee:n.getEnergyFee??mi}}async function y(n){try{let i=await J("/wallet/getaccountresource",{address:n,visible:!0});return{bandwidth:{free:(i.freeNetLimit??600)-(i.freeNetUsed??0),total:i.NetLimit??0,used:i.NetUsed??0},energy:{total:i.EnergyLimit??0,used:i.EnergyUsed??0}}}catch(i){return v.warnOnce({condition:!0,id:"tron_account_resources_failed",warning:`Failed to fetch account resources, using defaults: ${i instanceof Error?i.message:i}`}),{bandwidth:{free:600,total:0,used:0},energy:{total:0,used:0}}}}async function V(n){try{let i=await J("/wallet/getaccount",{address:n,visible:!0});return i&&Object.keys(i).length>0}catch{return!1}}async function H(n){try{let{energy_used:i}=await Qn({...n,ownerAddress:n.sender});return i}catch(i){return v.warnOnce({condition:!0,id:"tron_energy_estimation_failed",warning:`Failed to estimate energy, using default: ${i instanceof Error?i.message:i}`}),65000}}async function Yn({assetAddress:n,owner:i,spender:o}){let t=Z([{type:"address",value:i},{type:"address",value:o}]),g=(await Qn({contractAddress:n,functionSelector:"allowance(address,address)",ownerAddress:o,parameter:t})).constant_result?.[0];if(!g)return 0n;try{return BigInt(`0x${g}`)}catch{return 0n}}var v,xn="https://api.trongrid.io",fi=1000,gi=1e5,mi=420,Ti=30000;var Zn=X(()=>{d();v=require("@swapkit/helpers")});function On({phrase:n,derivationPath:i}){let o=jn.HDKey.fromMasterSeed(Xn.mnemonicToSeedSync(n)).derive(i);if(!o.privateKey)throw new r.SwapKitError("toolbox_tron_no_signer");return Un.bytesToHex(o.privateKey)}function Gn({phrase:n,derivationPath:i,index:o}){let t=i||r.derivationPathToString(r.updateDerivationPath(r.NetworkDerivationPath[r.Chain.Tron],{index:o||0}));return On({derivationPath:t,phrase:n})}function vi({phrase:n,derivationPath:i}){let o=On({derivationPath:i,phrase:n}),t=wn(o);return{getAddress:()=>Promise.resolve(t),signTransaction:(a)=>{Y(a);let g=vn({privateKey:o,txID:a.txID});return Promise.resolve({...a,signature:[g]})}}}function Jn({transaction:n,memo:i,expiration:o,feeLimit:t}){let a={},g={};if(t!==void 0&&n.raw_data)a.fee_limit=t,g.fee_limit=t;if(i){let w=un(i);a.data=w,g.data=w}if(o){let w=n.raw_data.expiration+o*1000;a.expiration=w,g.expiration=w}if(Object.keys(a).length===0)return n;let{raw_data_hex:m,txID:P}=gn(n.raw_data_hex,a);return{...n,raw_data:{...n.raw_data,...g},raw_data_hex:m,txID:P}}function Bn(n={}){let i="index"in n?n.index||0:0,o=r.derivationPathToString("derivationPath"in n&&n.derivationPath?n.derivationPath:r.updateDerivationPath(r.NetworkDerivationPath[r.Chain.Tron],{index:i})),t,a=!1;function g(){if(a)return Promise.resolve(t);return t=U.match(n).with({phrase:U.P.string},({phrase:c})=>vi({derivationPath:o,phrase:c})).with({signer:U.P.not(U.P.nullish)},({signer:c})=>c).otherwise(()=>{return}),a=!0,Promise.resolve(t)}async function m(){let c=await g();if(!c)throw new r.SwapKitError("toolbox_tron_no_signer");return c.getAddress()}async function P(c){let f=c||_i,e=await k(),_=f*e.energyFee,T=Math.ceil(_*1.5);return Math.min(Math.max(T,1e7),150000000)}async function w({contractAddress:c,functionSelector:f,parameter:e,sender:_,memo:T,expiration:u}){let x=await H({contractAddress:c,functionSelector:f,parameter:e,sender:_}),h=await P(x),z=await Cn({contractAddress:c,feeLimit:h,functionSelector:f,ownerAddress:_,parameter:e});return Jn({expiration:u,feeLimit:h,memo:T,transaction:z})}async function $(c){if(!q(c))return[r.AssetValue.from({chain:r.Chain.Tron})];try{let f=await $n(c);if(!f)return[r.AssetValue.from({chain:r.Chain.Tron})];let e=[r.AssetValue.from({chain:r.Chain.Tron,fromBaseDecimal:6,value:String(f.balance)})],_=f.trc20?.find((T)=>(L in T));if(_){let T=_[L];e.push(r.AssetValue.from({asset:`TRON.USDT-${L}`,fromBaseDecimal:6,value:T}))}return e}catch(f){return r.warnOnce({condition:!0,id:"tron_toolbox_get_balance_failed",warning:`Tron API getBalance failed: ${f instanceof Error?f.message:f}`}),[r.AssetValue.from({chain:r.Chain.Tron})]}}async function K({recipient:c,assetValue:f,memo:e,expiration:_}){if(!q(c))throw new r.SwapKitError("toolbox_tron_token_transfer_failed",{message:"invalid address"});let T=await g();if(!T)throw new r.SwapKitError("toolbox_tron_no_signer");try{let u=await m(),x=await I({assetValue:f,expiration:_,memo:e,recipient:c,sender:u}),h=await T.signTransaction(x),z=await O(h);if(!z)throw new r.SwapKitError("toolbox_tron_token_transfer_failed",{message:"broadcast failed"});return z}catch(u){throw new r.SwapKitError("toolbox_tron_token_transfer_failed",{message:u instanceof Error?u.message:String(u)})}}function l({requiredBandwidth:c,resources:f,feePerUnit:e}){let _=Math.max(0,f.free+f.total-f.used);return c>_?(c-_)*e:0}async function Wn({recipient:c,senderAddress:f}){let[e,_,T]=await Promise.all([k(),V(c),y(f)]),u=_?0:e.createAccountFee,x=l({feePerUnit:e.bandwidthFee,requiredBandwidth:ei,resources:T.bandwidth});return r.AssetValue.from({chain:r.Chain.Tron,fromBaseDecimal:r.BaseDecimal.TRON,value:u+x})}async function Sn({assetValue:c,recipient:f,senderAddress:e}){let _=c.address;if(!_)throw new r.SwapKitError("toolbox_tron_invalid_token_identifier",{identifier:c.toString()});let[T,u,x,h]=await Promise.all([k(),V(f),y(e),H({contractAddress:_,functionSelector:"transfer(address,uint256)",parameter:Z([{type:"address",value:f},{type:"uint256",value:c.getBaseValue("string")}]),sender:e})]),z=u?0:T.createAccountFee,G=l({feePerUnit:T.bandwidthFee,requiredBandwidth:Pi,resources:x.bandwidth}),E=Math.max(0,x.energy.total-x.energy.used),Rn=h>E?(h-E)*T.energyFee:0;return r.AssetValue.from({chain:r.Chain.Tron,fromBaseDecimal:r.BaseDecimal.TRON,value:z+G+Rn})}async function kn({assetValue:c,recipient:f,sender:e}){let _=await g();try{let T=e?e:_?await m():void 0;if(!T)return c.isGasAsset?r.AssetValue.from({chain:r.Chain.Tron,value:0.1}):r.AssetValue.from({chain:r.Chain.Tron,value:15});return c.isGasAsset?Wn({recipient:f,senderAddress:T}):Sn({assetValue:c,recipient:f,senderAddress:T})}catch(T){throw r.warnOnce({condition:!0,id:"tron_toolbox_fee_estimation_failed",warning:`Failed to calculate exact fee: ${T instanceof Error?T.message:T}`}),new r.SwapKitError("toolbox_fee_estimation_failed",{chain:r.Chain.Tron,error:T})}}async function I({recipient:c,assetValue:f,memo:e,sender:_,expiration:T}){if(!q(c)||!q(_))throw new r.SwapKitError("toolbox_tron_transaction_creation_failed",{message:"invalid address"});if(f.isGasAsset){let x=await zn({amount:f.getBaseValue("number"),from:_,to:c});return Jn({expiration:T,memo:e,transaction:x})}let u=f.address;if(!u)throw new r.SwapKitError("toolbox_tron_invalid_token_identifier",{identifier:f.toString()});return w({contractAddress:u,expiration:T,functionSelector:"transfer(address,uint256)",memo:e,parameter:Z([{type:"address",value:c},{type:"uint256",value:f.getBaseValue("string")}]),sender:_})}async function s(c){Y(c);let f=await g();if(!f)throw new r.SwapKitError("toolbox_tron_no_signer");return f.signTransaction(c)}async function Kn(c){let f=await s(c);return O(f)}function p({assetAddress:c,spenderAddress:f,from:e}){return Yn({assetAddress:c,owner:e,spender:f})}async function Nn({assetAddress:c,spenderAddress:f,from:e,amount:_}){let T=await p({assetAddress:c,from:e,spenderAddress:f});if(!_)return T>0n;return T>=BigInt(_)}async function Dn({assetAddress:c,spenderAddress:f,amount:e,from:_}){if(!q(c)||!q(f))throw new r.SwapKitError("toolbox_tron_approve_failed");let T=await g();if(!T)throw new r.SwapKitError("toolbox_tron_no_signer");let u=_||await m(),x=e!==void 0?BigInt(e).toString():wi;try{let h=await w({contractAddress:c,functionSelector:"approve(address,uint256)",parameter:Z([{type:"address",value:f},{type:"uint256",value:x}]),sender:u}),z=await T.signTransaction(h),G=await O(z);if(!G)throw new r.SwapKitError("toolbox_tron_approve_failed");return G}catch(h){if(h instanceof r.SwapKitError)throw h;throw new r.SwapKitError("toolbox_tron_approve_failed",{error:h})}}return{approve:Dn,broadcastTransaction:O,createTransaction:I,estimateTransactionFee:kn,getAddress:m,getApprovedAmount:p,getBalance:$,getRpcUrl:()=>r.getRPCUrl(r.Chain.Tron),isApproved:Nn,signAndBroadcastTransaction:Kn,signTransaction:s,transfer:K,validateAddress:q}}var Un,jn,Xn,r,U,Mn,ei=268,_i=65000,Pi=345,L="TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",wi="115792089237316195423570985008687907853269984665640564039457584007913129639935";var An=X(()=>{mn();Zn();d();Un=require("@noble/hashes/utils.js"),jn=require("@scure/bip32"),Xn=require("@scure/bip39"),r=require("@swapkit/helpers"),U=require("ts-pattern"),Mn=q});var ui={};sn(ui,{validateTronAddress:()=>Mn,getTronToolbox:()=>Bn,getTronPrivateKeyFromMnemonic:()=>Gn});module.exports=Ln(ui);var xi=X(()=>{An()});xi();
|
package/dist/src/tron/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var Rn=Object.defineProperty;var Vn=(n)=>n;function bn(n,i){this[n]=Vn.bind(null,i)}var yn=(n,i)=>{for(var o in i)Rn(n,o,{get:i[o],enumerable:!0,configurable:!0,set:bn.bind(i,o)})};var j=(n,i)=>()=>(n&&(i=n(n=0)),i);var zi=((n)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(i,o)=>(typeof require<"u"?require:i)[o]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')});import{sha256 as Hn}from"@noble/hashes/sha2.js";import{bytesToHex as s,hexToBytes as nn}from"@noble/hashes/utils.js";import{SwapKitError as Q}from"@swapkit/helpers";function K(n,i){let o=0n,t=0n,r=i;while(r<n.length&&r-i<10){let f=n[r++];if(f===void 0)break;if(o|=BigInt(f&127)<<t,t+=7n,(f&128)===0)return[o,r]}throw new Q("toolbox_tron_transaction_creation_failed")}function X(n){let i=[],o=n<0n?n+2n**64n:n;while(o>=128n)i.push(Number(o&0x7fn)|128),o>>=7n;return i.push(Number(o)),i}function G(n,i,o){let t=n.get(i);if(t)t.push(o);else n.set(i,[o])}function In(n){let i=new Map,o=0;while(o<n.length){let[t,r]=K(n,o);o=r;let f=Number(t>>3n),m=Number(t&7n);if(m===B){let[w,P]=K(n,o);o=P,G(i,f,{data:new Uint8Array(X(w)),wireType:B})}else if(m===A){let[w,P]=K(n,o);o=P;let z=Number(w);if(z<0||o+z>n.length)throw new Q("toolbox_tron_transaction_creation_failed");let D=n.slice(o,o+z);o+=z,G(i,f,{data:D,wireType:A})}else if(m===on){if(o+8>n.length)throw new Q("toolbox_tron_transaction_creation_failed");let w=n.slice(o,o+8);o+=8,G(i,f,{data:w,wireType:on})}else if(m===tn){if(o+4>n.length)throw new Q("toolbox_tron_transaction_creation_failed");let w=n.slice(o,o+4);o+=4,G(i,f,{data:w,wireType:tn})}else throw new Q("toolbox_tron_transaction_creation_failed")}return i}function pn(n){let i=[];for(let[f,m]of[...n.entries()].sort(([w],[P])=>w-P))for(let{wireType:w,data:P}of m){let z=BigInt(f<<3|w);if(i.push(new Uint8Array(X(z))),w===A)i.push(new Uint8Array(X(BigInt(P.length))));i.push(P)}let o=i.reduce((f,m)=>f+m.length,0),t=new Uint8Array(o),r=0;for(let f of i)t.set(f,r),r+=f.length;return t}function rn(n,i){if(!n||n.length%2!==0)throw new Q("toolbox_tron_transaction_creation_failed");let o=nn(n),t=In(o);if(i.expiration!==void 0)t.set(Ln,[{data:new Uint8Array(X(BigInt(i.expiration))),wireType:B}]);if(i.data!==void 0)t.set(dn,[{data:nn(i.data),wireType:A}]);if(i.fee_limit!==void 0)t.set(ln,[{data:new Uint8Array(X(BigInt(i.fee_limit))),wireType:B}]);let r=pn(t),f=s(r),m=s(Hn(r));return{raw_data_hex:f,txID:m}}var B=0,on=1,A=2,tn=5,Ln=8,dn=10,ln=18;var an=()=>{};import{secp256k1 as cn}from"@noble/curves/secp256k1.js";import{sha256 as fn}from"@noble/hashes/sha2.js";import{keccak_256 as En}from"@noble/hashes/sha3.js";import{bytesToHex as Y,hexToBytes as W}from"@noble/hashes/utils.js";import{createBase58check as sn}from"@scure/base";import{SwapKitError as gn}from"@swapkit/helpers";function F(n){if(typeof n!=="string")return!1;try{let i=S.decode(n);return i.length===21&&i[0]===mn}catch{return!1}}function Tn(n){return Y(S.decode(n))}function ii(n){return S.decode(n).slice(1)}function en(n){let i=cn.getPublicKey(W(n),!1),o=En(i.slice(1)).slice(-20),t=new Uint8Array(21);return t[0]=mn,t.set(o,1),S.encode(t)}function Pn({txID:n,privateKey:i}){let o=cn.sign(W(n),W(i),{format:"recovered",prehash:!1}),t=o[0]??0,r=Y(o.slice(1,33)),f=Y(o.slice(33,65)),m=(t+27).toString(16).padStart(2,"0");return r+f+m}function Z({txID:n,raw_data_hex:i}){let o=Y(fn(W(i)));if(n!==o)throw new gn("toolbox_tron_token_transfer_failed")}function oi(n){return`000000000000000000000000${Y(ii(n))}`}function ti(n){let i=typeof n==="bigint"?n:BigInt(n);if(i<0n||i>=ni)throw new gn("toolbox_tron_invalid_token_identifier",{identifier:i.toString()});return i.toString(16).padStart(64,"0")}function J(n){return n.map(({type:i,value:o})=>i==="address"?oi(o):ti(BigInt(o))).join("")}function wn(n){return Y(new TextEncoder().encode(n))}var S,mn=65,ni;var N=j(()=>{S=sn(fn),ni=2n**256n});import{Chain as ri,getRPCUrlSync as ai,SwapKitError as q,warnOnce as R}from"@swapkit/helpers";function vn(){try{return ai(ri.Tron)}catch{return _n}}function un(){let n=new AbortController,i=setTimeout(()=>n.abort(),mi);return{cleanup:()=>clearTimeout(i),signal:n.signal}}async function U(n,i){let{signal:o,cleanup:t}=un();try{let r=await fetch(`${vn()}${n}`,{body:JSON.stringify(i),headers:{"Content-Type":"application/json"},method:"POST",signal:o});if(!r.ok)throw new q("toolbox_tron_trongrid_api_error",{message:`${r.status} ${r.statusText} on ${n}`});return await r.json()}finally{t()}}async function xn(n,i){let{signal:o,cleanup:t}=un();try{let r=await fetch(`${i??vn()}${n}`,{headers:{"Content-Type":"application/json"},signal:o});if(!r.ok)throw new q("toolbox_tron_trongrid_api_error",{message:`${r.status} ${r.statusText} on ${n}`});return await r.json()}finally{t()}}async function hn(n){if(!F(n))throw new q("toolbox_tron_trongrid_api_error",{address:n,message:"Invalid address"});try{let i=await xn(`/v1/accounts/${n}`,_n);if(!(i.success&&i.data)||i.data.length===0)return;let o;try{o=Tn(n).toLowerCase()}catch{o=n.toLowerCase()}let t=i.data.find((r)=>r.address.toLowerCase()===o);if(!t)return;return{balance:t.balance,trc20:t.trc20||[]}}catch(i){if(i instanceof q)throw i;throw new q("toolbox_tron_trongrid_api_error",{address:n,message:i instanceof Error?i.message:"Unknown error"})}}async function Fn({from:n,to:i,amount:o}){let r=await U("/wallet/createtransaction",{amount:o,owner_address:n,to_address:i,visible:!0});if(!r.txID||!r.raw_data_hex||!r.raw_data)throw new q("toolbox_tron_transaction_creation_failed");let m=r.raw_data?.contract?.[0]?.parameter?.value;if(m?.to_address!==i||m?.owner_address!==n||m?.amount!==o)throw new q("toolbox_tron_transaction_creation_failed");return Z(r),r}async function qn({ownerAddress:n,contractAddress:i,functionSelector:o,parameter:t,feeLimit:r,callValue:f=0}){let m=await U("/wallet/triggersmartcontract",{call_value:f,contract_address:i,fee_limit:r,function_selector:o,owner_address:n,parameter:t,visible:!0});if(!m.result.result||!m.transaction?.txID||!m.transaction?.raw_data_hex)throw new q("toolbox_tron_transaction_creation_failed");let P=m.transaction.raw_data?.contract?.[0]?.parameter?.value;if(P?.contract_address!==i||P?.owner_address!==n)throw new q("toolbox_tron_transaction_creation_failed");return Z(m.transaction),m.transaction}function $n({ownerAddress:n,contractAddress:i,functionSelector:o,parameter:t}){return U("/wallet/triggerconstantcontract",{contract_address:i,function_selector:o,owner_address:n,parameter:t,visible:!0})}async function M(n){let{result:i,txid:o}=await U("/wallet/broadcasttransaction",{raw_data:n.raw_data,raw_data_hex:n.raw_data_hex,signature:n.signature,txID:n.txID,visible:n.visible});if(!i||!o)throw new q("toolbox_tron_token_transfer_failed");return o}async function k(){let n={};try{let{chainParameter:i}=await xn("/wallet/getchainparameters");for(let o of i)n[o.key]=o.value}catch(i){R({condition:!0,id:"tron_chain_params_failed",warning:`Failed to fetch chain params, using defaults: ${i instanceof Error?i.message:i}`})}return{bandwidthFee:n.getTransactionFee??ci,createAccountFee:n.getCreateAccountFee??fi,energyFee:n.getEnergyFee??gi}}async function V(n){try{let i=await U("/wallet/getaccountresource",{address:n,visible:!0});return{bandwidth:{free:(i.freeNetLimit??600)-(i.freeNetUsed??0),total:i.NetLimit??0,used:i.NetUsed??0},energy:{total:i.EnergyLimit??0,used:i.EnergyUsed??0}}}catch(i){return R({condition:!0,id:"tron_account_resources_failed",warning:`Failed to fetch account resources, using defaults: ${i instanceof Error?i.message:i}`}),{bandwidth:{free:600,total:0,used:0},energy:{total:0,used:0}}}}async function b(n){try{let i=await U("/wallet/getaccount",{address:n,visible:!0});return i&&Object.keys(i).length>0}catch{return!1}}async function y(n){try{let{energy_used:i}=await $n({...n,ownerAddress:n.sender});return i}catch(i){return R({condition:!0,id:"tron_energy_estimation_failed",warning:`Failed to estimate energy, using default: ${i instanceof Error?i.message:i}`}),65000}}async function zn({assetAddress:n,owner:i,spender:o}){let t=J([{type:"address",value:i},{type:"address",value:o}]),f=(await $n({contractAddress:n,functionSelector:"allowance(address,address)",ownerAddress:o,parameter:t})).constant_result?.[0];if(!f)return 0n;try{return BigInt(`0x${f}`)}catch{return 0n}}var _n="https://api.trongrid.io",ci=1000,fi=1e5,gi=420,mi=30000;var Cn=j(()=>{N()});import{bytesToHex as Ti}from"@noble/hashes/utils.js";import{HDKey as ei}from"@scure/bip32";import{mnemonicToSeedSync as Pi}from"@scure/bip39";import{AssetValue as $,BaseDecimal as Qn,Chain as h,derivationPathToString as Jn,getRPCUrl as wi,NetworkDerivationPath as Un,SwapKitError as _,updateDerivationPath as jn,warnOnce as Yn}from"@swapkit/helpers";import{match as _i,P as H}from"ts-pattern";function Mn({phrase:n,derivationPath:i}){let o=ei.fromMasterSeed(Pi(n)).derive(i);if(!o.privateKey)throw new _("toolbox_tron_no_signer");return Ti(o.privateKey)}function On({phrase:n,derivationPath:i,index:o}){let t=i||Jn(jn(Un[h.Tron],{index:o||0}));return Mn({derivationPath:t,phrase:n})}function Fi({phrase:n,derivationPath:i}){let o=Mn({derivationPath:i,phrase:n}),t=en(o);return{getAddress:()=>Promise.resolve(t),signTransaction:(r)=>{Z(r);let f=Pn({privateKey:o,txID:r.txID});return Promise.resolve({...r,signature:[f]})}}}function Zn({transaction:n,memo:i,expiration:o,feeLimit:t}){let r={},f={};if(t!==void 0&&n.raw_data)r.fee_limit=t,f.fee_limit=t;if(i){let P=wn(i);r.data=P,f.data=P}if(o){let P=n.raw_data.expiration+o*1000;r.expiration=P,f.expiration=P}if(Object.keys(r).length===0)return n;let{raw_data_hex:m,txID:w}=rn(n.raw_data_hex,r);return{...n,raw_data:{...n.raw_data,...f},raw_data_hex:m,txID:w}}function Gn(n={}){let i="index"in n?n.index||0:0,o=Jn("derivationPath"in n&&n.derivationPath?n.derivationPath:jn(Un[h.Tron],{index:i})),t,r=!1;function f(){if(r)return Promise.resolve(t);return t=_i(n).with({phrase:H.string},({phrase:a})=>Fi({derivationPath:o,phrase:a})).with({signer:H.not(H.nullish)},({signer:a})=>a).otherwise(()=>{return}),r=!0,Promise.resolve(t)}async function m(){let a=await f();if(!a)throw new _("toolbox_tron_no_signer");return a.getAddress()}async function w(a){let c=a||ui,T=await k(),e=c*T.energyFee,g=Math.ceil(e*1.5);return Math.min(Math.max(g,1e7),150000000)}async function P({contractAddress:a,functionSelector:c,parameter:T,sender:e,memo:g,expiration:x}){let v=await y({contractAddress:a,functionSelector:c,parameter:T,sender:e}),u=await w(v),C=await qn({contractAddress:a,feeLimit:u,functionSelector:c,ownerAddress:e,parameter:T});return Zn({expiration:x,feeLimit:u,memo:g,transaction:C})}async function z(a){if(!F(a))return[$.from({chain:h.Tron})];try{let c=await hn(a);if(!c)return[$.from({chain:h.Tron})];let T=[$.from({chain:h.Tron,fromBaseDecimal:6,value:String(c.balance)})],e=c.trc20?.find((g)=>(L in g));if(e){let g=e[L];T.push($.from({asset:`TRON.USDT-${L}`,fromBaseDecimal:6,value:g}))}return T}catch(c){return Yn({condition:!0,id:"tron_toolbox_get_balance_failed",warning:`Tron API getBalance failed: ${c instanceof Error?c.message:c}`}),[$.from({chain:h.Tron})]}}async function D({recipient:a,assetValue:c,memo:T,expiration:e}){if(!F(a))throw new _("toolbox_tron_token_transfer_failed");let g=await f();if(!g)throw new _("toolbox_tron_no_signer");let x=await m(),v=await l({assetValue:c,expiration:e,memo:T,recipient:a,sender:x}),u=await g.signTransaction(v),C=await M(u);if(!C)throw new _("toolbox_tron_token_transfer_failed");return C}function d({requiredBandwidth:a,resources:c,feePerUnit:T}){let e=Math.max(0,c.free+c.total-c.used);return a>e?(a-e)*T:0}async function An({recipient:a,senderAddress:c}){let[T,e,g]=await Promise.all([k(),b(a),V(c)]),x=e?0:T.createAccountFee,v=d({feePerUnit:T.bandwidthFee,requiredBandwidth:vi,resources:g.bandwidth});return $.from({chain:h.Tron,fromBaseDecimal:Qn.TRON,value:x+v})}async function Wn({assetValue:a,recipient:c,senderAddress:T}){let e=a.address;if(!e)throw new _("toolbox_tron_invalid_token_identifier",{identifier:a.toString()});let[g,x,v,u]=await Promise.all([k(),b(c),V(T),y({contractAddress:e,functionSelector:"transfer(address,uint256)",parameter:J([{type:"address",value:c},{type:"uint256",value:a.getBaseValue("string")}]),sender:T})]),C=x?0:g.createAccountFee,O=d({feePerUnit:g.bandwidthFee,requiredBandwidth:xi,resources:v.bandwidth}),E=Math.max(0,v.energy.total-v.energy.used),Nn=u>E?(u-E)*g.energyFee:0;return $.from({chain:h.Tron,fromBaseDecimal:Qn.TRON,value:C+O+Nn})}async function Sn({assetValue:a,recipient:c,sender:T}){let e=await f();try{let g=T?T:e?await m():void 0;if(!g)return a.isGasAsset?$.from({chain:h.Tron,value:0.1}):$.from({chain:h.Tron,value:15});return a.isGasAsset?An({recipient:c,senderAddress:g}):Wn({assetValue:a,recipient:c,senderAddress:g})}catch(g){throw Yn({condition:!0,id:"tron_toolbox_fee_estimation_failed",warning:`Failed to calculate exact fee: ${g instanceof Error?g.message:g}`}),new _("toolbox_fee_estimation_failed",{chain:h.Tron,error:g})}}async function l({recipient:a,assetValue:c,memo:T,sender:e,expiration:g}){if(!F(a)||!F(e))throw new _("toolbox_tron_token_transfer_failed");if(c.isGasAsset){let v=await Fn({amount:c.getBaseValue("number"),from:e,to:a});return Zn({expiration:g,memo:T,transaction:v})}let x=c.address;if(!x)throw new _("toolbox_tron_invalid_token_identifier",{identifier:c.toString()});return P({contractAddress:x,expiration:g,functionSelector:"transfer(address,uint256)",memo:T,parameter:J([{type:"address",value:a},{type:"uint256",value:c.getBaseValue("string")}]),sender:e})}async function I(a){Z(a);let c=await f();if(!c)throw new _("toolbox_tron_no_signer");return c.signTransaction(a)}async function kn(a){let c=await I(a);return M(c)}function p({assetAddress:a,spenderAddress:c,from:T}){return zn({assetAddress:a,owner:T,spender:c})}async function Dn({assetAddress:a,spenderAddress:c,from:T,amount:e}){let g=await p({assetAddress:a,from:T,spenderAddress:c});if(!e)return g>0n;return g>=BigInt(e)}async function Kn({assetAddress:a,spenderAddress:c,amount:T,from:e}){if(!F(a)||!F(c))throw new _("toolbox_tron_approve_failed");let g=await f();if(!g)throw new _("toolbox_tron_no_signer");let x=e||await m(),v=T!==void 0?BigInt(T).toString():hi;try{let u=await P({contractAddress:a,functionSelector:"approve(address,uint256)",parameter:J([{type:"address",value:c},{type:"uint256",value:v}]),sender:x}),C=await g.signTransaction(u),O=await M(C);if(!O)throw new _("toolbox_tron_approve_failed");return O}catch(u){if(u instanceof _)throw u;throw new _("toolbox_tron_approve_failed",{error:u})}}return{approve:Kn,broadcastTransaction:M,createTransaction:l,estimateTransactionFee:Sn,getAddress:m,getApprovedAmount:p,getBalance:z,getRpcUrl:()=>wi(h.Tron),isApproved:Dn,signAndBroadcastTransaction:kn,signTransaction:I,transfer:D,validateAddress:F}}var Xn,vi=268,ui=65000,xi=345,L="TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",hi="115792089237316195423570985008687907853269984665640564039457584007913129639935";var Bn=j(()=>{an();Cn();N();Xn=F});var qi={};yn(qi,{validateTronAddress:()=>Xn,getTronToolbox:()=>Gn,getTronPrivateKeyFromMnemonic:()=>On});var $i=j(()=>{Bn()});$i();export{Xn as validateTronAddress,Gn as getTronToolbox,On as getTronPrivateKeyFromMnemonic};
|
|
1
|
+
var Rn=Object.defineProperty;var bn=(n)=>n;function dn(n,i){this[n]=bn.bind(null,i)}var yn=(n,i)=>{for(var o in i)Rn(n,o,{get:i[o],enumerable:!0,configurable:!0,set:dn.bind(i,o)})};var j=(n,i)=>()=>(n&&(i=n(n=0)),i);var zi=((n)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(i,o)=>(typeof require<"u"?require:i)[o]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')});import{sha256 as Vn}from"@noble/hashes/sha2.js";import{bytesToHex as E,hexToBytes as nn}from"@noble/hashes/utils.js";import{SwapKitError as Q}from"@swapkit/helpers";function N(n,i){let o=0n,t=0n,r=i;while(r<n.length&&r-i<10){let f=n[r++];if(f===void 0)break;if(o|=BigInt(f&127)<<t,t+=7n,(f&128)===0)return[o,r]}throw new Q("toolbox_tron_transaction_creation_failed")}function X(n){let i=[],o=n<0n?n+2n**64n:n;while(o>=128n)i.push(Number(o&0x7fn)|128),o>>=7n;return i.push(Number(o)),i}function G(n,i,o){let t=n.get(i);if(t)t.push(o);else n.set(i,[o])}function In(n){let i=new Map,o=0;while(o<n.length){let[t,r]=N(n,o);o=r;let f=Number(t>>3n),m=Number(t&7n);if(m===B){let[P,_]=N(n,o);o=_,G(i,f,{data:new Uint8Array(X(P)),wireType:B})}else if(m===A){let[P,_]=N(n,o);o=_;let z=Number(P);if(z<0||o+z>n.length)throw new Q("toolbox_tron_transaction_creation_failed");let K=n.slice(o,o+z);o+=z,G(i,f,{data:K,wireType:A})}else if(m===on){if(o+8>n.length)throw new Q("toolbox_tron_transaction_creation_failed");let P=n.slice(o,o+8);o+=8,G(i,f,{data:P,wireType:on})}else if(m===tn){if(o+4>n.length)throw new Q("toolbox_tron_transaction_creation_failed");let P=n.slice(o,o+4);o+=4,G(i,f,{data:P,wireType:tn})}else throw new Q("toolbox_tron_transaction_creation_failed")}return i}function sn(n){let i=[];for(let[f,m]of[...n.entries()].sort(([P],[_])=>P-_))for(let{wireType:P,data:_}of m){let z=BigInt(f<<3|P);if(i.push(new Uint8Array(X(z))),P===A)i.push(new Uint8Array(X(BigInt(_.length))));i.push(_)}let o=i.reduce((f,m)=>f+m.length,0),t=new Uint8Array(o),r=0;for(let f of i)t.set(f,r),r+=f.length;return t}function rn(n,i){if(!n||n.length%2!==0)throw new Q("toolbox_tron_transaction_creation_failed");let o=nn(n),t=In(o);if(i.expiration!==void 0)t.set(Hn,[{data:new Uint8Array(X(BigInt(i.expiration))),wireType:B}]);if(i.data!==void 0)t.set(Ln,[{data:nn(i.data),wireType:A}]);if(i.fee_limit!==void 0)t.set(ln,[{data:new Uint8Array(X(BigInt(i.fee_limit))),wireType:B}]);let r=sn(t),f=E(r),m=E(Vn(r));return{raw_data_hex:f,txID:m}}var B=0,on=1,A=2,tn=5,Hn=8,Ln=10,ln=18;var an=()=>{};import{secp256k1 as cn}from"@noble/curves/secp256k1.js";import{sha256 as fn}from"@noble/hashes/sha2.js";import{keccak_256 as pn}from"@noble/hashes/sha3.js";import{bytesToHex as Y,hexToBytes as W}from"@noble/hashes/utils.js";import{createBase58check as En}from"@scure/base";import{SwapKitError as gn}from"@swapkit/helpers";function F(n){if(typeof n!=="string")return!1;try{let i=S.decode(n);return i.length===21&&i[0]===mn}catch{return!1}}function Tn(n){return Y(S.decode(n))}function ii(n){return S.decode(n).slice(1)}function en(n){let i=cn.getPublicKey(W(n),!1),o=pn(i.slice(1)).slice(-20),t=new Uint8Array(21);return t[0]=mn,t.set(o,1),S.encode(t)}function _n({txID:n,privateKey:i}){let o=cn.sign(W(n),W(i),{format:"recovered",prehash:!1}),t=o[0]??0,r=Y(o.slice(1,33)),f=Y(o.slice(33,65)),m=(t+27).toString(16).padStart(2,"0");return r+f+m}function Z({txID:n,raw_data_hex:i}){let o=Y(fn(W(i)));if(n!==o)throw new gn("toolbox_tron_invalid_transaction_integrity",{expected:o,txID:n})}function oi(n){return`000000000000000000000000${Y(ii(n))}`}function ti(n){let i=typeof n==="bigint"?n:BigInt(n);if(i<0n||i>=ni)throw new gn("toolbox_tron_invalid_token_identifier",{identifier:i.toString()});return i.toString(16).padStart(64,"0")}function J(n){return n.map(({type:i,value:o})=>i==="address"?oi(o):ti(BigInt(o))).join("")}function Pn(n){return Y(new TextEncoder().encode(n))}var S,mn=65,ni;var D=j(()=>{S=En(fn),ni=2n**256n});import{Chain as ri,getRPCUrlSync as ai,SwapKitError as q,warnOnce as R}from"@swapkit/helpers";function vn(){try{return ai(ri.Tron)}catch{return wn}}function un(){let n=new AbortController,i=setTimeout(()=>n.abort(),mi);return{cleanup:()=>clearTimeout(i),signal:n.signal}}async function U(n,i){let{signal:o,cleanup:t}=un();try{let r=await fetch(`${vn()}${n}`,{body:JSON.stringify(i),headers:{"Content-Type":"application/json"},method:"POST",signal:o});if(!r.ok)throw new q("toolbox_tron_trongrid_api_error",{message:`${r.status} ${r.statusText} on ${n}`});return await r.json()}finally{t()}}async function xn(n,i){let{signal:o,cleanup:t}=un();try{let r=await fetch(`${i??vn()}${n}`,{headers:{"Content-Type":"application/json"},signal:o});if(!r.ok)throw new q("toolbox_tron_trongrid_api_error",{message:`${r.status} ${r.statusText} on ${n}`});return await r.json()}finally{t()}}async function hn(n){if(!F(n))throw new q("toolbox_tron_trongrid_api_error",{address:n,message:"Invalid address"});try{let i=await xn(`/v1/accounts/${n}`,wn);if(!(i.success&&i.data)||i.data.length===0)return;let o;try{o=Tn(n).toLowerCase()}catch{o=n.toLowerCase()}let t=i.data.find((r)=>r.address.toLowerCase()===o);if(!t)return;return{balance:t.balance,trc20:t.trc20||[]}}catch(i){if(i instanceof q)throw i;throw new q("toolbox_tron_trongrid_api_error",{address:n,message:i instanceof Error?i.message:"Unknown error"})}}async function Fn({from:n,to:i,amount:o}){let r=await U("/wallet/createtransaction",{amount:o,owner_address:n,to_address:i,visible:!0});if(!r.txID||!r.raw_data_hex||!r.raw_data)throw new q("toolbox_tron_transaction_creation_failed");let m=r.raw_data?.contract?.[0]?.parameter?.value;if(m?.to_address!==i||m?.owner_address!==n||m?.amount!==o)throw new q("toolbox_tron_transaction_creation_failed");return Z(r),r}async function qn({ownerAddress:n,contractAddress:i,functionSelector:o,parameter:t,feeLimit:r,callValue:f=0}){let m=await U("/wallet/triggersmartcontract",{call_value:f,contract_address:i,fee_limit:r,function_selector:o,owner_address:n,parameter:t,visible:!0});if(!m.result.result||!m.transaction?.txID||!m.transaction?.raw_data_hex)throw new q("toolbox_tron_transaction_creation_failed");let _=m.transaction.raw_data?.contract?.[0]?.parameter?.value;if(_?.contract_address!==i||_?.owner_address!==n)throw new q("toolbox_tron_transaction_creation_failed");return Z(m.transaction),m.transaction}function $n({ownerAddress:n,contractAddress:i,functionSelector:o,parameter:t}){return U("/wallet/triggerconstantcontract",{contract_address:i,function_selector:o,owner_address:n,parameter:t,visible:!0})}async function M(n){try{let{result:i,txid:o}=await U("/wallet/broadcasttransaction",{raw_data:n.raw_data,raw_data_hex:n.raw_data_hex,signature:n.signature,txID:n.txID,visible:n.visible});if(!i||!o)throw new q("toolbox_tron_token_transfer_failed");return o}catch(i){throw new q("toolbox_tron_broadcast_failed",{error:i})}}async function k(){let n={};try{let{chainParameter:i}=await xn("/wallet/getchainparameters");for(let o of i)n[o.key]=o.value}catch(i){R({condition:!0,id:"tron_chain_params_failed",warning:`Failed to fetch chain params, using defaults: ${i instanceof Error?i.message:i}`})}return{bandwidthFee:n.getTransactionFee??ci,createAccountFee:n.getCreateAccountFee??fi,energyFee:n.getEnergyFee??gi}}async function b(n){try{let i=await U("/wallet/getaccountresource",{address:n,visible:!0});return{bandwidth:{free:(i.freeNetLimit??600)-(i.freeNetUsed??0),total:i.NetLimit??0,used:i.NetUsed??0},energy:{total:i.EnergyLimit??0,used:i.EnergyUsed??0}}}catch(i){return R({condition:!0,id:"tron_account_resources_failed",warning:`Failed to fetch account resources, using defaults: ${i instanceof Error?i.message:i}`}),{bandwidth:{free:600,total:0,used:0},energy:{total:0,used:0}}}}async function d(n){try{let i=await U("/wallet/getaccount",{address:n,visible:!0});return i&&Object.keys(i).length>0}catch{return!1}}async function y(n){try{let{energy_used:i}=await $n({...n,ownerAddress:n.sender});return i}catch(i){return R({condition:!0,id:"tron_energy_estimation_failed",warning:`Failed to estimate energy, using default: ${i instanceof Error?i.message:i}`}),65000}}async function zn({assetAddress:n,owner:i,spender:o}){let t=J([{type:"address",value:i},{type:"address",value:o}]),f=(await $n({contractAddress:n,functionSelector:"allowance(address,address)",ownerAddress:o,parameter:t})).constant_result?.[0];if(!f)return 0n;try{return BigInt(`0x${f}`)}catch{return 0n}}var wn="https://api.trongrid.io",ci=1000,fi=1e5,gi=420,mi=30000;var Cn=j(()=>{D()});import{bytesToHex as Ti}from"@noble/hashes/utils.js";import{HDKey as ei}from"@scure/bip32";import{mnemonicToSeedSync as _i}from"@scure/bip39";import{AssetValue as $,BaseDecimal as Qn,Chain as h,derivationPathToString as Jn,getRPCUrl as Pi,NetworkDerivationPath as Un,SwapKitError as v,updateDerivationPath as jn,warnOnce as Yn}from"@swapkit/helpers";import{match as wi,P as V}from"ts-pattern";function Mn({phrase:n,derivationPath:i}){let o=ei.fromMasterSeed(_i(n)).derive(i);if(!o.privateKey)throw new v("toolbox_tron_no_signer");return Ti(o.privateKey)}function On({phrase:n,derivationPath:i,index:o}){let t=i||Jn(jn(Un[h.Tron],{index:o||0}));return Mn({derivationPath:t,phrase:n})}function Fi({phrase:n,derivationPath:i}){let o=Mn({derivationPath:i,phrase:n}),t=en(o);return{getAddress:()=>Promise.resolve(t),signTransaction:(r)=>{Z(r);let f=_n({privateKey:o,txID:r.txID});return Promise.resolve({...r,signature:[f]})}}}function Zn({transaction:n,memo:i,expiration:o,feeLimit:t}){let r={},f={};if(t!==void 0&&n.raw_data)r.fee_limit=t,f.fee_limit=t;if(i){let _=Pn(i);r.data=_,f.data=_}if(o){let _=n.raw_data.expiration+o*1000;r.expiration=_,f.expiration=_}if(Object.keys(r).length===0)return n;let{raw_data_hex:m,txID:P}=rn(n.raw_data_hex,r);return{...n,raw_data:{...n.raw_data,...f},raw_data_hex:m,txID:P}}function Gn(n={}){let i="index"in n?n.index||0:0,o=Jn("derivationPath"in n&&n.derivationPath?n.derivationPath:jn(Un[h.Tron],{index:i})),t,r=!1;function f(){if(r)return Promise.resolve(t);return t=wi(n).with({phrase:V.string},({phrase:a})=>Fi({derivationPath:o,phrase:a})).with({signer:V.not(V.nullish)},({signer:a})=>a).otherwise(()=>{return}),r=!0,Promise.resolve(t)}async function m(){let a=await f();if(!a)throw new v("toolbox_tron_no_signer");return a.getAddress()}async function P(a){let c=a||ui,T=await k(),e=c*T.energyFee,g=Math.ceil(e*1.5);return Math.min(Math.max(g,1e7),150000000)}async function _({contractAddress:a,functionSelector:c,parameter:T,sender:e,memo:g,expiration:w}){let u=await y({contractAddress:a,functionSelector:c,parameter:T,sender:e}),x=await P(u),C=await qn({contractAddress:a,feeLimit:x,functionSelector:c,ownerAddress:e,parameter:T});return Zn({expiration:w,feeLimit:x,memo:g,transaction:C})}async function z(a){if(!F(a))return[$.from({chain:h.Tron})];try{let c=await hn(a);if(!c)return[$.from({chain:h.Tron})];let T=[$.from({chain:h.Tron,fromBaseDecimal:6,value:String(c.balance)})],e=c.trc20?.find((g)=>(H in g));if(e){let g=e[H];T.push($.from({asset:`TRON.USDT-${H}`,fromBaseDecimal:6,value:g}))}return T}catch(c){return Yn({condition:!0,id:"tron_toolbox_get_balance_failed",warning:`Tron API getBalance failed: ${c instanceof Error?c.message:c}`}),[$.from({chain:h.Tron})]}}async function K({recipient:a,assetValue:c,memo:T,expiration:e}){if(!F(a))throw new v("toolbox_tron_token_transfer_failed",{message:"invalid address"});let g=await f();if(!g)throw new v("toolbox_tron_no_signer");try{let w=await m(),u=await l({assetValue:c,expiration:e,memo:T,recipient:a,sender:w}),x=await g.signTransaction(u),C=await M(x);if(!C)throw new v("toolbox_tron_token_transfer_failed",{message:"broadcast failed"});return C}catch(w){throw new v("toolbox_tron_token_transfer_failed",{message:w instanceof Error?w.message:String(w)})}}function L({requiredBandwidth:a,resources:c,feePerUnit:T}){let e=Math.max(0,c.free+c.total-c.used);return a>e?(a-e)*T:0}async function An({recipient:a,senderAddress:c}){let[T,e,g]=await Promise.all([k(),d(a),b(c)]),w=e?0:T.createAccountFee,u=L({feePerUnit:T.bandwidthFee,requiredBandwidth:vi,resources:g.bandwidth});return $.from({chain:h.Tron,fromBaseDecimal:Qn.TRON,value:w+u})}async function Wn({assetValue:a,recipient:c,senderAddress:T}){let e=a.address;if(!e)throw new v("toolbox_tron_invalid_token_identifier",{identifier:a.toString()});let[g,w,u,x]=await Promise.all([k(),d(c),b(T),y({contractAddress:e,functionSelector:"transfer(address,uint256)",parameter:J([{type:"address",value:c},{type:"uint256",value:a.getBaseValue("string")}]),sender:T})]),C=w?0:g.createAccountFee,O=L({feePerUnit:g.bandwidthFee,requiredBandwidth:xi,resources:u.bandwidth}),p=Math.max(0,u.energy.total-u.energy.used),Dn=x>p?(x-p)*g.energyFee:0;return $.from({chain:h.Tron,fromBaseDecimal:Qn.TRON,value:C+O+Dn})}async function Sn({assetValue:a,recipient:c,sender:T}){let e=await f();try{let g=T?T:e?await m():void 0;if(!g)return a.isGasAsset?$.from({chain:h.Tron,value:0.1}):$.from({chain:h.Tron,value:15});return a.isGasAsset?An({recipient:c,senderAddress:g}):Wn({assetValue:a,recipient:c,senderAddress:g})}catch(g){throw Yn({condition:!0,id:"tron_toolbox_fee_estimation_failed",warning:`Failed to calculate exact fee: ${g instanceof Error?g.message:g}`}),new v("toolbox_fee_estimation_failed",{chain:h.Tron,error:g})}}async function l({recipient:a,assetValue:c,memo:T,sender:e,expiration:g}){if(!F(a)||!F(e))throw new v("toolbox_tron_transaction_creation_failed",{message:"invalid address"});if(c.isGasAsset){let u=await Fn({amount:c.getBaseValue("number"),from:e,to:a});return Zn({expiration:g,memo:T,transaction:u})}let w=c.address;if(!w)throw new v("toolbox_tron_invalid_token_identifier",{identifier:c.toString()});return _({contractAddress:w,expiration:g,functionSelector:"transfer(address,uint256)",memo:T,parameter:J([{type:"address",value:a},{type:"uint256",value:c.getBaseValue("string")}]),sender:e})}async function I(a){Z(a);let c=await f();if(!c)throw new v("toolbox_tron_no_signer");return c.signTransaction(a)}async function kn(a){let c=await I(a);return M(c)}function s({assetAddress:a,spenderAddress:c,from:T}){return zn({assetAddress:a,owner:T,spender:c})}async function Kn({assetAddress:a,spenderAddress:c,from:T,amount:e}){let g=await s({assetAddress:a,from:T,spenderAddress:c});if(!e)return g>0n;return g>=BigInt(e)}async function Nn({assetAddress:a,spenderAddress:c,amount:T,from:e}){if(!F(a)||!F(c))throw new v("toolbox_tron_approve_failed");let g=await f();if(!g)throw new v("toolbox_tron_no_signer");let w=e||await m(),u=T!==void 0?BigInt(T).toString():hi;try{let x=await _({contractAddress:a,functionSelector:"approve(address,uint256)",parameter:J([{type:"address",value:c},{type:"uint256",value:u}]),sender:w}),C=await g.signTransaction(x),O=await M(C);if(!O)throw new v("toolbox_tron_approve_failed");return O}catch(x){if(x instanceof v)throw x;throw new v("toolbox_tron_approve_failed",{error:x})}}return{approve:Nn,broadcastTransaction:M,createTransaction:l,estimateTransactionFee:Sn,getAddress:m,getApprovedAmount:s,getBalance:z,getRpcUrl:()=>Pi(h.Tron),isApproved:Kn,signAndBroadcastTransaction:kn,signTransaction:I,transfer:K,validateAddress:F}}var Xn,vi=268,ui=65000,xi=345,H="TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",hi="115792089237316195423570985008687907853269984665640564039457584007913129639935";var Bn=j(()=>{an();Cn();D();Xn=F});var qi={};yn(qi,{validateTronAddress:()=>Xn,getTronToolbox:()=>Gn,getTronPrivateKeyFromMnemonic:()=>On});var $i=j(()=>{Bn()});$i();export{Xn as validateTronAddress,Gn as getTronToolbox,On as getTronPrivateKeyFromMnemonic};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trongrid.d.ts","sourceRoot":"","sources":["../../../../src/tron/helpers/trongrid.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA2B,qBAAqB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAmEhG,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,MAAM;;;eA+B7D;AAED,wBAAsB,mBAAmB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,4BAiB3G;AAED,wBAAsB,wBAAwB,CAAC,EAC7C,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,SAAa,GACd,EAAE;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,4BA0BA;AAsBD,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"trongrid.d.ts","sourceRoot":"","sources":["../../../../src/tron/helpers/trongrid.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA2B,qBAAqB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAmEhG,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,MAAM;;;eA+B7D;AAED,wBAAsB,mBAAmB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,4BAiB3G;AAED,wBAAsB,wBAAwB,CAAC,EAC7C,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,SAAa,GACd,EAAE;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,4BA0BA;AAsBD,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,qBAAqB,mBAqB7E;AAED,wBAAsB,sBAAsB;;;;GAuB3C;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,MAAM;;;;;;;;;;GA2B5D;AAED,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM,oBAO3D;AAED,wBAAsB,sBAAsB,CAAC,MAAM,EAAE;IACnD,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB,mBAYA;AAED,wBAAsB,iBAAiB,CAAC,EACtC,YAAY,EACZ,KAAK,EACL,OAAO,GACR,EAAE;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,mBAqBA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolbox.d.ts","sourceRoot":"","sources":["../../../src/tron/toolbox.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,UAAU,EASX,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,wBAAwB,EASzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEL,kBAAkB,EAKnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,2BAA2B,EAC3B,oBAAoB,EAEpB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,mBAAmB,2BAAqB,CAAC;AActD,wBAAgB,6BAA6B,CAAC,EAC5C,MAAM,EACN,cAAc,EAAE,UAAU,EAC1B,KAAK,GACN,EAAE;IACD,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,UAMA;AAsDD,wBAAgB,cAAc,CAAC,OAAO,GAAE,kBAAuB;
|
|
1
|
+
{"version":3,"file":"toolbox.d.ts","sourceRoot":"","sources":["../../../src/tron/toolbox.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,UAAU,EASX,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,wBAAwB,EASzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEL,kBAAkB,EAKnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,2BAA2B,EAC3B,oBAAoB,EAEpB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,mBAAmB,2BAAqB,CAAC;AActD,wBAAgB,6BAA6B,CAAC,EAC5C,MAAM,EACN,cAAc,EAAE,UAAU,EAC1B,KAAK,GACN,EAAE;IACD,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,UAMA;AAsDD,wBAAgB,cAAc,CAAC,OAAO,GAAE,kBAAuB;8DA2RU,iBAAiB;;6EAtDF,2BAA2B;gEAxBxC,kBAAkB,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;;gEAoE9C,kBAAkB;0BA/MlD,MAAM;;iEAmNiC,oBAAoB;+CATtC,eAAe;mCAP3B,eAAe;4DAlKU,kBAAkB;;EAyOxF"}
|
package/package.json
CHANGED
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"@stricahq/bip32ed25519": "1.1.2",
|
|
34
34
|
"@stricahq/cbors": "~1.0.2",
|
|
35
35
|
"@stricahq/typhonjs": "~3.0.1",
|
|
36
|
-
"@swapkit/helpers": "4.12.
|
|
36
|
+
"@swapkit/helpers": "4.12.5",
|
|
37
37
|
"@swapkit/utxo-signer": "2.1.0",
|
|
38
38
|
"@ton/crypto": "~3.3.0",
|
|
39
39
|
"@ton/ton": "~15.4.0",
|
|
@@ -191,5 +191,5 @@
|
|
|
191
191
|
"type-check:go": "tsgo"
|
|
192
192
|
},
|
|
193
193
|
"type": "module",
|
|
194
|
-
"version": "4.13.
|
|
194
|
+
"version": "4.13.3"
|
|
195
195
|
}
|