@swapkit/toolboxes 1.0.0-beta.20 → 1.0.0-beta.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,3 @@
1
- var D1={};V1(D1,{validateNearAddress:()=>T,tgasToGas:()=>t,isSimpleTransfer:()=>I,isCustomEstimator:()=>l,isContractDeployment:()=>S,isContractCall:()=>h,isBatchTransaction:()=>A,isAccountCreation:()=>g,getNearToolbox:()=>U1,getNearSignerFromPrivateKey:()=>K,getNearSignerFromPhrase:()=>b,getFullAccessPublicKey:()=>y,getContractMethodGas:()=>m,gasToTGas:()=>e,estimateBatchGas:()=>u,createNearContract:()=>w,createNEP141Token:()=>F,GAS_COSTS:()=>U});module.exports=H1(D1);var q=require("@swapkit/helpers");var E=require("@swapkit/helpers"),n=require("near-api-js");async function T(W){try{let{validateAccountId:Z}=await import("near-sdk-js");return Z(W)}catch{let Z=/^(([a-z\d]+[-_])*[a-z\d]+\.)*([a-z\d]+[-_])*[a-z\d]+$/;return W.length>=2&&W.length<=64&&Z.test(W)}}async function b(W){let{parseSeedPhrase:Z}=await import("near-seed-phrase"),{KeyPair:M}=await import("near-api-js"),R=W.index||0,$=W.derivationPath?E.derivationPathToString(W.derivationPath.slice(0,3)):`m/44'/397'/${R}'`,{secretKey:X}=Z(W.phrase,$),z=M.fromString(X);return s(z)}async function K(W){let{KeyPair:Z}=await import("near-api-js/lib/utils"),M=Z.fromString(W);return s(M)}class c extends n.KeyPairSigner{#x;constructor(W){super(W);this.#x=W}getAddress(){let W=this.#x.getPublicKey(),Z=Buffer.from(W.data).toString("hex");return Promise.resolve(Z)}}function s(W){return new c(W)}async function y(W,Z){let R=(await W.query({request_type:"view_access_key_list",finality:"final",account_id:Z})).keys.find((X)=>X.access_key.permission==="FullAccess");if(!R)throw new E.SwapKitError("toolbox_near_invalid_address");let{utils:$}=await import("near-api-js");return $.PublicKey.fromString(R.public_key)}var U={SIMPLE_TRANSFER:"1",TOKEN_TRANSFER:"100",CONTRACT_CALL:"100",ACCOUNT_CREATION:"30",CONTRACT_DEPLOYMENT:"200",ACCESS_KEY_ADDITION:"5",ACCESS_KEY_DELETION:"5",STAKE:"10",STORAGE_DEPOSIT:"100"};function I(W){return"recipient"in W&&"amount"in W&&!("contractId"in W)}function h(W){return"contractId"in W&&"methodName"in W}function A(W){return"actions"in W}function g(W){return"newAccountId"in W}function S(W){return"contractCode"in W}function l(W){return"customEstimator"in W}function u(W){let Z=0;for(let M of W)switch(M.enum){case"transfer":Z+=Number(U.SIMPLE_TRANSFER);break;case"functionCall":Z+=Number(U.CONTRACT_CALL);break;case"createAccount":Z+=Number(U.ACCOUNT_CREATION);break;case"deployContract":Z+=Number(U.CONTRACT_DEPLOYMENT);break;case"addKey":Z+=Number(U.ACCESS_KEY_ADDITION);break;case"deleteKey":Z+=Number(U.ACCESS_KEY_DELETION);break;case"stake":Z+=Number(U.STAKE);break;default:Z+=Number(U.CONTRACT_CALL)}return Z.toString()}function m(W){if(W==="ft_transfer"||W==="ft_transfer_call")return U.TOKEN_TRANSFER;if(W==="storage_deposit")return U.STORAGE_DEPOSIT;return U.CONTRACT_CALL}function t(W){return(BigInt(W)*BigInt(1000000000000)).toString()}function e(W){return(BigInt(W)/BigInt(1000000000000)).toString()}var r="1250000000000000000000";async function F({contractId:W,account:Z}){let M=(await import("bn.js")).default,R=await w({account:Z,contractId:W,viewMethods:["ft_balance_of","ft_total_supply","ft_metadata","storage_balance_of","storage_balance_bounds"],changeMethods:["ft_transfer","ft_transfer_call","storage_deposit","storage_withdraw","storage_unregister"]}),$=async(X)=>{if(!await R.storage_balance_of({account_id:X})){let N=(await R.storage_balance_bounds())?.min||r;await R.storage_deposit({account_id:X},new M("100000000000000"),new M(N))}};return{transfer:async(X,z,D)=>{return await $(X),R.ft_transfer({receiver_id:X,amount:z,memo:D},new M("100000000000000"),new M("1"))},transferCall:async(X,z,D,N)=>{return await $(X),R.ft_transfer_call({receiver_id:X,amount:z,memo:N,msg:D},new M("100000000000000"),new M("1"))},balanceOf:(X)=>R.ft_balance_of({account_id:X}),totalSupply:()=>R.ft_total_supply(),metadata:()=>R.ft_metadata(),storageBalanceOf:(X)=>R.storage_balance_of({account_id:X}),storageDeposit:(X,z)=>R.storage_deposit({account_id:X},new M("100000000000000"),new M(z||r)),ensureStorage:$,contract:R}}async function U1(W){let{P:Z,match:M}=await import("ts-pattern"),{providers:R}=await import("near-api-js"),$=await M(W).with({phrase:Z.string},async(x)=>{return await b(x)}).with({signer:Z.any},({signer:x})=>x).otherwise(()=>{return}),X=q.SKConfig.get("rpcUrls")[q.Chain.Near],z=new R.JsonRpcProvider({url:X});async function D(x){if(!$)throw new q.SwapKitError("toolbox_near_no_signer");let{Account:J}=await import("near-api-js"),Q=x||await N();return new J(Q,z,$)}async function N(){if(!$)throw new q.SwapKitError("toolbox_near_no_signer");return await $.getAddress()}async function a(x){if(!$)throw new q.SwapKitError("toolbox_near_no_signer");let{recipient:J,assetValue:Q}=x;if(!T(J))throw new q.SwapKitError("toolbox_near_invalid_address");let Y=await D();if(Q.isGasAsset===!1){let L=Q.address;if(!L)throw new q.SwapKitError("toolbox_near_missing_contract_address");let H=Q.getBaseValue("string");return p({contractId:L,methodName:"ft_transfer",args:{receiver_id:J,amount:H,memo:x.memo}})}try{let L=Q.getBaseValue("string");return(await Y.transfer({receiverId:J,amount:L})).transaction.hash}catch(L){throw new q.SwapKitError("toolbox_near_transfer_failed",{error:L})}}async function x1(x){let{recipient:J,assetValue:Q,memo:Y,feeRate:L,attachedDeposit:H,sender:V}=x,j=V||await N(),B=await y(z,j),_=(await z.query({request_type:"view_access_key",finality:"final",account_id:j})).nonce+1,v=Q.getBaseValue("bigint"),{SCHEMA:C}=await import("near-api-js/lib/transaction"),{transactions:k,utils:G}=await import("near-api-js"),o=[k.transfer(v)];if(Y&&H)o.push(k.functionCall("memo",{memo:Y},BigInt(L),BigInt(H)));let R1=await z.block({finality:"final"}),i=G.serialize.base_decode(R1.header.hash),Y1=k.createTransaction(j,B,J,_,o,i),f1=G.serialize.serialize(C.Transaction,Y1);return{serialized:Buffer.from(f1).toString("base64"),publicKey:B.toString(),details:{signerId:await N(),nonce:_,blockHash:G.serialize.base_encode(i)}}}async function W1(x){let{accountId:J}=x,Q=await y(z,J),L=(await z.query({request_type:"view_access_key",finality:"final",account_id:J,public_key:Q.toString()})).nonce+1,{SCHEMA:H}=await import("near-api-js/lib/transaction"),{transactions:V,utils:j}=await import("near-api-js"),B=await z.block({finality:"final"}),O=j.serialize.base_decode(B.header.hash),_=[V.functionCall(x.methodName,Buffer.from(JSON.stringify(x.args)),BigInt(x.gas),BigInt(x.attachedDeposit))],v=V.createTransaction(J,Q,x.contractId,L,_,O),C=j.serialize.serialize(H.Transaction,v);return{serialized:Buffer.from(C).toString("base64"),publicKey:Q.toString(),details:{signerId:J,receiverId:x.contractId,methodName:x.methodName,nonce:L,blockHash:j.serialize.base_encode(O)}}}async function q1(x){if(!$)throw new q.SwapKitError("toolbox_near_no_signer");let[J,Q]=await $.signTransaction(x);return Q}async function J1(x){return(await z.sendTransaction(x)).transaction.hash}async function Q1(x){if("assetValue"in x){let L=BigInt("115123062500")+BigInt("108059500000"),H=await Z1(),V=L*BigInt(H.toString());return q.AssetValue.from({chain:q.Chain.Near,value:V.toString(),fromBaseDecimal:q.BaseDecimal[q.Chain.Near]})}let J=$?await D():void 0;return P(x,J)}async function Z1(){try{return await z.query({request_type:"call_function",finality:"final",account_id:"system",method_name:"gas_price",args_base64:""})}catch{return"100000000"}}async function $1(x,J,Q){if(!$)throw new q.SwapKitError("toolbox_near_no_signer");let Y=await D(),{utils:L}=await import("near-api-js"),H=L.format.parseNearAmount(Q)||"0";return(await Y.createAccount(x,L.PublicKey.fromString(J),BigInt(H))).transaction.hash}async function p(x){try{if(!$)throw new q.SwapKitError("toolbox_near_no_signer");let{transactions:J}=await import("near-api-js"),{contractId:Q,methodName:Y,args:L,deposit:H}=x,V=await D(),j=await P({methodName:Y,args:L||{},contractId:Q}),B=J.functionCall(Y,L||{},j.getBaseValue("bigint"),BigInt(H||"0"));return(await V.signAndSendTransaction({receiverId:Q,actions:[B]})).transaction.hash}catch(J){throw new q.SwapKitError("toolbox_near_transfer_failed",{error:J})}}async function X1(x){let{createNearContract:J}=await import("../../chunk-vtd17cje.js"),Q=await D();return J({account:Q,contractId:x.contractId,viewMethods:x.viewMethods,changeMethods:x.changeMethods})}async function z1(x){if(!$)throw new q.SwapKitError("toolbox_near_no_signer");if(x.actions.length===0)throw new q.SwapKitError("toolbox_near_empty_batch");return(await(await D()).signAndSendTransaction({receiverId:x.receiverId,actions:x.actions})).transaction.hash}async function L1(x){let J=await D();return F({contractId:x,account:J})}async function M1(x){try{let J=await D(x),Q;try{let Y=await J.getBalance();Q=q.AssetValue.from({chain:q.Chain.Near,value:Y,fromBaseDecimal:q.BaseDecimal[q.Chain.Near]})}catch{Q=q.AssetValue.from({chain:q.Chain.Near,value:"0",fromBaseDecimal:q.BaseDecimal[q.Chain.Near]})}return[Q]}catch(J){throw new q.SwapKitError("toolbox_near_balance_failed",{error:J})}}async function P(x,J){let Q=await M(x).when(I,()=>U.SIMPLE_TRANSFER).when(h,(V)=>m(V.methodName)).when(A,(V)=>u(V.actions)).when(g,()=>U.ACCOUNT_CREATION).when(S,()=>U.CONTRACT_DEPLOYMENT).when(l,(V)=>{if(!J)throw new q.SwapKitError("toolbox_near_no_account");return V.customEstimator(J)}).otherwise(()=>{throw new q.SwapKitError("toolbox_near_invalid_gas_params")}),Y=await d(),H=BigInt(Q)*BigInt(1000000000000)*BigInt(Y);return q.AssetValue.from({chain:q.Chain.Near,value:H,fromBaseDecimal:q.BaseDecimal[q.Chain.Near]})}async function d(){try{return(await z.gasPrice(null)).gas_price||"100000000"}catch(x){return"100000000"}}return{getAddress:N,getPublicKey:async()=>$?(await $.getPublicKey()).toString():"",provider:z,transfer:a,createTransaction:x1,createContractFunctionCall:W1,estimateTransactionFee:Q1,broadcastTransaction:J1,signTransaction:q1,getBalance:M1,validateAddress:T,getSignerFromPhrase:(x)=>b(x),getSignerFromPrivateKey:K,callFunction:p,createSubAccount:$1,createContract:X1,executeBatchTransaction:z1,nep141:L1,getGasPrice:d,estimateGas:P}}
1
+ var D1={};V1(D1,{validateNearAddress:()=>T,tgasToGas:()=>t,isSimpleTransfer:()=>I,isCustomEstimator:()=>l,isContractDeployment:()=>S,isContractCall:()=>h,isBatchTransaction:()=>A,isAccountCreation:()=>g,getNearToolbox:()=>R1,getNearSignerFromPrivateKey:()=>K,getNearSignerFromPhrase:()=>y,getFullAccessPublicKey:()=>P,getContractMethodGas:()=>m,gasToTGas:()=>e,estimateBatchGas:()=>u,createNearContract:()=>F,createNEP141Token:()=>N,GAS_COSTS:()=>R});module.exports=H1(D1);var q=require("@swapkit/helpers");var E=require("@swapkit/helpers"),n=require("near-api-js");async function T(W){try{let{validateAccountId:Z}=await import("near-sdk-js");return Z(W)}catch{let Z=/^(([a-z\d]+[-_])*[a-z\d]+\.)*([a-z\d]+[-_])*[a-z\d]+$/;return W.length>=2&&W.length<=64&&Z.test(W)}}async function y(W){let{parseSeedPhrase:Z}=await import("near-seed-phrase"),{KeyPair:M}=await import("near-api-js"),Y=W.index||0,$=W.derivationPath?E.derivationPathToString(W.derivationPath.slice(0,3)):`m/44'/397'/${Y}'`,{secretKey:X}=Z(W.phrase,$),z=M.fromString(X);return s(z)}async function K(W){let{KeyPair:Z}=await import("near-api-js/lib/utils"),M=Z.fromString(W);return s(M)}class c extends n.KeyPairSigner{#x;constructor(W){super(W);this.#x=W}getAddress(){let W=this.#x.getPublicKey(),Z=Buffer.from(W.data).toString("hex");return Promise.resolve(Z)}}function s(W){return new c(W)}async function P(W,Z){let Y=(await W.query({request_type:"view_access_key_list",finality:"final",account_id:Z})).keys.find((X)=>X.access_key.permission==="FullAccess");if(!Y)throw new E.SwapKitError("toolbox_near_invalid_address");let{utils:$}=await import("near-api-js");return $.PublicKey.fromString(Y.public_key)}var R={SIMPLE_TRANSFER:"1",TOKEN_TRANSFER:"100",CONTRACT_CALL:"100",ACCOUNT_CREATION:"30",CONTRACT_DEPLOYMENT:"200",ACCESS_KEY_ADDITION:"5",ACCESS_KEY_DELETION:"5",STAKE:"10",STORAGE_DEPOSIT:"100"};function I(W){return"recipient"in W&&"amount"in W&&!("contractId"in W)}function h(W){return"contractId"in W&&"methodName"in W}function A(W){return"actions"in W}function g(W){return"newAccountId"in W}function S(W){return"contractCode"in W}function l(W){return"customEstimator"in W}function u(W){let Z=0;for(let M of W)switch(M.enum){case"transfer":Z+=Number(R.SIMPLE_TRANSFER);break;case"functionCall":Z+=Number(R.CONTRACT_CALL);break;case"createAccount":Z+=Number(R.ACCOUNT_CREATION);break;case"deployContract":Z+=Number(R.CONTRACT_DEPLOYMENT);break;case"addKey":Z+=Number(R.ACCESS_KEY_ADDITION);break;case"deleteKey":Z+=Number(R.ACCESS_KEY_DELETION);break;case"stake":Z+=Number(R.STAKE);break;default:Z+=Number(R.CONTRACT_CALL)}return Z.toString()}function m(W){if(W==="ft_transfer"||W==="ft_transfer_call")return R.TOKEN_TRANSFER;if(W==="storage_deposit")return R.STORAGE_DEPOSIT;return R.CONTRACT_CALL}function t(W){return(BigInt(W)*BigInt(1000000000000)).toString()}function e(W){return(BigInt(W)/BigInt(1000000000000)).toString()}var r="1250000000000000000000";async function N({contractId:W,account:Z}){let M=(await import("bn.js")).default,Y=await F({account:Z,contractId:W,viewMethods:["ft_balance_of","ft_total_supply","ft_metadata","storage_balance_of","storage_balance_bounds"],changeMethods:["ft_transfer","ft_transfer_call","storage_deposit","storage_withdraw","storage_unregister"]}),$=async(X)=>{if(!await Y.storage_balance_of({account_id:X})){let B=(await Y.storage_balance_bounds())?.min||r;await Y.storage_deposit({account_id:X},new M("100000000000000"),new M(B))}};return{transfer:async(X,z,D)=>{return await $(X),Y.ft_transfer({receiver_id:X,amount:z,memo:D},new M("100000000000000"),new M("1"))},transferCall:async(X,z,D,B)=>{return await $(X),Y.ft_transfer_call({receiver_id:X,amount:z,memo:B,msg:D},new M("100000000000000"),new M("1"))},balanceOf:(X)=>Y.ft_balance_of({account_id:X}),totalSupply:()=>Y.ft_total_supply(),metadata:()=>Y.ft_metadata(),storageBalanceOf:(X)=>Y.storage_balance_of({account_id:X}),storageDeposit:(X,z)=>Y.storage_deposit({account_id:X},new M("100000000000000"),new M(z||r)),ensureStorage:$,contract:Y}}async function R1(W){let{P:Z,match:M}=await import("ts-pattern"),{providers:Y}=await import("near-api-js"),$=await M(W).with({phrase:Z.string},async(x)=>{return await y(x)}).with({signer:Z.any},({signer:x})=>x).otherwise(()=>{return}),X=q.SKConfig.get("rpcUrls")[q.Chain.Near],z=new Y.JsonRpcProvider({url:X});async function D(x){if(!$)throw new q.SwapKitError("toolbox_near_no_signer");let{Account:J}=await import("near-api-js"),Q=x||await B();return new J(Q,z,$)}async function B(){if(!$)throw new q.SwapKitError("toolbox_near_no_signer");return await $.getAddress()}async function a(x){if(!$)throw new q.SwapKitError("toolbox_near_no_signer");let{recipient:J,assetValue:Q}=x;if(!T(J))throw new q.SwapKitError("toolbox_near_invalid_address");let f=await D();if(Q.isGasAsset===!1){let L=Q.address;if(!L)throw new q.SwapKitError("toolbox_near_missing_contract_address");let H=Q.getBaseValue("string");return p({contractId:L,methodName:"ft_transfer",args:{receiver_id:J,amount:H,memo:x.memo}})}try{let L=Q.getBaseValue("string");return(await f.transfer({receiverId:J,amount:L})).transaction.hash}catch(L){throw new q.SwapKitError("toolbox_near_transfer_failed",{error:L})}}async function x1(x){let{recipient:J,assetValue:Q,memo:f,feeRate:L,attachedDeposit:H,sender:V}=x,j=V||await B(),w=await P(z,j),k=(await z.query({request_type:"view_access_key",finality:"final",account_id:j})).nonce+1,v=Q.getBaseValue("bigint"),{SCHEMA:G}=await import("near-api-js/lib/transaction"),{transactions:_,utils:C}=await import("near-api-js"),o=[_.transfer(v)];if(f&&H)o.push(_.functionCall("memo",{memo:f},BigInt(L),BigInt(H)));let Y1=await z.block({finality:"final"}),i=C.serialize.base_decode(Y1.header.hash),f1=_.createTransaction(j,w,J,k,o,i),U1=C.serialize.serialize(G.Transaction,f1);return{serialized:Buffer.from(U1).toString("base64"),publicKey:w.toString(),details:{signerId:await B(),nonce:k,blockHash:C.serialize.base_encode(i)}}}async function W1(x){let{accountId:J}=x,Q=await P(z,J),L=(await z.query({request_type:"view_access_key",finality:"final",account_id:J,public_key:Q.toString()})).nonce+1,{SCHEMA:H}=await import("near-api-js/lib/transaction"),{transactions:V,utils:j}=await import("near-api-js"),w=await z.block({finality:"final"}),O=j.serialize.base_decode(w.header.hash),k=[V.functionCall(x.methodName,Buffer.from(JSON.stringify(x.args)),BigInt(x.gas),BigInt(x.attachedDeposit))],v=V.createTransaction(J,Q,x.contractId,L,k,O),G=j.serialize.serialize(H.Transaction,v);return{serialized:Buffer.from(G).toString("base64"),publicKey:Q.toString(),details:{signerId:J,receiverId:x.contractId,methodName:x.methodName,nonce:L,blockHash:j.serialize.base_encode(O)}}}async function q1(x){if(!$)throw new q.SwapKitError("toolbox_near_no_signer");let[J,Q]=await $.signTransaction(x);return Q}async function J1(x){return(await z.sendTransaction(x)).transaction.hash}async function Q1(x){if("assetValue"in x){let L=BigInt("115123062500")+BigInt("108059500000"),H=await Z1(),V=L*BigInt(H.toString());return q.AssetValue.from({chain:q.Chain.Near,value:V.toString(),fromBaseDecimal:q.BaseDecimal[q.Chain.Near]})}let J=$?await D():void 0;return b(x,J)}async function Z1(){try{return await z.query({request_type:"call_function",finality:"final",account_id:"system",method_name:"gas_price",args_base64:""})}catch{return"100000000"}}async function $1(x,J,Q){if(!$)throw new q.SwapKitError("toolbox_near_no_signer");let f=await D(),{utils:L}=await import("near-api-js"),H=L.format.parseNearAmount(Q)||"0";return(await f.createAccount(x,L.PublicKey.fromString(J),BigInt(H))).transaction.hash}async function p(x){try{if(!$)throw new q.SwapKitError("toolbox_near_no_signer");let{transactions:J}=await import("near-api-js"),{contractId:Q,methodName:f,args:L,deposit:H}=x,V=await D(),j=await b({methodName:f,args:L||{},contractId:Q}),w=J.functionCall(f,L||{},j.getBaseValue("bigint"),BigInt(H||"0"));return(await V.signAndSendTransaction({receiverId:Q,actions:[w]})).transaction.hash}catch(J){throw new q.SwapKitError("toolbox_near_transfer_failed",{error:J})}}async function X1(x){let{createNearContract:J}=await import("../../chunk-vtd17cje.js"),Q=await D();return J({account:Q,contractId:x.contractId,viewMethods:x.viewMethods,changeMethods:x.changeMethods})}async function z1(x){if(!$)throw new q.SwapKitError("toolbox_near_no_signer");if(x.actions.length===0)throw new q.SwapKitError("toolbox_near_empty_batch");return(await(await D()).signAndSendTransaction({receiverId:x.receiverId,actions:x.actions})).transaction.hash}async function L1(x){let J=await D();return N({contractId:x,account:J})}async function M1(x){try{let J=await D(x),Q;try{let f=await J.getBalance();Q=q.AssetValue.from({chain:q.Chain.Near,value:f,fromBaseDecimal:q.BaseDecimal[q.Chain.Near]})}catch{Q=q.AssetValue.from({chain:q.Chain.Near,value:"0",fromBaseDecimal:q.BaseDecimal[q.Chain.Near]})}return[Q]}catch(J){throw new q.SwapKitError("toolbox_near_balance_failed",{error:J})}}async function b(x,J){let Q=await M(x).when(I,()=>R.SIMPLE_TRANSFER).when(h,(V)=>m(V.methodName)).when(A,(V)=>u(V.actions)).when(g,()=>R.ACCOUNT_CREATION).when(S,()=>R.CONTRACT_DEPLOYMENT).when(l,(V)=>{if(!J)throw new q.SwapKitError("toolbox_near_no_account");return V.customEstimator(J)}).otherwise(()=>{throw new q.SwapKitError("toolbox_near_invalid_gas_params")}),f=await d(),H=BigInt(Q)*BigInt(1000000000000)*BigInt(f);return q.AssetValue.from({chain:q.Chain.Near,value:H,fromBaseDecimal:q.BaseDecimal[q.Chain.Near]})}async function d(){try{return(await z.gasPrice(null)).gas_price||"100000000"}catch(x){return"100000000"}}return{getAddress:B,getPublicKey:async()=>$?(await $.getPublicKey()).toString():"",provider:z,transfer:a,createTransaction:x1,createContractFunctionCall:W1,estimateTransactionFee:Q1,broadcastTransaction:J1,signTransaction:q1,getBalance:M1,validateAddress:T,getSignerFromPhrase:(x)=>y(x),getSignerFromPrivateKey:K,callFunction:p,createSubAccount:$1,createContract:X1,executeBatchTransaction:z1,nep141:L1,getGasPrice:d,estimateGas:b}}
2
2
 
3
- //# debugId=701F95BE79A1566C64756E2164756E21
3
+ //# debugId=95CBB72A2AA595E364756E2164756E21
@@ -8,6 +8,6 @@
8
8
  "import type { Account, Contract } from \"near-api-js\";\nimport { createNearContract } from \"./contractFactory\";\n\nconst DEFAULT_STORAGE_DEPOSIT = \"1250000000000000000000\"; // 0.00125 NEAR\n\n// Define NEP-141 contract interface\ninterface NEP141Contract extends Contract {\n // View methods\n ft_balance_of(args: { account_id: string }): Promise<string>;\n ft_total_supply(): Promise<string>;\n ft_metadata(): Promise<any>;\n storage_balance_of(args: { account_id: string }): Promise<any>;\n storage_balance_bounds(): Promise<any>;\n\n // Change methods\n ft_transfer(args: any, gas: any, deposit: any): Promise<any>;\n ft_transfer_call(args: any, gas: any, deposit: any): Promise<any>;\n storage_deposit(args: any, gas: any, deposit: any): Promise<any>;\n storage_withdraw(args: any, gas: any, deposit: any): Promise<any>;\n storage_unregister(force?: boolean, gas?: any): Promise<any>;\n}\n\nexport async function createNEP141Token({\n contractId,\n account,\n}: {\n contractId: string;\n account: Account;\n}) {\n const BN = (await import(\"bn.js\")).default;\n\n const contract = await createNearContract<NEP141Contract>({\n account,\n contractId,\n viewMethods: [\n \"ft_balance_of\",\n \"ft_total_supply\",\n \"ft_metadata\",\n \"storage_balance_of\",\n \"storage_balance_bounds\",\n ],\n changeMethods: [\n \"ft_transfer\",\n \"ft_transfer_call\",\n \"storage_deposit\",\n \"storage_withdraw\",\n \"storage_unregister\",\n ],\n });\n\n // Helper to ensure storage before transfers\n const ensureStorageFor = async (accountId: string) => {\n const balance = await contract.storage_balance_of({ account_id: accountId });\n if (!balance) {\n // Get minimum storage requirement\n const bounds = await contract.storage_balance_bounds();\n const deposit = bounds?.min || DEFAULT_STORAGE_DEPOSIT;\n\n await contract.storage_deposit(\n { account_id: accountId },\n new BN(\"100000000000000\"), // 100 TGas\n new BN(deposit),\n );\n }\n };\n\n return {\n transfer: async (receiverId: string, amount: string, memo?: string) => {\n // Ensure recipient has storage before transfer\n await ensureStorageFor(receiverId);\n\n return contract.ft_transfer(\n { receiver_id: receiverId, amount, memo },\n new BN(\"100000000000000\"), // 100 TGas\n new BN(\"1\"), // 1 yoctoNEAR for security\n );\n },\n\n transferCall: async (receiverId: string, amount: string, msg: string, memo?: string) => {\n // Ensure recipient has storage before transfer\n await ensureStorageFor(receiverId);\n\n return contract.ft_transfer_call(\n { receiver_id: receiverId, amount, memo, msg },\n new BN(\"100000000000000\"), // 100 TGas\n new BN(\"1\"), // 1 yoctoNEAR for security\n );\n },\n\n balanceOf: (accountId: string) => contract.ft_balance_of({ account_id: accountId }),\n\n totalSupply: () => contract.ft_total_supply(),\n\n metadata: () => contract.ft_metadata(),\n\n storageBalanceOf: (accountId: string) => contract.storage_balance_of({ account_id: accountId }),\n\n storageDeposit: (accountId?: string, amount?: string) =>\n contract.storage_deposit(\n { account_id: accountId },\n new BN(\"100000000000000\"),\n new BN(amount || DEFAULT_STORAGE_DEPOSIT),\n ),\n\n ensureStorage: ensureStorageFor,\n\n // Raw contract access for advanced use cases\n contract,\n };\n}\n"
9
9
  ],
10
10
  "mappings": "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",
11
- "debugId": "701F95BE79A1566C64756E2164756E21",
11
+ "debugId": "95CBB72A2AA595E364756E2164756E21",
12
12
  "names": []
13
13
  }
@@ -1,3 +1,3 @@
1
- import{a as E}from"../../chunk-kbnwrc5b.js";import{d as Y,e as f}from"../../chunk-s47y8512.js";import{AssetValue as b,BaseDecimal as y,Chain as B,SKConfig as N1,SwapKitError as D}from"@swapkit/helpers";import{SwapKitError as U1,derivationPathToString as H1}from"@swapkit/helpers";import{KeyPairSigner as V1}from"near-api-js";async function K(W){try{let{validateAccountId:Q}=await import("near-sdk-js");return Q(W)}catch{let Q=/^(([a-z\d]+[-_])*[a-z\d]+\.)*([a-z\d]+[-_])*[a-z\d]+$/;return W.length>=2&&W.length<=64&&Q.test(W)}}async function I(W){let{parseSeedPhrase:Q}=await import("near-seed-phrase"),{KeyPair:L}=await import("near-api-js"),M=W.index||0,Z=W.derivationPath?H1(W.derivationPath.slice(0,3)):`m/44'/397'/${M}'`,{secretKey:$}=Q(W.phrase,Z),X=L.fromString($);return p(X)}async function u(W){let{KeyPair:Q}=await import("near-api-js/lib/utils"),L=Q.fromString(W);return p(L)}class m extends V1{#x;constructor(W){super(W);this.#x=W}getAddress(){let W=this.#x.getPublicKey(),Q=Buffer.from(W.data).toString("hex");return Promise.resolve(Q)}}function p(W){return new m(W)}async function h(W,Q){let M=(await W.query({request_type:"view_access_key_list",finality:"final",account_id:Q})).keys.find(($)=>$.access_key.permission==="FullAccess");if(!M)throw new U1("toolbox_near_invalid_address");let{utils:Z}=await import("near-api-js");return Z.PublicKey.fromString(M.public_key)}var V={SIMPLE_TRANSFER:"1",TOKEN_TRANSFER:"100",CONTRACT_CALL:"100",ACCOUNT_CREATION:"30",CONTRACT_DEPLOYMENT:"200",ACCESS_KEY_ADDITION:"5",ACCESS_KEY_DELETION:"5",STAKE:"10",STORAGE_DEPOSIT:"100"};function d(W){return"recipient"in W&&"amount"in W&&!("contractId"in W)}function o(W){return"contractId"in W&&"methodName"in W}function i(W){return"actions"in W}function n(W){return"newAccountId"in W}function c(W){return"contractCode"in W}function s(W){return"customEstimator"in W}function t(W){let Q=0;for(let L of W)switch(L.enum){case"transfer":Q+=Number(V.SIMPLE_TRANSFER);break;case"functionCall":Q+=Number(V.CONTRACT_CALL);break;case"createAccount":Q+=Number(V.ACCOUNT_CREATION);break;case"deployContract":Q+=Number(V.CONTRACT_DEPLOYMENT);break;case"addKey":Q+=Number(V.ACCESS_KEY_ADDITION);break;case"deleteKey":Q+=Number(V.ACCESS_KEY_DELETION);break;case"stake":Q+=Number(V.STAKE);break;default:Q+=Number(V.CONTRACT_CALL)}return Q.toString()}function e(W){if(W==="ft_transfer"||W==="ft_transfer_call")return V.TOKEN_TRANSFER;if(W==="storage_deposit")return V.STORAGE_DEPOSIT;return V.CONTRACT_CALL}function D1(W){return(BigInt(W)*BigInt(1000000000000)).toString()}function j1(W){return(BigInt(W)/BigInt(1000000000000)).toString()}var r="1250000000000000000000";async function T({contractId:W,account:Q}){let L=(await import("bn.js")).default,M=await E({account:Q,contractId:W,viewMethods:["ft_balance_of","ft_total_supply","ft_metadata","storage_balance_of","storage_balance_bounds"],changeMethods:["ft_transfer","ft_transfer_call","storage_deposit","storage_withdraw","storage_unregister"]}),Z=async($)=>{if(!await M.storage_balance_of({account_id:$})){let w=(await M.storage_balance_bounds())?.min||r;await M.storage_deposit({account_id:$},new L("100000000000000"),new L(w))}};return{transfer:async($,X,j)=>{return await Z($),M.ft_transfer({receiver_id:$,amount:X,memo:j},new L("100000000000000"),new L("1"))},transferCall:async($,X,j,w)=>{return await Z($),M.ft_transfer_call({receiver_id:$,amount:X,memo:w,msg:j},new L("100000000000000"),new L("1"))},balanceOf:($)=>M.ft_balance_of({account_id:$}),totalSupply:()=>M.ft_total_supply(),metadata:()=>M.ft_metadata(),storageBalanceOf:($)=>M.storage_balance_of({account_id:$}),storageDeposit:($,X)=>M.storage_deposit({account_id:$},new L("100000000000000"),new L(X||r)),ensureStorage:Z,contract:M}}async function h1(W){let{P:Q,match:L}=await import("ts-pattern"),{providers:M}=await import("near-api-js"),Z=await L(W).with({phrase:Q.string},async(x)=>{return await I(x)}).with({signer:Q.any},({signer:x})=>x).otherwise(()=>{return}),$=N1.get("rpcUrls")[B.Near],X=new M.JsonRpcProvider({url:$});async function j(x){if(!Z)throw new D("toolbox_near_no_signer");let{Account:q}=await import("near-api-js"),J=x||await w();return new q(J,X,Z)}async function w(){if(!Z)throw new D("toolbox_near_no_signer");return await Z.getAddress()}async function a(x){if(!Z)throw new D("toolbox_near_no_signer");let{recipient:q,assetValue:J}=x;if(!K(q))throw new D("toolbox_near_invalid_address");let R=await j();if(J.isGasAsset===!1){let z=J.address;if(!z)throw new D("toolbox_near_missing_contract_address");let U=J.getBaseValue("string");return A({contractId:z,methodName:"ft_transfer",args:{receiver_id:q,amount:U,memo:x.memo}})}try{let z=J.getBaseValue("string");return(await R.transfer({receiverId:q,amount:z})).transaction.hash}catch(z){throw new D("toolbox_near_transfer_failed",{error:z})}}async function x1(x){let{recipient:q,assetValue:J,memo:R,feeRate:z,attachedDeposit:U,sender:H}=x,N=H||await w(),F=await h(X,N),_=(await X.query({request_type:"view_access_key",finality:"final",account_id:N})).nonce+1,v=J.getBaseValue("bigint"),{SCHEMA:C}=await import("near-api-js/lib/transaction"),{transactions:k,utils:G}=await import("near-api-js"),S=[k.transfer(v)];if(R&&U)S.push(k.functionCall("memo",{memo:R},BigInt(z),BigInt(U)));let R1=await X.block({finality:"final"}),l=G.serialize.base_decode(R1.header.hash),Y1=k.createTransaction(N,F,q,_,S,l),f1=G.serialize.serialize(C.Transaction,Y1);return{serialized:Buffer.from(f1).toString("base64"),publicKey:F.toString(),details:{signerId:await w(),nonce:_,blockHash:G.serialize.base_encode(l)}}}async function W1(x){let{accountId:q}=x,J=await h(X,q),z=(await X.query({request_type:"view_access_key",finality:"final",account_id:q,public_key:J.toString()})).nonce+1,{SCHEMA:U}=await import("near-api-js/lib/transaction"),{transactions:H,utils:N}=await import("near-api-js"),F=await X.block({finality:"final"}),O=N.serialize.base_decode(F.header.hash),_=[H.functionCall(x.methodName,Buffer.from(JSON.stringify(x.args)),BigInt(x.gas),BigInt(x.attachedDeposit))],v=H.createTransaction(q,J,x.contractId,z,_,O),C=N.serialize.serialize(U.Transaction,v);return{serialized:Buffer.from(C).toString("base64"),publicKey:J.toString(),details:{signerId:q,receiverId:x.contractId,methodName:x.methodName,nonce:z,blockHash:N.serialize.base_encode(O)}}}async function q1(x){if(!Z)throw new D("toolbox_near_no_signer");let[q,J]=await Z.signTransaction(x);return J}async function J1(x){return(await X.sendTransaction(x)).transaction.hash}async function Q1(x){if("assetValue"in x){let z=BigInt("115123062500")+BigInt("108059500000"),U=await Z1(),H=z*BigInt(U.toString());return b.from({chain:B.Near,value:H.toString(),fromBaseDecimal:y[B.Near]})}let q=Z?await j():void 0;return P(x,q)}async function Z1(){try{return await X.query({request_type:"call_function",finality:"final",account_id:"system",method_name:"gas_price",args_base64:""})}catch{return"100000000"}}async function $1(x,q,J){if(!Z)throw new D("toolbox_near_no_signer");let R=await j(),{utils:z}=await import("near-api-js"),U=z.format.parseNearAmount(J)||"0";return(await R.createAccount(x,z.PublicKey.fromString(q),BigInt(U))).transaction.hash}async function A(x){try{if(!Z)throw new D("toolbox_near_no_signer");let{transactions:q}=await import("near-api-js"),{contractId:J,methodName:R,args:z,deposit:U}=x,H=await j(),N=await P({methodName:R,args:z||{},contractId:J}),F=q.functionCall(R,z||{},N.getBaseValue("bigint"),BigInt(U||"0"));return(await H.signAndSendTransaction({receiverId:J,actions:[F]})).transaction.hash}catch(q){throw new D("toolbox_near_transfer_failed",{error:q})}}async function X1(x){let{createNearContract:q}=await import("../../chunk-kbnwrc5b.js"),J=await j();return q({account:J,contractId:x.contractId,viewMethods:x.viewMethods,changeMethods:x.changeMethods})}async function z1(x){if(!Z)throw new D("toolbox_near_no_signer");if(x.actions.length===0)throw new D("toolbox_near_empty_batch");return(await(await j()).signAndSendTransaction({receiverId:x.receiverId,actions:x.actions})).transaction.hash}async function L1(x){let q=await j();return T({contractId:x,account:q})}async function M1(x){try{let q=await j(x),J;try{let R=await q.getBalance();J=b.from({chain:B.Near,value:R,fromBaseDecimal:y[B.Near]})}catch{J=b.from({chain:B.Near,value:"0",fromBaseDecimal:y[B.Near]})}return[J]}catch(q){throw new D("toolbox_near_balance_failed",{error:q})}}async function P(x,q){let J=await L(x).when(d,()=>V.SIMPLE_TRANSFER).when(o,(H)=>e(H.methodName)).when(i,(H)=>t(H.actions)).when(n,()=>V.ACCOUNT_CREATION).when(c,()=>V.CONTRACT_DEPLOYMENT).when(s,(H)=>{if(!q)throw new D("toolbox_near_no_account");return H.customEstimator(q)}).otherwise(()=>{throw new D("toolbox_near_invalid_gas_params")}),R=await g(),U=BigInt(J)*BigInt(1000000000000)*BigInt(R);return b.from({chain:B.Near,value:U,fromBaseDecimal:y[B.Near]})}async function g(){try{return(await X.gasPrice(null)).gas_price||"100000000"}catch(x){return"100000000"}}return{getAddress:w,getPublicKey:async()=>Z?(await Z.getPublicKey()).toString():"",provider:X,transfer:a,createTransaction:x1,createContractFunctionCall:W1,estimateTransactionFee:Q1,broadcastTransaction:J1,signTransaction:q1,getBalance:M1,validateAddress:K,getSignerFromPhrase:(x)=>I(x),getSignerFromPrivateKey:u,callFunction:A,createSubAccount:$1,createContract:X1,executeBatchTransaction:z1,nep141:L1,getGasPrice:g,estimateGas:P}}export{K as validateNearAddress,D1 as tgasToGas,d as isSimpleTransfer,s as isCustomEstimator,c as isContractDeployment,o as isContractCall,i as isBatchTransaction,n as isAccountCreation,h1 as getNearToolbox,u as getNearSignerFromPrivateKey,I as getNearSignerFromPhrase,h as getFullAccessPublicKey,e as getContractMethodGas,j1 as gasToTGas,t as estimateBatchGas,E as createNearContract,T as createNEP141Token,V as GAS_COSTS};
1
+ import{a as E}from"../../chunk-kbnwrc5b.js";import{d as f,e as U}from"../../chunk-s47y8512.js";import{AssetValue as y,BaseDecimal as P,Chain as w,SKConfig as B1,SwapKitError as D}from"@swapkit/helpers";import{SwapKitError as R1,derivationPathToString as H1}from"@swapkit/helpers";import{KeyPairSigner as V1}from"near-api-js";async function K(W){try{let{validateAccountId:Q}=await import("near-sdk-js");return Q(W)}catch{let Q=/^(([a-z\d]+[-_])*[a-z\d]+\.)*([a-z\d]+[-_])*[a-z\d]+$/;return W.length>=2&&W.length<=64&&Q.test(W)}}async function I(W){let{parseSeedPhrase:Q}=await import("near-seed-phrase"),{KeyPair:L}=await import("near-api-js"),M=W.index||0,Z=W.derivationPath?H1(W.derivationPath.slice(0,3)):`m/44'/397'/${M}'`,{secretKey:$}=Q(W.phrase,Z),X=L.fromString($);return p(X)}async function u(W){let{KeyPair:Q}=await import("near-api-js/lib/utils"),L=Q.fromString(W);return p(L)}class m extends V1{#x;constructor(W){super(W);this.#x=W}getAddress(){let W=this.#x.getPublicKey(),Q=Buffer.from(W.data).toString("hex");return Promise.resolve(Q)}}function p(W){return new m(W)}async function h(W,Q){let M=(await W.query({request_type:"view_access_key_list",finality:"final",account_id:Q})).keys.find(($)=>$.access_key.permission==="FullAccess");if(!M)throw new R1("toolbox_near_invalid_address");let{utils:Z}=await import("near-api-js");return Z.PublicKey.fromString(M.public_key)}var V={SIMPLE_TRANSFER:"1",TOKEN_TRANSFER:"100",CONTRACT_CALL:"100",ACCOUNT_CREATION:"30",CONTRACT_DEPLOYMENT:"200",ACCESS_KEY_ADDITION:"5",ACCESS_KEY_DELETION:"5",STAKE:"10",STORAGE_DEPOSIT:"100"};function d(W){return"recipient"in W&&"amount"in W&&!("contractId"in W)}function o(W){return"contractId"in W&&"methodName"in W}function i(W){return"actions"in W}function n(W){return"newAccountId"in W}function c(W){return"contractCode"in W}function s(W){return"customEstimator"in W}function t(W){let Q=0;for(let L of W)switch(L.enum){case"transfer":Q+=Number(V.SIMPLE_TRANSFER);break;case"functionCall":Q+=Number(V.CONTRACT_CALL);break;case"createAccount":Q+=Number(V.ACCOUNT_CREATION);break;case"deployContract":Q+=Number(V.CONTRACT_DEPLOYMENT);break;case"addKey":Q+=Number(V.ACCESS_KEY_ADDITION);break;case"deleteKey":Q+=Number(V.ACCESS_KEY_DELETION);break;case"stake":Q+=Number(V.STAKE);break;default:Q+=Number(V.CONTRACT_CALL)}return Q.toString()}function e(W){if(W==="ft_transfer"||W==="ft_transfer_call")return V.TOKEN_TRANSFER;if(W==="storage_deposit")return V.STORAGE_DEPOSIT;return V.CONTRACT_CALL}function D1(W){return(BigInt(W)*BigInt(1000000000000)).toString()}function j1(W){return(BigInt(W)/BigInt(1000000000000)).toString()}var r="1250000000000000000000";async function T({contractId:W,account:Q}){let L=(await import("bn.js")).default,M=await E({account:Q,contractId:W,viewMethods:["ft_balance_of","ft_total_supply","ft_metadata","storage_balance_of","storage_balance_bounds"],changeMethods:["ft_transfer","ft_transfer_call","storage_deposit","storage_withdraw","storage_unregister"]}),Z=async($)=>{if(!await M.storage_balance_of({account_id:$})){let F=(await M.storage_balance_bounds())?.min||r;await M.storage_deposit({account_id:$},new L("100000000000000"),new L(F))}};return{transfer:async($,X,j)=>{return await Z($),M.ft_transfer({receiver_id:$,amount:X,memo:j},new L("100000000000000"),new L("1"))},transferCall:async($,X,j,F)=>{return await Z($),M.ft_transfer_call({receiver_id:$,amount:X,memo:F,msg:j},new L("100000000000000"),new L("1"))},balanceOf:($)=>M.ft_balance_of({account_id:$}),totalSupply:()=>M.ft_total_supply(),metadata:()=>M.ft_metadata(),storageBalanceOf:($)=>M.storage_balance_of({account_id:$}),storageDeposit:($,X)=>M.storage_deposit({account_id:$},new L("100000000000000"),new L(X||r)),ensureStorage:Z,contract:M}}async function h1(W){let{P:Q,match:L}=await import("ts-pattern"),{providers:M}=await import("near-api-js"),Z=await L(W).with({phrase:Q.string},async(x)=>{return await I(x)}).with({signer:Q.any},({signer:x})=>x).otherwise(()=>{return}),$=B1.get("rpcUrls")[w.Near],X=new M.JsonRpcProvider({url:$});async function j(x){if(!Z)throw new D("toolbox_near_no_signer");let{Account:q}=await import("near-api-js"),J=x||await F();return new q(J,X,Z)}async function F(){if(!Z)throw new D("toolbox_near_no_signer");return await Z.getAddress()}async function a(x){if(!Z)throw new D("toolbox_near_no_signer");let{recipient:q,assetValue:J}=x;if(!K(q))throw new D("toolbox_near_invalid_address");let Y=await j();if(J.isGasAsset===!1){let z=J.address;if(!z)throw new D("toolbox_near_missing_contract_address");let R=J.getBaseValue("string");return A({contractId:z,methodName:"ft_transfer",args:{receiver_id:q,amount:R,memo:x.memo}})}try{let z=J.getBaseValue("string");return(await Y.transfer({receiverId:q,amount:z})).transaction.hash}catch(z){throw new D("toolbox_near_transfer_failed",{error:z})}}async function x1(x){let{recipient:q,assetValue:J,memo:Y,feeRate:z,attachedDeposit:R,sender:H}=x,B=H||await F(),N=await h(X,B),k=(await X.query({request_type:"view_access_key",finality:"final",account_id:B})).nonce+1,v=J.getBaseValue("bigint"),{SCHEMA:G}=await import("near-api-js/lib/transaction"),{transactions:_,utils:C}=await import("near-api-js"),S=[_.transfer(v)];if(Y&&R)S.push(_.functionCall("memo",{memo:Y},BigInt(z),BigInt(R)));let Y1=await X.block({finality:"final"}),l=C.serialize.base_decode(Y1.header.hash),f1=_.createTransaction(B,N,q,k,S,l),U1=C.serialize.serialize(G.Transaction,f1);return{serialized:Buffer.from(U1).toString("base64"),publicKey:N.toString(),details:{signerId:await F(),nonce:k,blockHash:C.serialize.base_encode(l)}}}async function W1(x){let{accountId:q}=x,J=await h(X,q),z=(await X.query({request_type:"view_access_key",finality:"final",account_id:q,public_key:J.toString()})).nonce+1,{SCHEMA:R}=await import("near-api-js/lib/transaction"),{transactions:H,utils:B}=await import("near-api-js"),N=await X.block({finality:"final"}),O=B.serialize.base_decode(N.header.hash),k=[H.functionCall(x.methodName,Buffer.from(JSON.stringify(x.args)),BigInt(x.gas),BigInt(x.attachedDeposit))],v=H.createTransaction(q,J,x.contractId,z,k,O),G=B.serialize.serialize(R.Transaction,v);return{serialized:Buffer.from(G).toString("base64"),publicKey:J.toString(),details:{signerId:q,receiverId:x.contractId,methodName:x.methodName,nonce:z,blockHash:B.serialize.base_encode(O)}}}async function q1(x){if(!Z)throw new D("toolbox_near_no_signer");let[q,J]=await Z.signTransaction(x);return J}async function J1(x){return(await X.sendTransaction(x)).transaction.hash}async function Q1(x){if("assetValue"in x){let z=BigInt("115123062500")+BigInt("108059500000"),R=await Z1(),H=z*BigInt(R.toString());return y.from({chain:w.Near,value:H.toString(),fromBaseDecimal:P[w.Near]})}let q=Z?await j():void 0;return b(x,q)}async function Z1(){try{return await X.query({request_type:"call_function",finality:"final",account_id:"system",method_name:"gas_price",args_base64:""})}catch{return"100000000"}}async function $1(x,q,J){if(!Z)throw new D("toolbox_near_no_signer");let Y=await j(),{utils:z}=await import("near-api-js"),R=z.format.parseNearAmount(J)||"0";return(await Y.createAccount(x,z.PublicKey.fromString(q),BigInt(R))).transaction.hash}async function A(x){try{if(!Z)throw new D("toolbox_near_no_signer");let{transactions:q}=await import("near-api-js"),{contractId:J,methodName:Y,args:z,deposit:R}=x,H=await j(),B=await b({methodName:Y,args:z||{},contractId:J}),N=q.functionCall(Y,z||{},B.getBaseValue("bigint"),BigInt(R||"0"));return(await H.signAndSendTransaction({receiverId:J,actions:[N]})).transaction.hash}catch(q){throw new D("toolbox_near_transfer_failed",{error:q})}}async function X1(x){let{createNearContract:q}=await import("../../chunk-kbnwrc5b.js"),J=await j();return q({account:J,contractId:x.contractId,viewMethods:x.viewMethods,changeMethods:x.changeMethods})}async function z1(x){if(!Z)throw new D("toolbox_near_no_signer");if(x.actions.length===0)throw new D("toolbox_near_empty_batch");return(await(await j()).signAndSendTransaction({receiverId:x.receiverId,actions:x.actions})).transaction.hash}async function L1(x){let q=await j();return T({contractId:x,account:q})}async function M1(x){try{let q=await j(x),J;try{let Y=await q.getBalance();J=y.from({chain:w.Near,value:Y,fromBaseDecimal:P[w.Near]})}catch{J=y.from({chain:w.Near,value:"0",fromBaseDecimal:P[w.Near]})}return[J]}catch(q){throw new D("toolbox_near_balance_failed",{error:q})}}async function b(x,q){let J=await L(x).when(d,()=>V.SIMPLE_TRANSFER).when(o,(H)=>e(H.methodName)).when(i,(H)=>t(H.actions)).when(n,()=>V.ACCOUNT_CREATION).when(c,()=>V.CONTRACT_DEPLOYMENT).when(s,(H)=>{if(!q)throw new D("toolbox_near_no_account");return H.customEstimator(q)}).otherwise(()=>{throw new D("toolbox_near_invalid_gas_params")}),Y=await g(),R=BigInt(J)*BigInt(1000000000000)*BigInt(Y);return y.from({chain:w.Near,value:R,fromBaseDecimal:P[w.Near]})}async function g(){try{return(await X.gasPrice(null)).gas_price||"100000000"}catch(x){return"100000000"}}return{getAddress:F,getPublicKey:async()=>Z?(await Z.getPublicKey()).toString():"",provider:X,transfer:a,createTransaction:x1,createContractFunctionCall:W1,estimateTransactionFee:Q1,broadcastTransaction:J1,signTransaction:q1,getBalance:M1,validateAddress:K,getSignerFromPhrase:(x)=>I(x),getSignerFromPrivateKey:u,callFunction:A,createSubAccount:$1,createContract:X1,executeBatchTransaction:z1,nep141:L1,getGasPrice:g,estimateGas:b}}export{K as validateNearAddress,D1 as tgasToGas,d as isSimpleTransfer,s as isCustomEstimator,c as isContractDeployment,o as isContractCall,i as isBatchTransaction,n as isAccountCreation,h1 as getNearToolbox,u as getNearSignerFromPrivateKey,I as getNearSignerFromPhrase,h as getFullAccessPublicKey,e as getContractMethodGas,j1 as gasToTGas,t as estimateBatchGas,E as createNearContract,T as createNEP141Token,V as GAS_COSTS};
2
2
 
3
- //# debugId=95CF7FA437DD8E2C64756E2164756E21
3
+ //# debugId=4D0E2F7A8548072664756E2164756E21
@@ -8,6 +8,6 @@
8
8
  "import type { Account, Contract } from \"near-api-js\";\nimport { createNearContract } from \"./contractFactory\";\n\nconst DEFAULT_STORAGE_DEPOSIT = \"1250000000000000000000\"; // 0.00125 NEAR\n\n// Define NEP-141 contract interface\ninterface NEP141Contract extends Contract {\n // View methods\n ft_balance_of(args: { account_id: string }): Promise<string>;\n ft_total_supply(): Promise<string>;\n ft_metadata(): Promise<any>;\n storage_balance_of(args: { account_id: string }): Promise<any>;\n storage_balance_bounds(): Promise<any>;\n\n // Change methods\n ft_transfer(args: any, gas: any, deposit: any): Promise<any>;\n ft_transfer_call(args: any, gas: any, deposit: any): Promise<any>;\n storage_deposit(args: any, gas: any, deposit: any): Promise<any>;\n storage_withdraw(args: any, gas: any, deposit: any): Promise<any>;\n storage_unregister(force?: boolean, gas?: any): Promise<any>;\n}\n\nexport async function createNEP141Token({\n contractId,\n account,\n}: {\n contractId: string;\n account: Account;\n}) {\n const BN = (await import(\"bn.js\")).default;\n\n const contract = await createNearContract<NEP141Contract>({\n account,\n contractId,\n viewMethods: [\n \"ft_balance_of\",\n \"ft_total_supply\",\n \"ft_metadata\",\n \"storage_balance_of\",\n \"storage_balance_bounds\",\n ],\n changeMethods: [\n \"ft_transfer\",\n \"ft_transfer_call\",\n \"storage_deposit\",\n \"storage_withdraw\",\n \"storage_unregister\",\n ],\n });\n\n // Helper to ensure storage before transfers\n const ensureStorageFor = async (accountId: string) => {\n const balance = await contract.storage_balance_of({ account_id: accountId });\n if (!balance) {\n // Get minimum storage requirement\n const bounds = await contract.storage_balance_bounds();\n const deposit = bounds?.min || DEFAULT_STORAGE_DEPOSIT;\n\n await contract.storage_deposit(\n { account_id: accountId },\n new BN(\"100000000000000\"), // 100 TGas\n new BN(deposit),\n );\n }\n };\n\n return {\n transfer: async (receiverId: string, amount: string, memo?: string) => {\n // Ensure recipient has storage before transfer\n await ensureStorageFor(receiverId);\n\n return contract.ft_transfer(\n { receiver_id: receiverId, amount, memo },\n new BN(\"100000000000000\"), // 100 TGas\n new BN(\"1\"), // 1 yoctoNEAR for security\n );\n },\n\n transferCall: async (receiverId: string, amount: string, msg: string, memo?: string) => {\n // Ensure recipient has storage before transfer\n await ensureStorageFor(receiverId);\n\n return contract.ft_transfer_call(\n { receiver_id: receiverId, amount, memo, msg },\n new BN(\"100000000000000\"), // 100 TGas\n new BN(\"1\"), // 1 yoctoNEAR for security\n );\n },\n\n balanceOf: (accountId: string) => contract.ft_balance_of({ account_id: accountId }),\n\n totalSupply: () => contract.ft_total_supply(),\n\n metadata: () => contract.ft_metadata(),\n\n storageBalanceOf: (accountId: string) => contract.storage_balance_of({ account_id: accountId }),\n\n storageDeposit: (accountId?: string, amount?: string) =>\n contract.storage_deposit(\n { account_id: accountId },\n new BN(\"100000000000000\"),\n new BN(amount || DEFAULT_STORAGE_DEPOSIT),\n ),\n\n ensureStorage: ensureStorageFor,\n\n // Raw contract access for advanced use cases\n contract,\n };\n}\n"
9
9
  ],
10
10
  "mappings": "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",
11
- "debugId": "95CF7FA437DD8E2C64756E2164756E21",
11
+ "debugId": "4D0E2F7A8548072664756E2164756E21",
12
12
  "names": []
13
13
  }
@@ -1,3 +1,3 @@
1
- var K={};g(K,{trc20ABI:()=>B,getTronPrivateKeyFromMnemonic:()=>m,getTronAddressValidator:()=>x,createTronToolbox:()=>A});module.exports=b(K);var y=require("@swapkit/helpers"),u=require("tronweb"),$=require("ts-pattern");var B=[{constant:!0,inputs:[{name:"_owner",type:"address"}],name:"balanceOf",outputs:[{name:"balance",type:"uint256"}],type:"function"},{constant:!1,inputs:[{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transfer",outputs:[{name:"success",type:"bool"}],type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],type:"function"},{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],type:"function"}];async function x(){let{TronWeb:z}=await import("tronweb");return(Q)=>z.isAddress(Q)}async function m({phrase:z,derivationPath:Q,index:j}){let f=Q||y.derivationPathToString(y.updateDerivationPath(y.NetworkDerivationPath[y.Chain.Tron],{index:j||0})),{HDKey:Y}=await import("@scure/bip32"),{mnemonicToSeedSync:I}=await import("@scure/bip39"),_=I(z),R=Y.fromMasterSeed(_).derive(f);if(!R.privateKey)throw new y.SwapKitError("toolbox_tron_no_signer");return Buffer.from(R.privateKey).toString("hex")}async function p({phrase:z,derivationPath:Q}){let{HDKey:j}=await import("@scure/bip32"),{mnemonicToSeedSync:f}=await import("@scure/bip39"),Y=f(z),_=j.fromMasterSeed(Y).derive(Q);if(!_.privateKey)throw new y.SwapKitError("toolbox_tron_no_signer");let O=Buffer.from(_.privateKey).toString("hex"),R=new u.TronWeb({fullHost:y.SKConfig.get("rpcUrls")[y.Chain.Tron],privateKey:O}),Z=R.address.fromPrivateKey(O);return{getAddress:()=>Promise.resolve(typeof Z==="string"?Z:""),signTransaction:async(H)=>{return await R.trx.sign(H,O)}}}var A=async(z={})=>{let Q=y.SKConfig.get("rpcUrls")[y.Chain.Tron],j=void 0,f=new u.TronWeb({fullHost:Q,headers:void 0}),Y="index"in z?z.index||0:0,I=y.derivationPathToString("derivationPath"in z&&z.derivationPath?z.derivationPath:y.updateDerivationPath(y.NetworkDerivationPath[y.Chain.Tron],{index:Y})),_=await $.match(z).with({phrase:$.P.string},async({phrase:T})=>p({phrase:T,derivationPath:I})).with({signer:$.P.any},({signer:T})=>Promise.resolve(T)).otherwise(()=>Promise.resolve(void 0)),O=async()=>{if(!_)throw new y.SwapKitError("toolbox_tron_no_signer");return await _.getAddress()},R=(T)=>{return f.isAddress(T)},Z=(T)=>{return T.address},H=()=>{return 1e8};return{tronWeb:f,getAddress:O,validateAddress:R,getBalance:async(T,q=!0)=>{let{getBalance:M}=await import("../../chunk-5yxc1e69.js");try{let G=await M(y.Chain.Tron)(T,q);if(G.length>0)return G;let J=await f.trx.getBalance(T);return[y.AssetValue.from({chain:y.Chain.Tron,value:J,fromBaseDecimal:6})]}catch(G){y.warnOnce(!0,`Failed to get Tron balance for ${T}: ${G instanceof Error?G.message:G}`);try{let J=await f.trx.getBalance(T);return[y.AssetValue.from({chain:y.Chain.Tron,value:J,fromBaseDecimal:6})]}catch(J){return y.warnOnce(!0,`Failed to get native TRX balance for ${T}: ${J instanceof Error?J.message:J}`),[]}}},transfer:async({recipient:T,assetValue:q,memo:M})=>{if(!_)throw new y.SwapKitError("toolbox_tron_no_signer");let G=await O();if(q.isGasAsset){let D=await f.transactionBuilder.sendTrx(T,q.getBaseValue("number"),G);if(M){let P=await f.transactionBuilder.addUpdateData(D,M,"utf8"),w=await _.signTransaction(P),{txid:v}=await f.trx.sendRawTransaction(w);return v}let F=await _.signTransaction(D),{txid:E}=await f.trx.sendRawTransaction(F);return E}let k=Z(q);if(!k)throw new y.SwapKitError("toolbox_tron_invalid_token_identifier",{identifier:q.toString()});let L=H(),N=await f.contract(B,k);if(!N.methods?.transfer)throw new y.SwapKitError("toolbox_tron_token_transfer_failed");let U=await N.methods.transfer(T,q.getBaseValue("string")).send({from:G,feeLimit:L,callValue:0});if(!U)throw new y.SwapKitError("toolbox_tron_token_transfer_failed");return U},estimateTransactionFee:({assetValue:T})=>{if(T.isGasAsset)return y.AssetValue.from({chain:y.Chain.Tron,value:1});return y.AssetValue.from({chain:y.Chain.Tron,value:10})},createTransaction:async(T)=>{if(!_)throw new y.SwapKitError("toolbox_tron_no_signer");let{recipient:q,assetValue:M,memo:G}=T,J=await O();if(M.isGasAsset){let F=await f.transactionBuilder.sendTrx(q,M.getBaseValue("number"),J);if(G)return f.transactionBuilder.addUpdateData(F,G,"utf8");return F}let L=Z(M);if(!L)throw new y.SwapKitError("toolbox_tron_invalid_token_identifier",{identifier:M.toString()});let N="transfer(address,uint256)",U=[{type:"address",value:q},{type:"uint256",value:M.getBaseValue("string")}];return(await f.transactionBuilder.triggerSmartContract(L,N,{},U,J)).transaction},signTransaction:async(T)=>{if(!_)throw new y.SwapKitError("toolbox_tron_no_signer");return await _.signTransaction(T)},broadcastTransaction:async(T)=>{let{txid:q}=await f.trx.sendRawTransaction(T);return q}}};
1
+ var b={};K(b,{trc20ABI:()=>u,getTronPrivateKeyFromMnemonic:()=>m,getTronAddressValidator:()=>x,createTronToolbox:()=>A});module.exports=p(b);var y=require("@swapkit/helpers"),k=require("tronweb"),Z=require("ts-pattern");var u=[{constant:!0,inputs:[{name:"_owner",type:"address"}],name:"balanceOf",outputs:[{name:"balance",type:"uint256"}],type:"function"},{constant:!1,inputs:[{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transfer",outputs:[{name:"success",type:"bool"}],type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],type:"function"},{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],type:"function"}];async function x(){let{TronWeb:q}=await import("tronweb");return(Q)=>q.isAddress(Q)}async function m({phrase:q,derivationPath:Q,index:$}){let f=Q||y.derivationPathToString(y.updateDerivationPath(y.NetworkDerivationPath[y.Chain.Tron],{index:$||0})),{HDKey:Y}=await import("@scure/bip32"),{mnemonicToSeedSync:j}=await import("@scure/bip39"),z=j(q),R=Y.fromMasterSeed(z).derive(f);if(!R.privateKey)throw new y.SwapKitError("toolbox_tron_no_signer");return Buffer.from(R.privateKey).toString("hex")}async function v({phrase:q,derivationPath:Q}){let{HDKey:$}=await import("@scure/bip32"),{mnemonicToSeedSync:f}=await import("@scure/bip39"),Y=f(q),z=$.fromMasterSeed(Y).derive(Q);if(!z.privateKey)throw new y.SwapKitError("toolbox_tron_no_signer");let O=Buffer.from(z.privateKey).toString("hex"),R=new k.TronWeb({fullHost:y.SKConfig.get("rpcUrls")[y.Chain.Tron],privateKey:O}),I=R.address.fromPrivateKey(O);return{getAddress:()=>Promise.resolve(typeof I==="string"?I:""),signTransaction:async(D)=>{return await R.trx.sign(D,O)}}}var A=async(q={})=>{let Q=y.SKConfig.get("rpcUrls")[y.Chain.Tron],$=void 0,f=new k.TronWeb({fullHost:Q,headers:void 0}),Y="index"in q?q.index||0:0,j=y.derivationPathToString("derivationPath"in q&&q.derivationPath?q.derivationPath:y.updateDerivationPath(y.NetworkDerivationPath[y.Chain.Tron],{index:Y})),z=await Z.match(q).with({phrase:Z.P.string},async({phrase:T})=>v({phrase:T,derivationPath:j})).with({signer:Z.P.any},({signer:T})=>Promise.resolve(T)).otherwise(()=>Promise.resolve(void 0)),O=async()=>{if(!z)throw new y.SwapKitError("toolbox_tron_no_signer");return await z.getAddress()},R=(T)=>{return f.isAddress(T)},I=()=>{return 1e8};return{tronWeb:f,getAddress:O,validateAddress:R,getBalance:async(T,_=!0)=>{let{getBalance:M}=await import("../../chunk-5yxc1e69.js");try{let G=await M(y.Chain.Tron)(T,_);if(G.length>0)return G;let J=await f.trx.getBalance(T);return[y.AssetValue.from({chain:y.Chain.Tron,value:J,fromBaseDecimal:6})]}catch(G){y.warnOnce(!0,`Failed to get Tron balance for ${T}: ${G instanceof Error?G.message:G}`);try{let J=await f.trx.getBalance(T);return[y.AssetValue.from({chain:y.Chain.Tron,value:J,fromBaseDecimal:6})]}catch(J){return y.warnOnce(!0,`Failed to get native TRX balance for ${T}: ${J instanceof Error?J.message:J}`),[]}}},transfer:async({recipient:T,assetValue:_,memo:M})=>{if(!z)throw new y.SwapKitError("toolbox_tron_no_signer");let G=await O();if(_.isGasAsset){let H=await f.transactionBuilder.sendTrx(T,_.getBaseValue("number"),G);if(M){let P=await f.transactionBuilder.addUpdateData(H,M,"utf8"),w=await z.signTransaction(P),{txid:g}=await f.trx.sendRawTransaction(w);return g}let F=await z.signTransaction(H),{txid:E}=await f.trx.sendRawTransaction(F);return E}let B=_.address;if(!B)throw new y.SwapKitError("toolbox_tron_invalid_token_identifier",{identifier:_.toString()});let L=I(),N=await f.contract(u,B);if(!N.methods?.transfer)throw new y.SwapKitError("toolbox_tron_token_transfer_failed");let U=await N.methods.transfer(T,_.getBaseValue("string")).send({from:G,feeLimit:L,callValue:0});if(!U)throw new y.SwapKitError("toolbox_tron_token_transfer_failed");return U},estimateTransactionFee:({assetValue:T})=>{if(T.isGasAsset)return y.AssetValue.from({chain:y.Chain.Tron,value:1});return y.AssetValue.from({chain:y.Chain.Tron,value:10})},createTransaction:async(T)=>{let{recipient:_,assetValue:M,memo:G}=T,J=await O();if(M.isGasAsset){let F=await f.transactionBuilder.sendTrx(_,M.getBaseValue("number"),J);if(G)return f.transactionBuilder.addUpdateData(F,G,"utf8");return F.raw_data_hex}let L=M.address;if(!L)throw new y.SwapKitError("toolbox_tron_invalid_token_identifier",{identifier:M.toString()});let N="transfer(address,uint256)",U=[{type:"address",value:_},{type:"uint256",value:M.getBaseValue("string")}];return(await f.transactionBuilder.triggerSmartContract(L,N,{},U,J)).transaction.raw_data_hex},signTransaction:async(T)=>{if(!z)throw new y.SwapKitError("toolbox_tron_no_signer");return await z.signTransaction(T)},broadcastTransaction:async(T)=>{let{txid:_}=await f.trx.sendRawTransaction(T);return _}}};
2
2
 
3
- //# debugId=DB39FF97B3BDD00964756E2164756E21
3
+ //# debugId=96BD894F89064A1564756E2164756E21
@@ -2,10 +2,10 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/tron/toolbox.ts", "../src/tron/helpers/trc20.abi.ts"],
4
4
  "sourcesContent": [
5
- "import {\n AssetValue,\n Chain,\n NetworkDerivationPath,\n SKConfig,\n SwapKitError,\n derivationPathToString,\n updateDerivationPath,\n warnOnce,\n} from \"@swapkit/helpers\";\nimport { TronWeb } from \"tronweb\";\nimport { P, match } from \"ts-pattern\";\n\nimport { trc20ABI } from \"./helpers/trc20.abi.js\";\nimport type {\n TronSignedTransaction,\n TronSigner,\n TronToolboxOptions,\n TronTransaction,\n TronTransferParams,\n} from \"./types.js\";\n\nexport async function getTronAddressValidator() {\n const { TronWeb } = await import(\"tronweb\");\n return (address: string) => TronWeb.isAddress(address);\n}\n\nexport async function getTronPrivateKeyFromMnemonic({\n phrase,\n derivationPath: customPath,\n index,\n}: {\n phrase: string;\n derivationPath?: string;\n index?: number;\n}) {\n const derivationPathToUse =\n customPath ||\n derivationPathToString(\n updateDerivationPath(NetworkDerivationPath[Chain.Tron], { index: index || 0 }),\n );\n\n const { HDKey } = await import(\"@scure/bip32\");\n const { mnemonicToSeedSync } = await import(\"@scure/bip39\");\n\n const seed = mnemonicToSeedSync(phrase);\n const hdKey = HDKey.fromMasterSeed(seed);\n const derived = hdKey.derive(derivationPathToUse);\n\n if (!derived.privateKey) {\n throw new SwapKitError(\"toolbox_tron_no_signer\");\n }\n\n return Buffer.from(derived.privateKey).toString(\"hex\");\n}\n\nasync function createKeysForPath({\n phrase,\n derivationPath,\n}: {\n phrase: string;\n derivationPath: string;\n}): Promise<TronSigner> {\n const { HDKey } = await import(\"@scure/bip32\");\n const { mnemonicToSeedSync } = await import(\"@scure/bip39\");\n\n const seed = mnemonicToSeedSync(phrase);\n const hdKey = HDKey.fromMasterSeed(seed);\n const derived = hdKey.derive(derivationPath);\n\n if (!derived.privateKey) {\n throw new SwapKitError(\"toolbox_tron_no_signer\");\n }\n\n // Convert private key to hex string for TronWeb\n const privateKeyHex = Buffer.from(derived.privateKey).toString(\"hex\");\n\n // Create TronWeb instance with the derived private key\n const tronWebWithKey = new TronWeb({\n fullHost: SKConfig.get(\"rpcUrls\")[Chain.Tron],\n privateKey: privateKeyHex,\n });\n\n const address = tronWebWithKey.address.fromPrivateKey(privateKeyHex);\n\n return {\n getAddress: () => Promise.resolve(typeof address === \"string\" ? address : \"\"),\n signTransaction: async (transaction: TronTransaction) => {\n const signedTx = await tronWebWithKey.trx.sign(transaction, privateKeyHex);\n return signedTx;\n },\n };\n}\n\nexport const createTronToolbox = async (options: TronToolboxOptions = {}) => {\n // Always get configuration from SKConfig\n const rpcUrl = SKConfig.get(\"rpcUrls\")[Chain.Tron];\n // Note: TRON API key support can be added to SKConfig apiKeys when needed\n const headers = undefined; // No API key needed for basic TronGrid access\n\n const tronWeb = new TronWeb({\n fullHost: rpcUrl,\n headers,\n });\n\n // Handle derivation path and index\n const index = \"index\" in options ? options.index || 0 : 0;\n const derivationPath = derivationPathToString(\n \"derivationPath\" in options && options.derivationPath\n ? options.derivationPath\n : updateDerivationPath(NetworkDerivationPath[Chain.Tron], { index }),\n );\n\n // Create signer based on options using pattern matching\n const signer: TronSigner | undefined = await match(options)\n .with({ phrase: P.string }, async ({ phrase }) => createKeysForPath({ phrase, derivationPath }))\n .with({ signer: P.any }, ({ signer }) => Promise.resolve(signer as TronSigner))\n .otherwise(() => Promise.resolve(undefined));\n\n const getAddress = async () => {\n if (!signer) throw new SwapKitError(\"toolbox_tron_no_signer\");\n return await signer.getAddress();\n };\n\n const validateAddress = (address: string) => {\n return tronWeb.isAddress(address);\n };\n\n const getContractAddress = (assetValue: AssetValue) => {\n // Use asset.address for TRC20 contracts instead of parsing string\n return assetValue.address;\n };\n\n const calculateFeeLimit = () => {\n return 100_000_000; // 100 TRX in SUN\n };\n\n const getBalance = async (address: string, scamFilter = true) => {\n const { getBalance: getBalanceFromApi } = await import(\"../utils.js\");\n\n try {\n // Use SwapKit API for comprehensive balance fetching (includes TRX + TRC20 tokens)\n const apiBalances = await getBalanceFromApi(Chain.Tron)(address, scamFilter);\n\n // If API returns balances, use those\n if (apiBalances.length > 0) {\n return apiBalances;\n }\n\n // Fallback to on-chain TRX balance if API fails or returns empty\n const trxBalanceInSun = await tronWeb.trx.getBalance(address);\n return [\n AssetValue.from({\n chain: Chain.Tron,\n value: trxBalanceInSun,\n fromBaseDecimal: 6, // TRX has 6 decimals\n }),\n ];\n } catch (error) {\n warnOnce(\n true,\n `Failed to get Tron balance for ${address}: ${error instanceof Error ? error.message : error}`,\n );\n\n // Final fallback: try to get just the native TRX balance\n try {\n const trxBalanceInSun = await tronWeb.trx.getBalance(address);\n return [\n AssetValue.from({\n chain: Chain.Tron,\n value: trxBalanceInSun,\n fromBaseDecimal: 6,\n }),\n ];\n } catch (fallbackError) {\n warnOnce(\n true,\n `Failed to get native TRX balance for ${address}: ${fallbackError instanceof Error ? fallbackError.message : fallbackError}`,\n );\n return [];\n }\n }\n };\n\n const transfer = async ({ recipient, assetValue, memo }: TronTransferParams) => {\n if (!signer) throw new SwapKitError(\"toolbox_tron_no_signer\");\n\n const from = await getAddress();\n const isNative = assetValue.isGasAsset;\n\n if (isNative) {\n // Native TRX Transfer (amount in SUN - base units)\n const transaction = await tronWeb.transactionBuilder.sendTrx(\n recipient,\n assetValue.getBaseValue(\"number\"),\n from,\n );\n\n // Add memo if provided\n if (memo) {\n const transactionWithMemo = await tronWeb.transactionBuilder.addUpdateData(\n transaction,\n memo,\n \"utf8\",\n );\n const signedTx = await signer.signTransaction(transactionWithMemo);\n const { txid } = await tronWeb.trx.sendRawTransaction(signedTx);\n return txid;\n }\n\n const signedTx = await signer.signTransaction(transaction);\n const { txid } = await tronWeb.trx.sendRawTransaction(signedTx);\n return txid;\n }\n\n // TRC20 Token Transfer\n const contractAddress = getContractAddress(assetValue);\n if (!contractAddress) {\n throw new SwapKitError(\"toolbox_tron_invalid_token_identifier\", {\n identifier: assetValue.toString(),\n });\n }\n\n const feeLimit = calculateFeeLimit();\n const contract = await tronWeb.contract(trc20ABI, contractAddress);\n\n if (!contract.methods?.transfer) {\n throw new SwapKitError(\"toolbox_tron_token_transfer_failed\");\n }\n\n const txid = await contract.methods\n .transfer(recipient, assetValue.getBaseValue(\"string\"))\n .send({\n from,\n feeLimit,\n callValue: 0,\n });\n\n if (!txid) {\n throw new SwapKitError(\"toolbox_tron_token_transfer_failed\");\n }\n\n return txid;\n };\n\n const estimateTransactionFee = ({ assetValue }: TronTransferParams) => {\n const isNative = assetValue.isGasAsset;\n\n if (isNative) {\n // Native TRX transfers typically consume bandwidth, which is free up to daily limit\n // Return a minimal fee estimation for bandwidth cost\n return AssetValue.from({ chain: Chain.Tron, value: 1 }); // 1 TRX\n }\n\n // TRC20 transfers consume energy, estimate higher fee\n return AssetValue.from({ chain: Chain.Tron, value: 10 }); // 10 TRX\n };\n\n const createTransaction = async (params: TronTransferParams) => {\n if (!signer) throw new SwapKitError(\"toolbox_tron_no_signer\");\n\n const { recipient, assetValue, memo } = params;\n const from = await getAddress();\n const isNative = assetValue.isGasAsset;\n\n if (isNative) {\n const transaction = await tronWeb.transactionBuilder.sendTrx(\n recipient,\n assetValue.getBaseValue(\"number\"),\n from,\n );\n\n if (memo) {\n return tronWeb.transactionBuilder.addUpdateData(transaction, memo, \"utf8\");\n }\n\n return transaction;\n }\n\n // For TRC20, we would need to build the transaction manually\n // This is a simplified version - in practice, you'd build the contract call transaction\n const contractAddress = getContractAddress(assetValue);\n if (!contractAddress) {\n throw new SwapKitError(\"toolbox_tron_invalid_token_identifier\", {\n identifier: assetValue.toString(),\n });\n }\n\n // Build TRC20 transfer transaction\n const functionSelector = \"transfer(address,uint256)\";\n const parameter = [\n { type: \"address\", value: recipient },\n { type: \"uint256\", value: assetValue.getBaseValue(\"string\") },\n ];\n\n const result = await tronWeb.transactionBuilder.triggerSmartContract(\n contractAddress,\n functionSelector,\n {},\n parameter,\n from,\n );\n\n return result.transaction;\n };\n\n const signTransaction = async (transaction: TronTransaction) => {\n if (!signer) throw new SwapKitError(\"toolbox_tron_no_signer\");\n return await signer.signTransaction(transaction);\n };\n\n const broadcastTransaction = async (signedTx: TronSignedTransaction) => {\n const { txid } = await tronWeb.trx.sendRawTransaction(signedTx);\n return txid;\n };\n\n return {\n tronWeb,\n getAddress,\n validateAddress,\n getBalance,\n transfer,\n estimateTransactionFee,\n createTransaction,\n signTransaction,\n broadcastTransaction,\n };\n};\n",
5
+ "import {\n AssetValue,\n Chain,\n NetworkDerivationPath,\n SKConfig,\n SwapKitError,\n derivationPathToString,\n updateDerivationPath,\n warnOnce,\n} from \"@swapkit/helpers\";\nimport { TronWeb } from \"tronweb\";\nimport { P, match } from \"ts-pattern\";\n\nimport { trc20ABI } from \"./helpers/trc20.abi.js\";\nimport type {\n TronSignedTransaction,\n TronSigner,\n TronToolboxOptions,\n TronTransaction,\n TronTransferParams,\n} from \"./types.js\";\n\nexport async function getTronAddressValidator() {\n const { TronWeb } = await import(\"tronweb\");\n return (address: string) => TronWeb.isAddress(address);\n}\n\nexport async function getTronPrivateKeyFromMnemonic({\n phrase,\n derivationPath: customPath,\n index,\n}: {\n phrase: string;\n derivationPath?: string;\n index?: number;\n}) {\n const derivationPathToUse =\n customPath ||\n derivationPathToString(\n updateDerivationPath(NetworkDerivationPath[Chain.Tron], { index: index || 0 }),\n );\n\n const { HDKey } = await import(\"@scure/bip32\");\n const { mnemonicToSeedSync } = await import(\"@scure/bip39\");\n\n const seed = mnemonicToSeedSync(phrase);\n const hdKey = HDKey.fromMasterSeed(seed);\n const derived = hdKey.derive(derivationPathToUse);\n\n if (!derived.privateKey) {\n throw new SwapKitError(\"toolbox_tron_no_signer\");\n }\n\n return Buffer.from(derived.privateKey).toString(\"hex\");\n}\n\nasync function createKeysForPath({\n phrase,\n derivationPath,\n}: {\n phrase: string;\n derivationPath: string;\n}) {\n const { HDKey } = await import(\"@scure/bip32\");\n const { mnemonicToSeedSync } = await import(\"@scure/bip39\");\n\n const seed = mnemonicToSeedSync(phrase);\n const hdKey = HDKey.fromMasterSeed(seed);\n const derived = hdKey.derive(derivationPath);\n\n if (!derived.privateKey) {\n throw new SwapKitError(\"toolbox_tron_no_signer\");\n }\n\n // Convert private key to hex string for TronWeb\n const privateKeyHex = Buffer.from(derived.privateKey).toString(\"hex\");\n\n // Create TronWeb instance with the derived private key\n const tronWebWithKey = new TronWeb({\n fullHost: SKConfig.get(\"rpcUrls\")[Chain.Tron],\n privateKey: privateKeyHex,\n });\n\n const address = tronWebWithKey.address.fromPrivateKey(privateKeyHex);\n\n return {\n getAddress: () => Promise.resolve(typeof address === \"string\" ? address : \"\"),\n signTransaction: async (transaction: TronTransaction) => {\n const signedTx = await tronWebWithKey.trx.sign(transaction, privateKeyHex);\n return signedTx;\n },\n };\n}\n\nexport const createTronToolbox = async (options: TronToolboxOptions = {}) => {\n // Always get configuration from SKConfig\n const rpcUrl = SKConfig.get(\"rpcUrls\")[Chain.Tron];\n // Note: TRON API key support can be added to SKConfig apiKeys when needed\n const headers = undefined; // No API key needed for basic TronGrid access\n\n const tronWeb = new TronWeb({\n fullHost: rpcUrl,\n headers,\n });\n\n // Handle derivation path and index\n const index = \"index\" in options ? options.index || 0 : 0;\n const derivationPath = derivationPathToString(\n \"derivationPath\" in options && options.derivationPath\n ? options.derivationPath\n : updateDerivationPath(NetworkDerivationPath[Chain.Tron], { index }),\n );\n\n // Create signer based on options using pattern matching\n const signer: TronSigner | undefined = await match(options)\n .with({ phrase: P.string }, async ({ phrase }) => createKeysForPath({ phrase, derivationPath }))\n .with({ signer: P.any }, ({ signer }) => Promise.resolve(signer as TronSigner))\n .otherwise(() => Promise.resolve(undefined));\n\n const getAddress = async () => {\n if (!signer) throw new SwapKitError(\"toolbox_tron_no_signer\");\n return await signer.getAddress();\n };\n\n const validateAddress = (address: string) => {\n return tronWeb.isAddress(address);\n };\n\n const calculateFeeLimit = () => {\n return 100_000_000; // 100 TRX in SUN\n };\n\n const getBalance = async (address: string, scamFilter = true) => {\n const { getBalance: getBalanceFromApi } = await import(\"../utils.js\");\n\n try {\n // Use SwapKit API for comprehensive balance fetching (includes TRX + TRC20 tokens)\n const apiBalances = await getBalanceFromApi(Chain.Tron)(address, scamFilter);\n\n // If API returns balances, use those\n if (apiBalances.length > 0) {\n return apiBalances;\n }\n\n // Fallback to on-chain TRX balance if API fails or returns empty\n const trxBalanceInSun = await tronWeb.trx.getBalance(address);\n return [\n AssetValue.from({\n chain: Chain.Tron,\n value: trxBalanceInSun,\n fromBaseDecimal: 6, // TRX has 6 decimals\n }),\n ];\n } catch (error) {\n warnOnce(\n true,\n `Failed to get Tron balance for ${address}: ${error instanceof Error ? error.message : error}`,\n );\n\n // Final fallback: try to get just the native TRX balance\n try {\n const trxBalanceInSun = await tronWeb.trx.getBalance(address);\n return [\n AssetValue.from({\n chain: Chain.Tron,\n value: trxBalanceInSun,\n fromBaseDecimal: 6,\n }),\n ];\n } catch (fallbackError) {\n warnOnce(\n true,\n `Failed to get native TRX balance for ${address}: ${fallbackError instanceof Error ? fallbackError.message : fallbackError}`,\n );\n return [];\n }\n }\n };\n\n const transfer = async ({ recipient, assetValue, memo }: TronTransferParams) => {\n if (!signer) throw new SwapKitError(\"toolbox_tron_no_signer\");\n\n const from = await getAddress();\n const isNative = assetValue.isGasAsset;\n\n if (isNative) {\n // Native TRX Transfer (amount in SUN - base units)\n const transaction = await tronWeb.transactionBuilder.sendTrx(\n recipient,\n assetValue.getBaseValue(\"number\"),\n from,\n );\n\n // Add memo if provided\n if (memo) {\n const transactionWithMemo = await tronWeb.transactionBuilder.addUpdateData(\n transaction,\n memo,\n \"utf8\",\n );\n const signedTx = await signer.signTransaction(transactionWithMemo);\n const { txid } = await tronWeb.trx.sendRawTransaction(signedTx);\n return txid;\n }\n\n const signedTx = await signer.signTransaction(transaction);\n const { txid } = await tronWeb.trx.sendRawTransaction(signedTx);\n return txid;\n }\n\n // TRC20 Token Transfer\n const contractAddress = assetValue.address;\n if (!contractAddress) {\n throw new SwapKitError(\"toolbox_tron_invalid_token_identifier\", {\n identifier: assetValue.toString(),\n });\n }\n\n const feeLimit = calculateFeeLimit();\n const contract = await tronWeb.contract(trc20ABI, contractAddress);\n\n if (!contract.methods?.transfer) {\n throw new SwapKitError(\"toolbox_tron_token_transfer_failed\");\n }\n\n const txid = await contract.methods\n .transfer(recipient, assetValue.getBaseValue(\"string\"))\n .send({\n from,\n feeLimit,\n callValue: 0,\n });\n\n if (!txid) {\n throw new SwapKitError(\"toolbox_tron_token_transfer_failed\");\n }\n\n return txid;\n };\n\n const estimateTransactionFee = ({ assetValue }: TronTransferParams) => {\n const isNative = assetValue.isGasAsset;\n\n if (isNative) {\n // Native TRX transfers typically consume bandwidth, which is free up to daily limit\n // Return a minimal fee estimation for bandwidth cost\n return AssetValue.from({ chain: Chain.Tron, value: 1 }); // 1 TRX\n }\n\n // TRC20 transfers consume energy, estimate higher fee\n return AssetValue.from({ chain: Chain.Tron, value: 10 }); // 10 TRX\n };\n\n const createTransaction = async (params: TronTransferParams) => {\n const { recipient, assetValue, memo } = params;\n const from = await getAddress();\n const isNative = assetValue.isGasAsset;\n\n if (isNative) {\n const transaction = await tronWeb.transactionBuilder.sendTrx(\n recipient,\n assetValue.getBaseValue(\"number\"),\n from,\n );\n\n if (memo) {\n return tronWeb.transactionBuilder.addUpdateData(transaction, memo, \"utf8\");\n }\n\n return transaction.raw_data_hex;\n }\n\n // For TRC20, we would need to build the transaction manually\n // This is a simplified version - in practice, you'd build the contract call transaction\n const contractAddress = assetValue.address;\n if (!contractAddress) {\n throw new SwapKitError(\"toolbox_tron_invalid_token_identifier\", {\n identifier: assetValue.toString(),\n });\n }\n\n // Build TRC20 transfer transaction\n const functionSelector = \"transfer(address,uint256)\";\n const parameter = [\n { type: \"address\", value: recipient },\n { type: \"uint256\", value: assetValue.getBaseValue(\"string\") },\n ];\n\n const result = await tronWeb.transactionBuilder.triggerSmartContract(\n contractAddress,\n functionSelector,\n {},\n parameter,\n from,\n );\n\n return result.transaction.raw_data_hex;\n };\n\n const signTransaction = async (transaction: TronTransaction) => {\n if (!signer) throw new SwapKitError(\"toolbox_tron_no_signer\");\n return await signer.signTransaction(transaction);\n };\n\n const broadcastTransaction = async (signedTx: TronSignedTransaction) => {\n const { txid } = await tronWeb.trx.sendRawTransaction(signedTx);\n return txid;\n };\n\n return {\n tronWeb,\n getAddress,\n validateAddress,\n getBalance,\n transfer,\n estimateTransactionFee,\n createTransaction,\n signTransaction,\n broadcastTransaction,\n };\n};\n",
6
6
  "export const trc20ABI = [\n {\n constant: true,\n inputs: [{ name: \"_owner\", type: \"address\" }],\n name: \"balanceOf\",\n outputs: [{ name: \"balance\", type: \"uint256\" }],\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n { name: \"_to\", type: \"address\" },\n { name: \"_value\", type: \"uint256\" },\n ],\n name: \"transfer\",\n outputs: [{ name: \"success\", type: \"bool\" }],\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"decimals\",\n outputs: [{ name: \"\", type: \"uint8\" }],\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"symbol\",\n outputs: [{ name: \"\", type: \"string\" }],\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"name\",\n outputs: [{ name: \"\", type: \"string\" }],\n type: \"function\",\n },\n] as const;\n"
7
7
  ],
8
- "mappings": "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",
9
- "debugId": "DB39FF97B3BDD00964756E2164756E21",
8
+ "mappings": "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",
9
+ "debugId": "96BD894F89064A1564756E2164756E21",
10
10
  "names": []
11
11
  }
@@ -1,3 +1,3 @@
1
- import{d as Y,e as Z}from"../../chunk-s47y8512.js";import{AssetValue as H,Chain as O,NetworkDerivationPath as C,SKConfig as E,SwapKitError as M,derivationPathToString as P,updateDerivationPath as w,warnOnce as m}from"@swapkit/helpers";import{TronWeb as v}from"tronweb";import{P as A,match as W}from"ts-pattern";var x=[{constant:!0,inputs:[{name:"_owner",type:"address"}],name:"balanceOf",outputs:[{name:"balance",type:"uint256"}],type:"function"},{constant:!1,inputs:[{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transfer",outputs:[{name:"success",type:"bool"}],type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],type:"function"},{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],type:"function"}];async function V(){let{TronWeb:q}=await import("tronweb");return(R)=>q.isAddress(R)}async function l({phrase:q,derivationPath:R,index:I}){let T=R||P(w(C[O.Tron],{index:I||0})),{HDKey:$}=await import("@scure/bip32"),{mnemonicToSeedSync:L}=await import("@scure/bip39"),f=L(q),X=$.fromMasterSeed(f).derive(T);if(!X.privateKey)throw new M("toolbox_tron_no_signer");return Buffer.from(X.privateKey).toString("hex")}async function h({phrase:q,derivationPath:R}){let{HDKey:I}=await import("@scure/bip32"),{mnemonicToSeedSync:T}=await import("@scure/bip39"),$=T(q),f=I.fromMasterSeed($).derive(R);if(!f.privateKey)throw new M("toolbox_tron_no_signer");let Q=Buffer.from(f.privateKey).toString("hex"),X=new v({fullHost:E.get("rpcUrls")[O.Tron],privateKey:Q}),j=X.address.fromPrivateKey(Q);return{getAddress:()=>Promise.resolve(typeof j==="string"?j:""),signTransaction:async(k)=>{return await X.trx.sign(k,Q)}}}var c=async(q={})=>{let R=E.get("rpcUrls")[O.Tron],I=void 0,T=new v({fullHost:R,headers:void 0}),$="index"in q?q.index||0:0,L=P("derivationPath"in q&&q.derivationPath?q.derivationPath:w(C[O.Tron],{index:$})),f=await W(q).with({phrase:A.string},async({phrase:y})=>h({phrase:y,derivationPath:L})).with({signer:A.any},({signer:y})=>Promise.resolve(y)).otherwise(()=>Promise.resolve(void 0)),Q=async()=>{if(!f)throw new M("toolbox_tron_no_signer");return await f.getAddress()},X=(y)=>{return T.isAddress(y)},j=(y)=>{return y.address},k=()=>{return 1e8};return{tronWeb:T,getAddress:Q,validateAddress:X,getBalance:async(y,_=!0)=>{let{getBalance:J}=await import("../../chunk-12xtvbsp.js");try{let z=await J(O.Tron)(y,_);if(z.length>0)return z;let G=await T.trx.getBalance(y);return[H.from({chain:O.Tron,value:G,fromBaseDecimal:6})]}catch(z){m(!0,`Failed to get Tron balance for ${y}: ${z instanceof Error?z.message:z}`);try{let G=await T.trx.getBalance(y);return[H.from({chain:O.Tron,value:G,fromBaseDecimal:6})]}catch(G){return m(!0,`Failed to get native TRX balance for ${y}: ${G instanceof Error?G.message:G}`),[]}}},transfer:async({recipient:y,assetValue:_,memo:J})=>{if(!f)throw new M("toolbox_tron_no_signer");let z=await Q();if(_.isGasAsset){let u=await T.transactionBuilder.sendTrx(y,_.getBaseValue("number"),z);if(J){let g=await T.transactionBuilder.addUpdateData(u,J,"utf8"),K=await f.signTransaction(g),{txid:S}=await T.trx.sendRawTransaction(K);return S}let B=await f.signTransaction(u),{txid:b}=await T.trx.sendRawTransaction(B);return b}let D=j(_);if(!D)throw new M("toolbox_tron_invalid_token_identifier",{identifier:_.toString()});let N=k(),U=await T.contract(x,D);if(!U.methods?.transfer)throw new M("toolbox_tron_token_transfer_failed");let F=await U.methods.transfer(y,_.getBaseValue("string")).send({from:z,feeLimit:N,callValue:0});if(!F)throw new M("toolbox_tron_token_transfer_failed");return F},estimateTransactionFee:({assetValue:y})=>{if(y.isGasAsset)return H.from({chain:O.Tron,value:1});return H.from({chain:O.Tron,value:10})},createTransaction:async(y)=>{if(!f)throw new M("toolbox_tron_no_signer");let{recipient:_,assetValue:J,memo:z}=y,G=await Q();if(J.isGasAsset){let B=await T.transactionBuilder.sendTrx(_,J.getBaseValue("number"),G);if(z)return T.transactionBuilder.addUpdateData(B,z,"utf8");return B}let N=j(J);if(!N)throw new M("toolbox_tron_invalid_token_identifier",{identifier:J.toString()});let U="transfer(address,uint256)",F=[{type:"address",value:_},{type:"uint256",value:J.getBaseValue("string")}];return(await T.transactionBuilder.triggerSmartContract(N,U,{},F,G)).transaction},signTransaction:async(y)=>{if(!f)throw new M("toolbox_tron_no_signer");return await f.signTransaction(y)},broadcastTransaction:async(y)=>{let{txid:_}=await T.trx.sendRawTransaction(y);return _}}};export{x as trc20ABI,l as getTronPrivateKeyFromMnemonic,V as getTronAddressValidator,c as createTronToolbox};
1
+ import{d as Y,e as Z}from"../../chunk-s47y8512.js";import{AssetValue as B,Chain as M,NetworkDerivationPath as C,SKConfig as E,SwapKitError as O,derivationPathToString as P,updateDerivationPath as w,warnOnce as m}from"@swapkit/helpers";import{TronWeb as g}from"tronweb";import{P as A,match as V}from"ts-pattern";var D=[{constant:!0,inputs:[{name:"_owner",type:"address"}],name:"balanceOf",outputs:[{name:"balance",type:"uint256"}],type:"function"},{constant:!1,inputs:[{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transfer",outputs:[{name:"success",type:"bool"}],type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],type:"function"},{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],type:"function"}];async function W(){let{TronWeb:_}=await import("tronweb");return(R)=>_.isAddress(R)}async function l({phrase:_,derivationPath:R,index:j}){let T=R||P(w(C[M.Tron],{index:j||0})),{HDKey:$}=await import("@scure/bip32"),{mnemonicToSeedSync:I}=await import("@scure/bip39"),q=I(_),X=$.fromMasterSeed(q).derive(T);if(!X.privateKey)throw new O("toolbox_tron_no_signer");return Buffer.from(X.privateKey).toString("hex")}async function c({phrase:_,derivationPath:R}){let{HDKey:j}=await import("@scure/bip32"),{mnemonicToSeedSync:T}=await import("@scure/bip39"),$=T(_),q=j.fromMasterSeed($).derive(R);if(!q.privateKey)throw new O("toolbox_tron_no_signer");let Q=Buffer.from(q.privateKey).toString("hex"),X=new g({fullHost:E.get("rpcUrls")[M.Tron],privateKey:Q}),L=X.address.fromPrivateKey(Q);return{getAddress:()=>Promise.resolve(typeof L==="string"?L:""),signTransaction:async(x)=>{return await X.trx.sign(x,Q)}}}var h=async(_={})=>{let R=E.get("rpcUrls")[M.Tron],j=void 0,T=new g({fullHost:R,headers:void 0}),$="index"in _?_.index||0:0,I=P("derivationPath"in _&&_.derivationPath?_.derivationPath:w(C[M.Tron],{index:$})),q=await V(_).with({phrase:A.string},async({phrase:y})=>c({phrase:y,derivationPath:I})).with({signer:A.any},({signer:y})=>Promise.resolve(y)).otherwise(()=>Promise.resolve(void 0)),Q=async()=>{if(!q)throw new O("toolbox_tron_no_signer");return await q.getAddress()},X=(y)=>{return T.isAddress(y)},L=()=>{return 1e8};return{tronWeb:T,getAddress:Q,validateAddress:X,getBalance:async(y,f=!0)=>{let{getBalance:J}=await import("../../chunk-12xtvbsp.js");try{let z=await J(M.Tron)(y,f);if(z.length>0)return z;let G=await T.trx.getBalance(y);return[B.from({chain:M.Tron,value:G,fromBaseDecimal:6})]}catch(z){m(!0,`Failed to get Tron balance for ${y}: ${z instanceof Error?z.message:z}`);try{let G=await T.trx.getBalance(y);return[B.from({chain:M.Tron,value:G,fromBaseDecimal:6})]}catch(G){return m(!0,`Failed to get native TRX balance for ${y}: ${G instanceof Error?G.message:G}`),[]}}},transfer:async({recipient:y,assetValue:f,memo:J})=>{if(!q)throw new O("toolbox_tron_no_signer");let z=await Q();if(f.isGasAsset){let k=await T.transactionBuilder.sendTrx(y,f.getBaseValue("number"),z);if(J){let K=await T.transactionBuilder.addUpdateData(k,J,"utf8"),b=await q.signTransaction(K),{txid:S}=await T.trx.sendRawTransaction(b);return S}let u=await q.signTransaction(k),{txid:p}=await T.trx.sendRawTransaction(u);return p}let H=f.address;if(!H)throw new O("toolbox_tron_invalid_token_identifier",{identifier:f.toString()});let N=L(),U=await T.contract(D,H);if(!U.methods?.transfer)throw new O("toolbox_tron_token_transfer_failed");let F=await U.methods.transfer(y,f.getBaseValue("string")).send({from:z,feeLimit:N,callValue:0});if(!F)throw new O("toolbox_tron_token_transfer_failed");return F},estimateTransactionFee:({assetValue:y})=>{if(y.isGasAsset)return B.from({chain:M.Tron,value:1});return B.from({chain:M.Tron,value:10})},createTransaction:async(y)=>{let{recipient:f,assetValue:J,memo:z}=y,G=await Q();if(J.isGasAsset){let u=await T.transactionBuilder.sendTrx(f,J.getBaseValue("number"),G);if(z)return T.transactionBuilder.addUpdateData(u,z,"utf8");return u.raw_data_hex}let N=J.address;if(!N)throw new O("toolbox_tron_invalid_token_identifier",{identifier:J.toString()});let U="transfer(address,uint256)",F=[{type:"address",value:f},{type:"uint256",value:J.getBaseValue("string")}];return(await T.transactionBuilder.triggerSmartContract(N,U,{},F,G)).transaction.raw_data_hex},signTransaction:async(y)=>{if(!q)throw new O("toolbox_tron_no_signer");return await q.signTransaction(y)},broadcastTransaction:async(y)=>{let{txid:f}=await T.trx.sendRawTransaction(y);return f}}};export{D as trc20ABI,l as getTronPrivateKeyFromMnemonic,W as getTronAddressValidator,h as createTronToolbox};
2
2
 
3
- //# debugId=34A485FEEB375E5464756E2164756E21
3
+ //# debugId=9BFE73A27F69753F64756E2164756E21
@@ -2,10 +2,10 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/tron/toolbox.ts", "../src/tron/helpers/trc20.abi.ts"],
4
4
  "sourcesContent": [
5
- "import {\n AssetValue,\n Chain,\n NetworkDerivationPath,\n SKConfig,\n SwapKitError,\n derivationPathToString,\n updateDerivationPath,\n warnOnce,\n} from \"@swapkit/helpers\";\nimport { TronWeb } from \"tronweb\";\nimport { P, match } from \"ts-pattern\";\n\nimport { trc20ABI } from \"./helpers/trc20.abi.js\";\nimport type {\n TronSignedTransaction,\n TronSigner,\n TronToolboxOptions,\n TronTransaction,\n TronTransferParams,\n} from \"./types.js\";\n\nexport async function getTronAddressValidator() {\n const { TronWeb } = await import(\"tronweb\");\n return (address: string) => TronWeb.isAddress(address);\n}\n\nexport async function getTronPrivateKeyFromMnemonic({\n phrase,\n derivationPath: customPath,\n index,\n}: {\n phrase: string;\n derivationPath?: string;\n index?: number;\n}) {\n const derivationPathToUse =\n customPath ||\n derivationPathToString(\n updateDerivationPath(NetworkDerivationPath[Chain.Tron], { index: index || 0 }),\n );\n\n const { HDKey } = await import(\"@scure/bip32\");\n const { mnemonicToSeedSync } = await import(\"@scure/bip39\");\n\n const seed = mnemonicToSeedSync(phrase);\n const hdKey = HDKey.fromMasterSeed(seed);\n const derived = hdKey.derive(derivationPathToUse);\n\n if (!derived.privateKey) {\n throw new SwapKitError(\"toolbox_tron_no_signer\");\n }\n\n return Buffer.from(derived.privateKey).toString(\"hex\");\n}\n\nasync function createKeysForPath({\n phrase,\n derivationPath,\n}: {\n phrase: string;\n derivationPath: string;\n}): Promise<TronSigner> {\n const { HDKey } = await import(\"@scure/bip32\");\n const { mnemonicToSeedSync } = await import(\"@scure/bip39\");\n\n const seed = mnemonicToSeedSync(phrase);\n const hdKey = HDKey.fromMasterSeed(seed);\n const derived = hdKey.derive(derivationPath);\n\n if (!derived.privateKey) {\n throw new SwapKitError(\"toolbox_tron_no_signer\");\n }\n\n // Convert private key to hex string for TronWeb\n const privateKeyHex = Buffer.from(derived.privateKey).toString(\"hex\");\n\n // Create TronWeb instance with the derived private key\n const tronWebWithKey = new TronWeb({\n fullHost: SKConfig.get(\"rpcUrls\")[Chain.Tron],\n privateKey: privateKeyHex,\n });\n\n const address = tronWebWithKey.address.fromPrivateKey(privateKeyHex);\n\n return {\n getAddress: () => Promise.resolve(typeof address === \"string\" ? address : \"\"),\n signTransaction: async (transaction: TronTransaction) => {\n const signedTx = await tronWebWithKey.trx.sign(transaction, privateKeyHex);\n return signedTx;\n },\n };\n}\n\nexport const createTronToolbox = async (options: TronToolboxOptions = {}) => {\n // Always get configuration from SKConfig\n const rpcUrl = SKConfig.get(\"rpcUrls\")[Chain.Tron];\n // Note: TRON API key support can be added to SKConfig apiKeys when needed\n const headers = undefined; // No API key needed for basic TronGrid access\n\n const tronWeb = new TronWeb({\n fullHost: rpcUrl,\n headers,\n });\n\n // Handle derivation path and index\n const index = \"index\" in options ? options.index || 0 : 0;\n const derivationPath = derivationPathToString(\n \"derivationPath\" in options && options.derivationPath\n ? options.derivationPath\n : updateDerivationPath(NetworkDerivationPath[Chain.Tron], { index }),\n );\n\n // Create signer based on options using pattern matching\n const signer: TronSigner | undefined = await match(options)\n .with({ phrase: P.string }, async ({ phrase }) => createKeysForPath({ phrase, derivationPath }))\n .with({ signer: P.any }, ({ signer }) => Promise.resolve(signer as TronSigner))\n .otherwise(() => Promise.resolve(undefined));\n\n const getAddress = async () => {\n if (!signer) throw new SwapKitError(\"toolbox_tron_no_signer\");\n return await signer.getAddress();\n };\n\n const validateAddress = (address: string) => {\n return tronWeb.isAddress(address);\n };\n\n const getContractAddress = (assetValue: AssetValue) => {\n // Use asset.address for TRC20 contracts instead of parsing string\n return assetValue.address;\n };\n\n const calculateFeeLimit = () => {\n return 100_000_000; // 100 TRX in SUN\n };\n\n const getBalance = async (address: string, scamFilter = true) => {\n const { getBalance: getBalanceFromApi } = await import(\"../utils.js\");\n\n try {\n // Use SwapKit API for comprehensive balance fetching (includes TRX + TRC20 tokens)\n const apiBalances = await getBalanceFromApi(Chain.Tron)(address, scamFilter);\n\n // If API returns balances, use those\n if (apiBalances.length > 0) {\n return apiBalances;\n }\n\n // Fallback to on-chain TRX balance if API fails or returns empty\n const trxBalanceInSun = await tronWeb.trx.getBalance(address);\n return [\n AssetValue.from({\n chain: Chain.Tron,\n value: trxBalanceInSun,\n fromBaseDecimal: 6, // TRX has 6 decimals\n }),\n ];\n } catch (error) {\n warnOnce(\n true,\n `Failed to get Tron balance for ${address}: ${error instanceof Error ? error.message : error}`,\n );\n\n // Final fallback: try to get just the native TRX balance\n try {\n const trxBalanceInSun = await tronWeb.trx.getBalance(address);\n return [\n AssetValue.from({\n chain: Chain.Tron,\n value: trxBalanceInSun,\n fromBaseDecimal: 6,\n }),\n ];\n } catch (fallbackError) {\n warnOnce(\n true,\n `Failed to get native TRX balance for ${address}: ${fallbackError instanceof Error ? fallbackError.message : fallbackError}`,\n );\n return [];\n }\n }\n };\n\n const transfer = async ({ recipient, assetValue, memo }: TronTransferParams) => {\n if (!signer) throw new SwapKitError(\"toolbox_tron_no_signer\");\n\n const from = await getAddress();\n const isNative = assetValue.isGasAsset;\n\n if (isNative) {\n // Native TRX Transfer (amount in SUN - base units)\n const transaction = await tronWeb.transactionBuilder.sendTrx(\n recipient,\n assetValue.getBaseValue(\"number\"),\n from,\n );\n\n // Add memo if provided\n if (memo) {\n const transactionWithMemo = await tronWeb.transactionBuilder.addUpdateData(\n transaction,\n memo,\n \"utf8\",\n );\n const signedTx = await signer.signTransaction(transactionWithMemo);\n const { txid } = await tronWeb.trx.sendRawTransaction(signedTx);\n return txid;\n }\n\n const signedTx = await signer.signTransaction(transaction);\n const { txid } = await tronWeb.trx.sendRawTransaction(signedTx);\n return txid;\n }\n\n // TRC20 Token Transfer\n const contractAddress = getContractAddress(assetValue);\n if (!contractAddress) {\n throw new SwapKitError(\"toolbox_tron_invalid_token_identifier\", {\n identifier: assetValue.toString(),\n });\n }\n\n const feeLimit = calculateFeeLimit();\n const contract = await tronWeb.contract(trc20ABI, contractAddress);\n\n if (!contract.methods?.transfer) {\n throw new SwapKitError(\"toolbox_tron_token_transfer_failed\");\n }\n\n const txid = await contract.methods\n .transfer(recipient, assetValue.getBaseValue(\"string\"))\n .send({\n from,\n feeLimit,\n callValue: 0,\n });\n\n if (!txid) {\n throw new SwapKitError(\"toolbox_tron_token_transfer_failed\");\n }\n\n return txid;\n };\n\n const estimateTransactionFee = ({ assetValue }: TronTransferParams) => {\n const isNative = assetValue.isGasAsset;\n\n if (isNative) {\n // Native TRX transfers typically consume bandwidth, which is free up to daily limit\n // Return a minimal fee estimation for bandwidth cost\n return AssetValue.from({ chain: Chain.Tron, value: 1 }); // 1 TRX\n }\n\n // TRC20 transfers consume energy, estimate higher fee\n return AssetValue.from({ chain: Chain.Tron, value: 10 }); // 10 TRX\n };\n\n const createTransaction = async (params: TronTransferParams) => {\n if (!signer) throw new SwapKitError(\"toolbox_tron_no_signer\");\n\n const { recipient, assetValue, memo } = params;\n const from = await getAddress();\n const isNative = assetValue.isGasAsset;\n\n if (isNative) {\n const transaction = await tronWeb.transactionBuilder.sendTrx(\n recipient,\n assetValue.getBaseValue(\"number\"),\n from,\n );\n\n if (memo) {\n return tronWeb.transactionBuilder.addUpdateData(transaction, memo, \"utf8\");\n }\n\n return transaction;\n }\n\n // For TRC20, we would need to build the transaction manually\n // This is a simplified version - in practice, you'd build the contract call transaction\n const contractAddress = getContractAddress(assetValue);\n if (!contractAddress) {\n throw new SwapKitError(\"toolbox_tron_invalid_token_identifier\", {\n identifier: assetValue.toString(),\n });\n }\n\n // Build TRC20 transfer transaction\n const functionSelector = \"transfer(address,uint256)\";\n const parameter = [\n { type: \"address\", value: recipient },\n { type: \"uint256\", value: assetValue.getBaseValue(\"string\") },\n ];\n\n const result = await tronWeb.transactionBuilder.triggerSmartContract(\n contractAddress,\n functionSelector,\n {},\n parameter,\n from,\n );\n\n return result.transaction;\n };\n\n const signTransaction = async (transaction: TronTransaction) => {\n if (!signer) throw new SwapKitError(\"toolbox_tron_no_signer\");\n return await signer.signTransaction(transaction);\n };\n\n const broadcastTransaction = async (signedTx: TronSignedTransaction) => {\n const { txid } = await tronWeb.trx.sendRawTransaction(signedTx);\n return txid;\n };\n\n return {\n tronWeb,\n getAddress,\n validateAddress,\n getBalance,\n transfer,\n estimateTransactionFee,\n createTransaction,\n signTransaction,\n broadcastTransaction,\n };\n};\n",
5
+ "import {\n AssetValue,\n Chain,\n NetworkDerivationPath,\n SKConfig,\n SwapKitError,\n derivationPathToString,\n updateDerivationPath,\n warnOnce,\n} from \"@swapkit/helpers\";\nimport { TronWeb } from \"tronweb\";\nimport { P, match } from \"ts-pattern\";\n\nimport { trc20ABI } from \"./helpers/trc20.abi.js\";\nimport type {\n TronSignedTransaction,\n TronSigner,\n TronToolboxOptions,\n TronTransaction,\n TronTransferParams,\n} from \"./types.js\";\n\nexport async function getTronAddressValidator() {\n const { TronWeb } = await import(\"tronweb\");\n return (address: string) => TronWeb.isAddress(address);\n}\n\nexport async function getTronPrivateKeyFromMnemonic({\n phrase,\n derivationPath: customPath,\n index,\n}: {\n phrase: string;\n derivationPath?: string;\n index?: number;\n}) {\n const derivationPathToUse =\n customPath ||\n derivationPathToString(\n updateDerivationPath(NetworkDerivationPath[Chain.Tron], { index: index || 0 }),\n );\n\n const { HDKey } = await import(\"@scure/bip32\");\n const { mnemonicToSeedSync } = await import(\"@scure/bip39\");\n\n const seed = mnemonicToSeedSync(phrase);\n const hdKey = HDKey.fromMasterSeed(seed);\n const derived = hdKey.derive(derivationPathToUse);\n\n if (!derived.privateKey) {\n throw new SwapKitError(\"toolbox_tron_no_signer\");\n }\n\n return Buffer.from(derived.privateKey).toString(\"hex\");\n}\n\nasync function createKeysForPath({\n phrase,\n derivationPath,\n}: {\n phrase: string;\n derivationPath: string;\n}) {\n const { HDKey } = await import(\"@scure/bip32\");\n const { mnemonicToSeedSync } = await import(\"@scure/bip39\");\n\n const seed = mnemonicToSeedSync(phrase);\n const hdKey = HDKey.fromMasterSeed(seed);\n const derived = hdKey.derive(derivationPath);\n\n if (!derived.privateKey) {\n throw new SwapKitError(\"toolbox_tron_no_signer\");\n }\n\n // Convert private key to hex string for TronWeb\n const privateKeyHex = Buffer.from(derived.privateKey).toString(\"hex\");\n\n // Create TronWeb instance with the derived private key\n const tronWebWithKey = new TronWeb({\n fullHost: SKConfig.get(\"rpcUrls\")[Chain.Tron],\n privateKey: privateKeyHex,\n });\n\n const address = tronWebWithKey.address.fromPrivateKey(privateKeyHex);\n\n return {\n getAddress: () => Promise.resolve(typeof address === \"string\" ? address : \"\"),\n signTransaction: async (transaction: TronTransaction) => {\n const signedTx = await tronWebWithKey.trx.sign(transaction, privateKeyHex);\n return signedTx;\n },\n };\n}\n\nexport const createTronToolbox = async (options: TronToolboxOptions = {}) => {\n // Always get configuration from SKConfig\n const rpcUrl = SKConfig.get(\"rpcUrls\")[Chain.Tron];\n // Note: TRON API key support can be added to SKConfig apiKeys when needed\n const headers = undefined; // No API key needed for basic TronGrid access\n\n const tronWeb = new TronWeb({\n fullHost: rpcUrl,\n headers,\n });\n\n // Handle derivation path and index\n const index = \"index\" in options ? options.index || 0 : 0;\n const derivationPath = derivationPathToString(\n \"derivationPath\" in options && options.derivationPath\n ? options.derivationPath\n : updateDerivationPath(NetworkDerivationPath[Chain.Tron], { index }),\n );\n\n // Create signer based on options using pattern matching\n const signer: TronSigner | undefined = await match(options)\n .with({ phrase: P.string }, async ({ phrase }) => createKeysForPath({ phrase, derivationPath }))\n .with({ signer: P.any }, ({ signer }) => Promise.resolve(signer as TronSigner))\n .otherwise(() => Promise.resolve(undefined));\n\n const getAddress = async () => {\n if (!signer) throw new SwapKitError(\"toolbox_tron_no_signer\");\n return await signer.getAddress();\n };\n\n const validateAddress = (address: string) => {\n return tronWeb.isAddress(address);\n };\n\n const calculateFeeLimit = () => {\n return 100_000_000; // 100 TRX in SUN\n };\n\n const getBalance = async (address: string, scamFilter = true) => {\n const { getBalance: getBalanceFromApi } = await import(\"../utils.js\");\n\n try {\n // Use SwapKit API for comprehensive balance fetching (includes TRX + TRC20 tokens)\n const apiBalances = await getBalanceFromApi(Chain.Tron)(address, scamFilter);\n\n // If API returns balances, use those\n if (apiBalances.length > 0) {\n return apiBalances;\n }\n\n // Fallback to on-chain TRX balance if API fails or returns empty\n const trxBalanceInSun = await tronWeb.trx.getBalance(address);\n return [\n AssetValue.from({\n chain: Chain.Tron,\n value: trxBalanceInSun,\n fromBaseDecimal: 6, // TRX has 6 decimals\n }),\n ];\n } catch (error) {\n warnOnce(\n true,\n `Failed to get Tron balance for ${address}: ${error instanceof Error ? error.message : error}`,\n );\n\n // Final fallback: try to get just the native TRX balance\n try {\n const trxBalanceInSun = await tronWeb.trx.getBalance(address);\n return [\n AssetValue.from({\n chain: Chain.Tron,\n value: trxBalanceInSun,\n fromBaseDecimal: 6,\n }),\n ];\n } catch (fallbackError) {\n warnOnce(\n true,\n `Failed to get native TRX balance for ${address}: ${fallbackError instanceof Error ? fallbackError.message : fallbackError}`,\n );\n return [];\n }\n }\n };\n\n const transfer = async ({ recipient, assetValue, memo }: TronTransferParams) => {\n if (!signer) throw new SwapKitError(\"toolbox_tron_no_signer\");\n\n const from = await getAddress();\n const isNative = assetValue.isGasAsset;\n\n if (isNative) {\n // Native TRX Transfer (amount in SUN - base units)\n const transaction = await tronWeb.transactionBuilder.sendTrx(\n recipient,\n assetValue.getBaseValue(\"number\"),\n from,\n );\n\n // Add memo if provided\n if (memo) {\n const transactionWithMemo = await tronWeb.transactionBuilder.addUpdateData(\n transaction,\n memo,\n \"utf8\",\n );\n const signedTx = await signer.signTransaction(transactionWithMemo);\n const { txid } = await tronWeb.trx.sendRawTransaction(signedTx);\n return txid;\n }\n\n const signedTx = await signer.signTransaction(transaction);\n const { txid } = await tronWeb.trx.sendRawTransaction(signedTx);\n return txid;\n }\n\n // TRC20 Token Transfer\n const contractAddress = assetValue.address;\n if (!contractAddress) {\n throw new SwapKitError(\"toolbox_tron_invalid_token_identifier\", {\n identifier: assetValue.toString(),\n });\n }\n\n const feeLimit = calculateFeeLimit();\n const contract = await tronWeb.contract(trc20ABI, contractAddress);\n\n if (!contract.methods?.transfer) {\n throw new SwapKitError(\"toolbox_tron_token_transfer_failed\");\n }\n\n const txid = await contract.methods\n .transfer(recipient, assetValue.getBaseValue(\"string\"))\n .send({\n from,\n feeLimit,\n callValue: 0,\n });\n\n if (!txid) {\n throw new SwapKitError(\"toolbox_tron_token_transfer_failed\");\n }\n\n return txid;\n };\n\n const estimateTransactionFee = ({ assetValue }: TronTransferParams) => {\n const isNative = assetValue.isGasAsset;\n\n if (isNative) {\n // Native TRX transfers typically consume bandwidth, which is free up to daily limit\n // Return a minimal fee estimation for bandwidth cost\n return AssetValue.from({ chain: Chain.Tron, value: 1 }); // 1 TRX\n }\n\n // TRC20 transfers consume energy, estimate higher fee\n return AssetValue.from({ chain: Chain.Tron, value: 10 }); // 10 TRX\n };\n\n const createTransaction = async (params: TronTransferParams) => {\n const { recipient, assetValue, memo } = params;\n const from = await getAddress();\n const isNative = assetValue.isGasAsset;\n\n if (isNative) {\n const transaction = await tronWeb.transactionBuilder.sendTrx(\n recipient,\n assetValue.getBaseValue(\"number\"),\n from,\n );\n\n if (memo) {\n return tronWeb.transactionBuilder.addUpdateData(transaction, memo, \"utf8\");\n }\n\n return transaction.raw_data_hex;\n }\n\n // For TRC20, we would need to build the transaction manually\n // This is a simplified version - in practice, you'd build the contract call transaction\n const contractAddress = assetValue.address;\n if (!contractAddress) {\n throw new SwapKitError(\"toolbox_tron_invalid_token_identifier\", {\n identifier: assetValue.toString(),\n });\n }\n\n // Build TRC20 transfer transaction\n const functionSelector = \"transfer(address,uint256)\";\n const parameter = [\n { type: \"address\", value: recipient },\n { type: \"uint256\", value: assetValue.getBaseValue(\"string\") },\n ];\n\n const result = await tronWeb.transactionBuilder.triggerSmartContract(\n contractAddress,\n functionSelector,\n {},\n parameter,\n from,\n );\n\n return result.transaction.raw_data_hex;\n };\n\n const signTransaction = async (transaction: TronTransaction) => {\n if (!signer) throw new SwapKitError(\"toolbox_tron_no_signer\");\n return await signer.signTransaction(transaction);\n };\n\n const broadcastTransaction = async (signedTx: TronSignedTransaction) => {\n const { txid } = await tronWeb.trx.sendRawTransaction(signedTx);\n return txid;\n };\n\n return {\n tronWeb,\n getAddress,\n validateAddress,\n getBalance,\n transfer,\n estimateTransactionFee,\n createTransaction,\n signTransaction,\n broadcastTransaction,\n };\n};\n",
6
6
  "export const trc20ABI = [\n {\n constant: true,\n inputs: [{ name: \"_owner\", type: \"address\" }],\n name: \"balanceOf\",\n outputs: [{ name: \"balance\", type: \"uint256\" }],\n type: \"function\",\n },\n {\n constant: false,\n inputs: [\n { name: \"_to\", type: \"address\" },\n { name: \"_value\", type: \"uint256\" },\n ],\n name: \"transfer\",\n outputs: [{ name: \"success\", type: \"bool\" }],\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"decimals\",\n outputs: [{ name: \"\", type: \"uint8\" }],\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"symbol\",\n outputs: [{ name: \"\", type: \"string\" }],\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"name\",\n outputs: [{ name: \"\", type: \"string\" }],\n type: \"function\",\n },\n] as const;\n"
7
7
  ],
8
- "mappings": "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",
9
- "debugId": "34A485FEEB375E5464756E2164756E21",
8
+ "mappings": "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",
9
+ "debugId": "9BFE73A27F69753F64756E2164756E21",
10
10
  "names": []
11
11
  }
package/package.json CHANGED
@@ -23,7 +23,7 @@
23
23
  "@solana/spl-memo": "0.2.5",
24
24
  "@solana/spl-token": "0.4.13",
25
25
  "@solana/web3.js": "1.98.2",
26
- "@swapkit/helpers": "3.0.0-beta.15",
26
+ "@swapkit/helpers": "3.0.0-beta.16",
27
27
  "base64-js": "1.5.1",
28
28
  "bitcoinjs-lib": "6.1.7",
29
29
  "bs58check": "4.0.0",
@@ -67,8 +67,8 @@
67
67
  "types": "./src/evm/index.ts"
68
68
  },
69
69
  "./near": {
70
- "default": "./dist/near/index.js",
71
- "require": "./dist/near/index.cjs",
70
+ "default": "./dist/src/near/index.js",
71
+ "require": "./dist/src/near/index.cjs",
72
72
  "types": "./src/near/index.ts"
73
73
  },
74
74
  "./radix": {
@@ -119,5 +119,5 @@
119
119
  "type-check:go": "tsgo"
120
120
  },
121
121
  "type": "module",
122
- "version": "1.0.0-beta.20"
122
+ "version": "1.0.0-beta.22"
123
123
  }
package/src/near/types.ts CHANGED
@@ -47,7 +47,6 @@ export interface NearFunctionCallParams {
47
47
 
48
48
  export interface NearCreateTransactionParams extends GenericCreateTransactionParams {
49
49
  // NEAR-specific options
50
- publicKey: string; // Public key for the transaction
51
50
  attachedDeposit?: string;
52
51
  // Function call parameters
53
52
  functionCall?: {
@@ -60,7 +60,7 @@ async function createKeysForPath({
60
60
  }: {
61
61
  phrase: string;
62
62
  derivationPath: string;
63
- }): Promise<TronSigner> {
63
+ }) {
64
64
  const { HDKey } = await import("@scure/bip32");
65
65
  const { mnemonicToSeedSync } = await import("@scure/bip39");
66
66
 
@@ -126,11 +126,6 @@ export const createTronToolbox = async (options: TronToolboxOptions = {}) => {
126
126
  return tronWeb.isAddress(address);
127
127
  };
128
128
 
129
- const getContractAddress = (assetValue: AssetValue) => {
130
- // Use asset.address for TRC20 contracts instead of parsing string
131
- return assetValue.address;
132
- };
133
-
134
129
  const calculateFeeLimit = () => {
135
130
  return 100_000_000; // 100 TRX in SUN
136
131
  };
@@ -214,7 +209,7 @@ export const createTronToolbox = async (options: TronToolboxOptions = {}) => {
214
209
  }
215
210
 
216
211
  // TRC20 Token Transfer
217
- const contractAddress = getContractAddress(assetValue);
212
+ const contractAddress = assetValue.address;
218
213
  if (!contractAddress) {
219
214
  throw new SwapKitError("toolbox_tron_invalid_token_identifier", {
220
215
  identifier: assetValue.toString(),
@@ -257,8 +252,6 @@ export const createTronToolbox = async (options: TronToolboxOptions = {}) => {
257
252
  };
258
253
 
259
254
  const createTransaction = async (params: TronTransferParams) => {
260
- if (!signer) throw new SwapKitError("toolbox_tron_no_signer");
261
-
262
255
  const { recipient, assetValue, memo } = params;
263
256
  const from = await getAddress();
264
257
  const isNative = assetValue.isGasAsset;
@@ -274,12 +267,12 @@ export const createTronToolbox = async (options: TronToolboxOptions = {}) => {
274
267
  return tronWeb.transactionBuilder.addUpdateData(transaction, memo, "utf8");
275
268
  }
276
269
 
277
- return transaction;
270
+ return transaction.raw_data_hex;
278
271
  }
279
272
 
280
273
  // For TRC20, we would need to build the transaction manually
281
274
  // This is a simplified version - in practice, you'd build the contract call transaction
282
- const contractAddress = getContractAddress(assetValue);
275
+ const contractAddress = assetValue.address;
283
276
  if (!contractAddress) {
284
277
  throw new SwapKitError("toolbox_tron_invalid_token_identifier", {
285
278
  identifier: assetValue.toString(),
@@ -301,7 +294,7 @@ export const createTronToolbox = async (options: TronToolboxOptions = {}) => {
301
294
  from,
302
295
  );
303
296
 
304
- return result.transaction;
297
+ return result.transaction.raw_data_hex;
305
298
  };
306
299
 
307
300
  const signTransaction = async (transaction: TronTransaction) => {