@swapkit/toolboxes 4.15.14 → 4.15.15

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 +1 @@
1
- var bf=Object.create;var{getPrototypeOf:Ff,defineProperty:w,getOwnPropertyNames:Cf,getOwnPropertyDescriptor:wf}=Object,Lf=Object.prototype.hasOwnProperty;function Df(f){return this[f]}var mf,yf,kf=(f,N,E)=>{var C=f!=null&&typeof f==="object";if(C){var Y=N?mf??=new WeakMap:yf??=new WeakMap,B=Y.get(f);if(B)return B}E=f!=null?bf(Ff(f)):{};let M=N||!f||!f.__esModule?w(E,"default",{value:f,enumerable:!0}):E;for(let I of Cf(f))if(!Lf.call(M,I))w(M,I,{get:Df.bind(f,I),enumerable:!0});if(C)Y.set(f,M);return M},jf=(f)=>{var N=(Rf??=new WeakMap).get(f),E;if(N)return N;if(N=w({},"__esModule",{value:!0}),f&&typeof f==="object"||typeof f==="function"){for(var C of Cf(f))if(!Lf.call(N,C))w(N,C,{get:Df.bind(f,C),enumerable:!(E=wf(f,C))||E.enumerable})}return Rf.set(f,N),N},Rf;var Vf=(f)=>f;function Sf(f,N){this[f]=Vf.bind(null,N)}var Pf=(f,N)=>{for(var E in N)w(f,E,{get:N[E],enumerable:!0,configurable:!0,set:Sf.bind(N,E)})};var Z=(f,N)=>()=>(f&&(N=f(f=0)),N);function m(f){return f.length>=2&&f.length<=64&&/^(([a-z\d]+[-_])*[a-z\d]+\.)*([a-z\d]+[-_])*[a-z\d]+$/.test(f)}async function S(f){let{KeyPair:N}=await import("@near-js/crypto"),E=f.index||0,C=f.derivationPath?V.derivationPathToString(f.derivationPath.slice(0,3)):`m/44'/397'/${E}'`,{secretKey:Y}=Af.parseSeedPhrase(f.phrase,C),B=N.fromString(Y);return Bf(B)}async function K(f){let{KeyPair:N}=await import("@near-js/crypto"),E=N.fromString(f);return Bf(E)}function Bf(f){return new qf(f)}async function P(f,N){let C=(await f.query({account_id:N,finality:"final",request_type:"view_access_key_list"})).keys.find((I)=>I.access_key.permission==="FullAccess");if(!C)throw new V.SwapKitError("toolbox_near_no_public_key_found");let{PublicKey:Y}=await import("@near-js/crypto"),B=Y.fromString(C.public_key);return{nonce:C.access_key.nonce||0,publicKey:B}}var Yf,V,Af,qf;var h=Z(()=>{Yf=require("@near-js/signers"),V=require("@swapkit/helpers"),Af=kf(require("near-seed-phrase"));qf=class qf extends Yf.KeyPairSigner{#f;constructor(f){super(f);this.#f=f}getAddress(){let f=this.#f.getPublicKey(),N=Buffer.from(f.data).toString("hex");return Promise.resolve(N)}}});function o(f){return"recipient"in f&&"amount"in f&&!("contractId"in f)}function p(f){return"contractId"in f&&"methodName"in f}function l(f){return"actions"in f}function n(f){return"newAccountId"in f}function t(f){return"contractCode"in f}function d(f){return"customEstimator"in f}function i(f){let N=0;for(let E of f)switch(E.enum){case"transfer":N+=Number(q.SIMPLE_TRANSFER);break;case"functionCall":N+=Number(q.CONTRACT_CALL);break;case"createAccount":N+=Number(q.ACCOUNT_CREATION);break;case"deployContract":N+=Number(q.CONTRACT_DEPLOYMENT);break;case"addKey":N+=Number(q.ACCESS_KEY_ADDITION);break;case"deleteKey":N+=Number(q.ACCESS_KEY_DELETION);break;case"stake":N+=Number(q.STAKE);break;default:N+=Number(q.CONTRACT_CALL)}return N.toString()}function r(f){if(f==="ft_transfer"||f==="ft_transfer_call")return q.TOKEN_TRANSFER;if(f==="storage_deposit")return q.STORAGE_DEPOSIT;return q.CONTRACT_CALL}function uf(f){return(BigInt(f)*BigInt(1000000000000)).toString()}function vf(f){return(BigInt(f)/BigInt(1000000000000)).toString()}var q;var s=Z(()=>{q={ACCESS_KEY_ADDITION:"5",ACCESS_KEY_DELETION:"5",ACCOUNT_CREATION:"30",CONTRACT_CALL:"150",CONTRACT_DEPLOYMENT:"200",SIMPLE_TRANSFER:"1",STAKE:"10",STORAGE_DEPOSIT:"150",TOKEN_TRANSFER:"150"}});async function c({account:f,contractId:N,viewMethods:E,changeMethods:C}){let{Contract:Y}=await import("@near-js/accounts");return new Y(f,N,{changeMethods:C,useLocalViewExecution:!0,viewMethods:E})}function df(){function f(){let N=Date.now(),E=e||N;return e=E,N>e?N:E+1}return gf+f().toString(36)}function Uf(f){return async function(E,C=!0){let Y=await Mf.SwapKitApi.getChainBalance({address:E,chain:f,scamFilter:C}),{baseDecimal:B}=y.getChainConfig(f),M=Y.map(({identifier:J,value:k,decimal:u})=>{return new y.AssetValue({decimal:u||B,identifier:J,value:k})});if(!M.some((J)=>J.isGasAsset))return[y.AssetValue.from({chain:f}),...M];return M}}var y,Mf,gf,e=0;var Gf=Z(()=>{y=require("@swapkit/helpers"),Mf=require("@swapkit/helpers/api"),gf=typeof process<"u"&&process.pid?process.pid.toString(36):""});function Kf(f){let N;async function E(){if(N)return N;return N=await $.match(f).with({phrase:$.P.string},async(T)=>{return await S(T)}).with({signer:$.P.any},({signer:T})=>T).otherwise(()=>{return}),N}async function C(){let T=await _.getRPCUrl(_.Chain.Near);return new If.JsonRpcProvider({url:T})}async function Y(T){let{Account:x}=await import("@near-js/accounts"),O=await C(),L=await E(),R=T||await B();return new x(R,O,L)}async function B(){let T=await E();if(!T)throw new _.SwapKitError("toolbox_near_no_signer");return await T.getAddress()}async function M(T){return(await xf({changeMethods:[],contractId:T.contractId,viewMethods:["storage_balance_of"]})).storage_balance_of({account_id:T.accountId})}async function I(T){let O=[await g({args:{account_id:T.recipient},attachedDeposit:"1250000000000000000000",gas:"150000000000000",methodName:"storage_deposit"}),await g({args:{amount:T.assetValue.getBaseValue("string"),memo:T.memo||null,receiver_id:T.recipient},attachedDeposit:"1",gas:"150000000000000",methodName:"ft_transfer"})];return Ef({actions:O,receiverId:T.contractId})}async function J(T){if(!await E())throw new _.SwapKitError("toolbox_near_no_signer");let{assetValue:O,recipient:L,memo:R}=T,D=await B();if(!O.isGasAsset&&O.address){if(!await M({accountId:L,contractId:O.address}))return I({assetValue:O,contractId:O.address,memo:R,recipient:L})}let A=await k({...T,sender:D});return Nf(A)}async function k({recipient:T,assetValue:x,memo:O,attachedDeposit:L,sender:R,functionCall:D}){let A=await C();if(!m(T))throw new _.SwapKitError("toolbox_near_invalid_address",{recipient:T});if(!m(R))throw new _.SwapKitError("toolbox_near_invalid_address",{sender:R});if(D)return v({...D,sender:R});if(!x.isGasAsset){let _f=x.address;if(!_f)throw new _.SwapKitError("toolbox_near_missing_contract_address");return v({args:{amount:x.getBaseValue("string"),memo:O||null,receiver_id:T},attachedDeposit:L||"1",contractId:_f,gas:"250000000000000",methodName:"ft_transfer",sender:R})}let{publicKey:U,nonce:G}=await P(A,R),Q=x.getBaseValue("bigint"),{actionCreators:W,createTransaction:z}=await import("@near-js/transactions"),{baseDecode:H}=await import("@near-js/utils"),b=[W.transfer(Q)];if(O&&L)b.push(W.functionCall("memo",{memo:O},BigInt("250000000000000"),BigInt(L)));let F=await A.block({finality:"final"}),Of=H(F.header.hash);return z(R,U,T,G+1,b,Of)}function u(T){let x=T.encode();return Buffer.from(x).toString("base64")}async function v({args:T,attachedDeposit:x,contractId:O,gas:L,methodName:R,sender:D}){let A=await C(),{publicKey:U,nonce:G}=await P(A,D),{createTransaction:Q,actionCreators:W}=await import("@near-js/transactions"),{baseDecode:z}=await import("@near-js/utils"),H=await A.block({finality:"final"}),b=z(H.header.hash),F=[W.functionCall(R,Buffer.from(JSON.stringify(T)),BigInt(L),BigInt(x))];return Q(D,U,O,G+1,F,b)}async function g(T){let{actionCreators:x}=await import("@near-js/transactions");return x.functionCall(T.methodName,Buffer.from(JSON.stringify(T.args)),BigInt(T.gas),BigInt(T.attachedDeposit))}async function ff(T){let x=await E();if(!x)throw new _.SwapKitError("toolbox_near_no_signer");let[O,L]=await x.signTransaction(T);return L}async function Tf(T){return(await(await C()).sendTransaction(T)).transaction.hash}async function Nf(T){let x=await E();if(!x)throw new _.SwapKitError("toolbox_near_no_signer");try{let O=await ff(T);return await Tf(O)}catch{return x.signAndSendTransactions?.({transactions:[T]})}}async function Wf(T){let x=await E();if("assetValue"in T){let L=await Xf();try{let R=await _.getRPCUrl(_.Chain.Near),D=await fetch(R,{body:JSON.stringify({id:"dontcare",jsonrpc:"2.0",method:"EXPERIMENTAL_protocol_config",params:{finality:"final"}}),headers:{"Content-Type":"application/json"},method:"POST"}),{result:{runtime_config:A}}=await D.json(),{execution:U,send_sir:G}=A.transaction_costs.action_receipt_creation_config,{execution:Q,send_sir:W}=A.transaction_costs.action_creation_config.transfer_cost,z=BigInt(W)+BigInt(Q),H=BigInt(G)+BigInt(U),F=(z+H)*BigInt(L.toString());return _.AssetValue.from({chain:_.Chain.Near,value:F})}catch(R){console.debug("NEAR fee estimation (protocol config) failed, using fallback:",R);let D=BigInt("115123062500"),A=BigInt("108059500000"),G=(D+A)*BigInt(L.toString());return _.AssetValue.from({chain:_.Chain.Near,value:G})}}let O=x?await Y():void 0;return j(T,O)}async function Xf(){let T=await C();try{return await T.query({account_id:"system",args_base64:"",finality:"final",method_name:"gas_price",request_type:"call_function"})}catch{return"100000000"}}async function Zf(T,x,O){if(!await E())throw new _.SwapKitError("toolbox_near_no_signer");let R=await Y(),{formatNearAmount:D}=await import("@near-js/utils"),{PublicKey:A}=await import("@near-js/crypto"),U=D(O)||"0";return(await R.createAccount(T,A.fromString(x),BigInt(U))).transaction.hash}async function $f(T){let x=await E();try{if(!x)throw new _.SwapKitError("toolbox_near_no_signer");let{actionCreators:O}=await import("@near-js/transactions"),{contractId:L,methodName:R,args:D,deposit:A}=T,U=await Y(),G=await j({args:D||{},contractId:L,methodName:R}),Q=O.functionCall(R,D||{},G.getBaseValue("bigint"),BigInt(A||"1"));return(await U.signAndSendTransaction({actions:[Q],receiverId:L})).transaction_outcome.id}catch(O){throw new _.SwapKitError("toolbox_near_transfer_failed",{error:O})}}async function xf(T){let x=await Y();return c({account:x,changeMethods:T.changeMethods,contractId:T.contractId,viewMethods:T.viewMethods})}async function Ef(T){if(!await E())throw new _.SwapKitError("toolbox_near_no_signer");if(T.actions.length===0)throw new _.SwapKitError("toolbox_near_empty_batch");return(await(await Y()).signAndSendTransaction({actions:T.actions,receiverId:T.receiverId})).transaction.hash}async function j(T,x){let O=await $.match(T).when(o,()=>q.SIMPLE_TRANSFER).when(p,(R)=>r(R.methodName)).when(l,(R)=>i(R.actions)).when(n,()=>q.ACCOUNT_CREATION).when(t,()=>q.CONTRACT_DEPLOYMENT).when(d,(R)=>{if(!x)throw new _.SwapKitError("toolbox_near_no_account");return R.customEstimator(x)}).otherwise(()=>{throw new _.SwapKitError("toolbox_near_invalid_gas_params")}),L=BigInt(O)*BigInt(1000000000000);return _.AssetValue.from({chain:_.Chain.Near,value:L})}function Jf(T,x){return console.warn("NEAR toolbox: estimateGas is deprecated, use estimateGasLimit instead"),j(T,x)}async function zf(){let T=await C();try{return(await T.gasPrice(null)).gas_price||"100000000"}catch{return"100000000"}}async function Hf(){let T=await E();return T?(await T.getPublicKey()).toString():""}return{broadcastTransaction:Tf,callFunction:$f,createAction:g,createContract:xf,createContractFunctionCall:v,createSubAccount:Zf,createTransaction:k,estimateGas:Jf,estimateGasLimit:j,estimateTransactionFee:Wf,executeBatchTransaction:Ef,getAddress:B,getBalance:Uf(_.Chain.Near),getGasPrice:zf,getNearProvider:C,getPublicKey:Hf,getSignerFromPhrase:S,getSignerFromPrivateKey:K,serializeTransaction:u,signAndBroadcastTransaction:Nf,signTransaction:ff,transfer:J,validateAddress:m}}var If,_,$;var a=Z(()=>{Gf();h();s();If=require("@near-js/providers"),_=require("@swapkit/helpers"),$=require("ts-pattern")});var Qf=Z(()=>{a()});var hf={};Pf(hf,{validateNearAddress:()=>m,tgasToGas:()=>uf,isSimpleTransfer:()=>o,isCustomEstimator:()=>d,isContractDeployment:()=>t,isContractCall:()=>p,isBatchTransaction:()=>l,isAccountCreation:()=>n,getNearToolbox:()=>Kf,getNearSignerFromPrivateKey:()=>K,getNearSignerFromPhrase:()=>S,getFullAccessPublicKey:()=>P,getContractMethodGas:()=>r,gasToTGas:()=>vf,estimateBatchGas:()=>i,createNearContract:()=>c,GAS_COSTS:()=>q});module.exports=jf(hf);var of=Z(()=>{h();s();a();Qf()});of();
1
+ var bf=Object.create;var{getPrototypeOf:jf,defineProperty:w,getOwnPropertyNames:Yf,getOwnPropertyDescriptor:kf}=Object,Af=Object.prototype.hasOwnProperty;function Df(N){return this[N]}var Vf,Pf,Sf=(N,x,_)=>{var L=N!=null&&typeof N==="object";if(L){var D=x?Vf??=new WeakMap:Pf??=new WeakMap,q=D.get(N);if(q)return q}_=N!=null?bf(jf(N)):{};let B=x||!N||!N.__esModule?w(_,"default",{value:N,enumerable:!0}):_;for(let Q of Yf(N))if(!Af.call(B,Q))w(B,Q,{get:Df.bind(N,Q),enumerable:!0});if(L)D.set(N,B);return B},yf=(N)=>{var x=(Lf??=new WeakMap).get(N),_;if(x)return x;if(x=w({},"__esModule",{value:!0}),N&&typeof N==="object"||typeof N==="function"){for(var L of Yf(N))if(!Af.call(x,L))w(x,L,{get:Df.bind(N,L),enumerable:!(_=kf(N,L))||_.enumerable})}return Lf.set(N,x),x},Lf;var vf=(N)=>N;function gf(N,x){this[N]=vf.bind(null,x)}var hf=(N,x)=>{for(var _ in x)w(N,_,{get:x[_],enumerable:!0,configurable:!0,set:gf.bind(x,_)})};var $=(N,x)=>()=>(N&&(x=N(N=0)),x);function b(N){return N.length>=2&&N.length<=64&&/^(([a-z\d]+[-_])*[a-z\d]+\.)*([a-z\d]+[-_])*[a-z\d]+$/.test(N)}async function S(N){let{KeyPair:x}=await import("@near-js/crypto"),_=N.index||0,L=N.derivationPath?P.derivationPathToString(N.derivationPath.slice(0,3)):`m/44'/397'/${_}'`,{secretKey:D}=qf.parseSeedPhrase(N.phrase,L),q=x.fromString(D);return Uf(q)}async function K(N){let{KeyPair:x}=await import("@near-js/crypto"),_=x.fromString(N);return Uf(_)}function Uf(N){return new Bf(N)}async function y(N,x){let L=(await N.query({account_id:x,finality:"final",request_type:"view_access_key_list"})).keys.find((Q)=>Q.access_key.permission==="FullAccess");if(!L)throw new P.SwapKitError("toolbox_near_no_public_key_found");let{PublicKey:D}=await import("@near-js/crypto"),q=D.fromString(L.public_key);return{nonce:L.access_key.nonce||0,publicKey:q}}var If,P,qf,Bf;var p=$(()=>{If=require("@near-js/signers"),P=require("@swapkit/helpers"),qf=Sf(require("near-seed-phrase"));Bf=class Bf extends If.KeyPairSigner{#f;constructor(N){super(N);this.#f=N}getAddress(){let N=this.#f.getPublicKey(),x=Buffer.from(N.data).toString("hex");return Promise.resolve(x)}}});function o(N){return"recipient"in N&&"amount"in N&&!("contractId"in N)}function l(N){return"contractId"in N&&"methodName"in N}function n(N){return"actions"in N}function d(N){return"newAccountId"in N}function i(N){return"contractCode"in N}function t(N){return"customEstimator"in N}function s(N){let x=0;for(let _ of N)switch(_.enum){case"transfer":x+=Number(I.SIMPLE_TRANSFER);break;case"functionCall":x+=Number(I.CONTRACT_CALL);break;case"createAccount":x+=Number(I.ACCOUNT_CREATION);break;case"deployContract":x+=Number(I.CONTRACT_DEPLOYMENT);break;case"addKey":x+=Number(I.ACCESS_KEY_ADDITION);break;case"deleteKey":x+=Number(I.ACCESS_KEY_DELETION);break;case"stake":x+=Number(I.STAKE);break;default:x+=Number(I.CONTRACT_CALL)}return x.toString()}function c(N){if(N==="ft_transfer"||N==="ft_transfer_call")return I.TOKEN_TRANSFER;if(N==="storage_deposit")return I.STORAGE_DEPOSIT;return I.CONTRACT_CALL}function uf(N){return(BigInt(N)*BigInt(1000000000000)).toString()}function Kf(N){return(BigInt(N)/BigInt(1000000000000)).toString()}var I;var r=$(()=>{I={ACCESS_KEY_ADDITION:"5",ACCESS_KEY_DELETION:"5",ACCOUNT_CREATION:"30",CONTRACT_CALL:"150",CONTRACT_DEPLOYMENT:"200",SIMPLE_TRANSFER:"1",STAKE:"10",STORAGE_DEPOSIT:"150",TOKEN_TRANSFER:"150"}});async function e({account:N,contractId:x,viewMethods:_,changeMethods:L}){let{Contract:D}=await import("@near-js/accounts");return new D(N,x,{changeMethods:L,useLocalViewExecution:!0,viewMethods:_})}function rf(){function N(){let x=Date.now(),_=a||x;return a=_,x>a?x:_+1}return pf+N().toString(36)}function Qf(N){return async function(_,L=!0){let D=await Gf.SwapKitApi.getChainBalance({address:_,chain:N,scamFilter:L}),{baseDecimal:q}=j.getChainConfig(N),B=D.map(({identifier:M,value:k,decimal:v})=>{return new j.AssetValue({decimal:v||q,identifier:M,value:k})});if(!B.some((M)=>M.isGasAsset))return[j.AssetValue.from({chain:N}),...B];return B}}var j,Gf,pf,a=0;var Wf=$(()=>{j=require("@swapkit/helpers"),Gf=require("@swapkit/helpers/api"),pf=typeof process<"u"&&process.pid?process.pid.toString(36):""});function of(N){let x;async function _(){if(x)return x;return x=await J.match(N).with({phrase:J.P.string},async(f)=>{return await S(f)}).with({signer:J.P.any},({signer:f})=>f).otherwise(()=>{return}),x}async function L(){let f=await C.getRPCUrl(C.Chain.Near);return new Xf.JsonRpcProvider({url:f})}async function D(f){let{Account:T}=await import("@near-js/accounts"),O=await L(),R=await _(),E=f||await q();return new T(E,O,R)}async function q(){let f=await _();if(!f)throw new C.SwapKitError("toolbox_near_no_signer");return await f.getAddress()}async function B(f){return(await _f({changeMethods:[],contractId:f.contractId,viewMethods:["storage_balance_of"]})).storage_balance_of({account_id:f.accountId})}async function Q(f){let O=[await h({args:{account_id:f.recipient},attachedDeposit:"1250000000000000000000",gas:"150000000000000",methodName:"storage_deposit"}),await h({args:{amount:f.assetValue.getBaseValue("string"),memo:f.memo||null,receiver_id:f.recipient},attachedDeposit:"1",gas:"150000000000000",methodName:"ft_transfer"})];return Ef({actions:O,receiverId:f.contractId})}async function M(f){if(!await _())throw new C.SwapKitError("toolbox_near_no_signer");let{assetValue:O,recipient:R,memo:E}=f,Y=await q();if(!O.isGasAsset&&O.address){if(!await B({accountId:R,contractId:O.address}))return Q({assetValue:O,contractId:O.address,memo:E,recipient:R})}let A=await k({...f,sender:Y});return Of(A)}async function k({recipient:f,assetValue:T,memo:O,attachedDeposit:R,sender:E,functionCall:Y}){let A=await L();if(!b(f))throw new C.SwapKitError("toolbox_near_invalid_address",{recipient:f});if(!b(E))throw new C.SwapKitError("toolbox_near_invalid_address",{sender:E});if(Y)return g({...Y,sender:E});if(!T.isGasAsset){let Cf=T.address;if(!Cf)throw new C.SwapKitError("toolbox_near_missing_contract_address");return g({args:{amount:T.getBaseValue("string"),memo:O||null,receiver_id:f},attachedDeposit:R||"1",contractId:Cf,gas:"250000000000000",methodName:"ft_transfer",sender:E})}let{publicKey:U,nonce:G}=await y(A,E),W=T.getBaseValue("bigint"),{actionCreators:X,createTransaction:z}=await import("@near-js/transactions"),{baseDecode:F}=await import("@near-js/utils"),m=[X.transfer(W)];if(O&&R)m.push(X.functionCall("memo",{memo:O},BigInt("250000000000000"),BigInt(R)));let H=await A.block({finality:"final"}),Rf=F(H.header.hash);return z(E,U,f,G+1,m,Rf)}function v(f){let T=f.encode();return Buffer.from(T).toString("base64")}async function g({args:f,attachedDeposit:T,contractId:O,gas:R,methodName:E,sender:Y}){let A=await L(),{publicKey:U,nonce:G}=await y(A,Y),{createTransaction:W,actionCreators:X}=await import("@near-js/transactions"),{baseDecode:z}=await import("@near-js/utils"),F=await A.block({finality:"final"}),m=z(F.header.hash),H=[X.functionCall(E,Buffer.from(JSON.stringify(f)),BigInt(R),BigInt(T))];return W(Y,U,O,G+1,H,m)}async function h(f){let{actionCreators:T}=await import("@near-js/transactions");return T.functionCall(f.methodName,Buffer.from(JSON.stringify(f.args)),BigInt(f.gas),BigInt(f.attachedDeposit))}async function Nf(f){let T=await _();if(!T)throw new C.SwapKitError("toolbox_near_no_signer");await $f(f);let[O,R]=await T.signTransaction(f);return R}async function $f(f){let T=f.publicKey;if(T.toString?.().startsWith("ed25519:")||T.toString?.().startsWith("secp256k1:"))return;let{KeyType:O,PublicKey:R}=await import("@near-js/crypto"),E=T.data||T.ed25519Key?.data,Y=T.secp256k1Key?.data;if(E){f.publicKey=new R({data:Uint8Array.from(E),keyType:O.ED25519});return}if(Y)f.publicKey=new R({data:Uint8Array.from(Y),keyType:O.SECP256K1})}function u(f){if(typeof f==="string")return f;if(Array.isArray(f))return f.map(u).find(Boolean);if(!(f&&typeof f==="object"))return;let T=f;return T.transaction?.hash||T.transaction_outcome?.id}function Tf(f){return f instanceof Error?f.message:String(f)}async function xf(f){let O=await(await L()).sendTransaction(f),R=u(O);if(!R)throw new C.SwapKitError("toolbox_near_transfer_failed",{result:O});return R}async function Of(f){let T=await _();if(!T)throw new C.SwapKitError("toolbox_near_no_signer");let O;try{O=await Nf(f)}catch(R){let E;try{E=T.signAndSendTransaction?await T.signAndSendTransaction({actions:f.actions,receiverId:f.receiverId,signerId:f.signerId}):await T.signAndSendTransactions?.({transactions:[f]})}catch(A){throw new C.SwapKitError({errorKey:"toolbox_near_sign_transaction_failed",info:{directSignError:Tf(R),signAndSendError:Tf(A)}},A)}let Y=u(E);if(Y)return Y;throw R}return xf(O)}async function Jf(f){let T=await _();if("assetValue"in f){let R=await Mf();try{let E=await C.getRPCUrl(C.Chain.Near),Y=await fetch(E,{body:JSON.stringify({id:"dontcare",jsonrpc:"2.0",method:"EXPERIMENTAL_protocol_config",params:{finality:"final"}}),headers:{"Content-Type":"application/json"},method:"POST"}),{result:{runtime_config:A}}=await Y.json(),{execution:U,send_sir:G}=A.transaction_costs.action_receipt_creation_config,{execution:W,send_sir:X}=A.transaction_costs.action_creation_config.transfer_cost,z=BigInt(X)+BigInt(W),F=BigInt(G)+BigInt(U),H=(z+F)*BigInt(R.toString());return C.AssetValue.from({chain:C.Chain.Near,value:H})}catch(E){console.debug("NEAR fee estimation (protocol config) failed, using fallback:",E);let Y=BigInt("115123062500"),A=BigInt("108059500000"),G=(Y+A)*BigInt(R.toString());return C.AssetValue.from({chain:C.Chain.Near,value:G})}}let O=T?await D():void 0;return V(f,O)}async function Mf(){let f=await L();try{return await f.query({account_id:"system",args_base64:"",finality:"final",method_name:"gas_price",request_type:"call_function"})}catch{return"100000000"}}async function zf(f,T,O){if(!await _())throw new C.SwapKitError("toolbox_near_no_signer");let E=await D(),{formatNearAmount:Y}=await import("@near-js/utils"),{PublicKey:A}=await import("@near-js/crypto"),U=Y(O)||"0";return(await E.createAccount(f,A.fromString(T),BigInt(U))).transaction.hash}async function Ff(f){let T=await _();try{if(!T)throw new C.SwapKitError("toolbox_near_no_signer");let{actionCreators:O}=await import("@near-js/transactions"),{contractId:R,methodName:E,args:Y,deposit:A}=f,U=await D(),G=await V({args:Y||{},contractId:R,methodName:E}),W=O.functionCall(E,Y||{},G.getBaseValue("bigint"),BigInt(A||"1"));return(await U.signAndSendTransaction({actions:[W],receiverId:R})).transaction_outcome.id}catch(O){throw new C.SwapKitError("toolbox_near_transfer_failed",{error:O})}}async function _f(f){let T=await D();return e({account:T,changeMethods:f.changeMethods,contractId:f.contractId,viewMethods:f.viewMethods})}async function Ef(f){if(!await _())throw new C.SwapKitError("toolbox_near_no_signer");if(f.actions.length===0)throw new C.SwapKitError("toolbox_near_empty_batch");return(await(await D()).signAndSendTransaction({actions:f.actions,receiverId:f.receiverId})).transaction.hash}async function V(f,T){let O=await J.match(f).when(o,()=>I.SIMPLE_TRANSFER).when(l,(E)=>c(E.methodName)).when(n,(E)=>s(E.actions)).when(d,()=>I.ACCOUNT_CREATION).when(i,()=>I.CONTRACT_DEPLOYMENT).when(t,(E)=>{if(!T)throw new C.SwapKitError("toolbox_near_no_account");return E.customEstimator(T)}).otherwise(()=>{throw new C.SwapKitError("toolbox_near_invalid_gas_params")}),R=BigInt(O)*BigInt(1000000000000);return C.AssetValue.from({chain:C.Chain.Near,value:R})}function mf(f,T){return console.warn("NEAR toolbox: estimateGas is deprecated, use estimateGasLimit instead"),V(f,T)}async function Hf(){let f=await L();try{return(await f.gasPrice(null)).gas_price||"100000000"}catch{return"100000000"}}async function wf(){let f=await _();return f?(await f.getPublicKey()).toString():""}return{broadcastTransaction:xf,callFunction:Ff,createAction:h,createContract:_f,createContractFunctionCall:g,createSubAccount:zf,createTransaction:k,estimateGas:mf,estimateGasLimit:V,estimateTransactionFee:Jf,executeBatchTransaction:Ef,getAddress:q,getBalance:Qf(C.Chain.Near),getGasPrice:Hf,getNearProvider:L,getPublicKey:wf,getSignerFromPhrase:S,getSignerFromPrivateKey:K,serializeTransaction:v,signAndBroadcastTransaction:Of,signTransaction:Nf,transfer:M,validateAddress:b}}var Xf,C,J;var ff=$(()=>{Wf();p();r();Xf=require("@near-js/providers"),C=require("@swapkit/helpers"),J=require("ts-pattern")});var Zf=$(()=>{ff()});var lf={};hf(lf,{validateNearAddress:()=>b,tgasToGas:()=>uf,isSimpleTransfer:()=>o,isCustomEstimator:()=>t,isContractDeployment:()=>i,isContractCall:()=>l,isBatchTransaction:()=>n,isAccountCreation:()=>d,getNearToolbox:()=>of,getNearSignerFromPrivateKey:()=>K,getNearSignerFromPhrase:()=>S,getFullAccessPublicKey:()=>y,getContractMethodGas:()=>c,gasToTGas:()=>Kf,estimateBatchGas:()=>s,createNearContract:()=>e,GAS_COSTS:()=>I});module.exports=yf(lf);var nf=$(()=>{p();r();ff();Zf()});nf();
@@ -1 +1 @@
1
- var $f=Object.defineProperty;var Jf=(f)=>f;function zf(f,N){this[f]=Jf.bind(null,N)}var Hf=(f,N)=>{for(var O in N)$f(f,O,{get:N[O],enumerable:!0,configurable:!0,set:zf.bind(N,O)})};var Z=(f,N)=>()=>(f&&(N=f(f=0)),N);var B=((f)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(f,{get:(N,O)=>(typeof require<"u"?require:N)[O]}):f)(function(f){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+f+'" is not supported')});import{KeyPairSigner as bf}from"@near-js/signers";import{derivationPathToString as Ff,SwapKitError as wf}from"@swapkit/helpers";import*as _f from"near-seed-phrase";function w(f){return f.length>=2&&f.length<=64&&/^(([a-z\d]+[-_])*[a-z\d]+\.)*([a-z\d]+[-_])*[a-z\d]+$/.test(f)}async function j(f){let{KeyPair:N}=await import("@near-js/crypto"),O=f.index||0,C=f.derivationPath?Ff(f.derivationPath.slice(0,3)):`m/44'/397'/${O}'`,{secretKey:q}=_f.parseSeedPhrase(f.phrase,C),G=N.fromString(q);return Cf(G)}async function v(f){let{KeyPair:N}=await import("@near-js/crypto"),O=N.fromString(f);return Cf(O)}function Cf(f){return new Rf(f)}async function V(f,N){let C=(await f.query({account_id:N,finality:"final",request_type:"view_access_key_list"})).keys.find((m)=>m.access_key.permission==="FullAccess");if(!C)throw new wf("toolbox_near_no_public_key_found");let{PublicKey:q}=await import("@near-js/crypto"),G=q.fromString(C.public_key);return{nonce:C.access_key.nonce||0,publicKey:G}}var Rf;var g=Z(()=>{Rf=class Rf extends bf{#f;constructor(f){super(f);this.#f=f}getAddress(){let f=this.#f.getPublicKey(),N=Buffer.from(f.data).toString("hex");return Promise.resolve(N)}}});function K(f){return"recipient"in f&&"amount"in f&&!("contractId"in f)}function h(f){return"contractId"in f&&"methodName"in f}function o(f){return"actions"in f}function p(f){return"newAccountId"in f}function l(f){return"contractCode"in f}function n(f){return"customEstimator"in f}function t(f){let N=0;for(let O of f)switch(O.enum){case"transfer":N+=Number(Y.SIMPLE_TRANSFER);break;case"functionCall":N+=Number(Y.CONTRACT_CALL);break;case"createAccount":N+=Number(Y.ACCOUNT_CREATION);break;case"deployContract":N+=Number(Y.CONTRACT_DEPLOYMENT);break;case"addKey":N+=Number(Y.ACCESS_KEY_ADDITION);break;case"deleteKey":N+=Number(Y.ACCESS_KEY_DELETION);break;case"stake":N+=Number(Y.STAKE);break;default:N+=Number(Y.CONTRACT_CALL)}return N.toString()}function d(f){if(f==="ft_transfer"||f==="ft_transfer_call")return Y.TOKEN_TRANSFER;if(f==="storage_deposit")return Y.STORAGE_DEPOSIT;return Y.CONTRACT_CALL}function mf(f){return(BigInt(f)*BigInt(1000000000000)).toString()}function yf(f){return(BigInt(f)/BigInt(1000000000000)).toString()}var Y;var i=Z(()=>{Y={ACCESS_KEY_ADDITION:"5",ACCESS_KEY_DELETION:"5",ACCOUNT_CREATION:"30",CONTRACT_CALL:"150",CONTRACT_DEPLOYMENT:"200",SIMPLE_TRANSFER:"1",STAKE:"10",STORAGE_DEPOSIT:"150",TOKEN_TRANSFER:"150"}});async function r({account:f,contractId:N,viewMethods:O,changeMethods:C}){let{Contract:q}=await import("@near-js/accounts");return new q(f,N,{changeMethods:C,useLocalViewExecution:!0,viewMethods:O})}import{AssetValue as Lf,getChainConfig as kf}from"@swapkit/helpers";import{SwapKitApi as jf}from"@swapkit/helpers/api";function df(){function f(){let N=Date.now(),O=s||N;return s=O,N>s?N:O+1}return Vf+f().toString(36)}function Df(f){return async function(O,C=!0){let q=await jf.getChainBalance({address:O,chain:f,scamFilter:C}),{baseDecimal:G}=kf(f),X=q.map(({identifier:J,value:y,decimal:S})=>{return new Lf({decimal:S||G,identifier:J,value:y})});if(!X.some((J)=>J.isGasAsset))return[Lf.from({chain:f}),...X];return X}}var Vf,s=0;var Yf=Z(()=>{Vf=typeof process<"u"&&process.pid?process.pid.toString(36):""});import{JsonRpcProvider as Sf}from"@near-js/providers";import{AssetValue as c,Chain as $,getRPCUrl as Af,SwapKitError as A}from"@swapkit/helpers";import{match as qf,P as Bf}from"ts-pattern";function Pf(f){let N;async function O(){if(N)return N;return N=await qf(f).with({phrase:Bf.string},async(T)=>{return await j(T)}).with({signer:Bf.any},({signer:T})=>T).otherwise(()=>{return}),N}async function C(){let T=await Af($.Near);return new Sf({url:T})}async function q(T){let{Account:x}=await import("@near-js/accounts"),E=await C(),R=await O(),_=T||await G();return new x(_,E,R)}async function G(){let T=await O();if(!T)throw new A("toolbox_near_no_signer");return await T.getAddress()}async function X(T){return(await Nf({changeMethods:[],contractId:T.contractId,viewMethods:["storage_balance_of"]})).storage_balance_of({account_id:T.accountId})}async function m(T){let E=[await u({args:{account_id:T.recipient},attachedDeposit:"1250000000000000000000",gas:"150000000000000",methodName:"storage_deposit"}),await u({args:{amount:T.assetValue.getBaseValue("string"),memo:T.memo||null,receiver_id:T.recipient},attachedDeposit:"1",gas:"150000000000000",methodName:"ft_transfer"})];return xf({actions:E,receiverId:T.contractId})}async function J(T){if(!await O())throw new A("toolbox_near_no_signer");let{assetValue:E,recipient:R,memo:_}=T,L=await G();if(!E.isGasAsset&&E.address){if(!await X({accountId:R,contractId:E.address}))return m({assetValue:E,contractId:E.address,memo:_,recipient:R})}let D=await y({...T,sender:L});return Tf(D)}async function y({recipient:T,assetValue:x,memo:E,attachedDeposit:R,sender:_,functionCall:L}){let D=await C();if(!w(T))throw new A("toolbox_near_invalid_address",{recipient:T});if(!w(_))throw new A("toolbox_near_invalid_address",{sender:_});if(L)return P({...L,sender:_});if(!x.isGasAsset){let Of=x.address;if(!Of)throw new A("toolbox_near_missing_contract_address");return P({args:{amount:x.getBaseValue("string"),memo:E||null,receiver_id:T},attachedDeposit:R||"1",contractId:Of,gas:"250000000000000",methodName:"ft_transfer",sender:_})}let{publicKey:M,nonce:U}=await V(D,_),I=x.getBaseValue("bigint"),{actionCreators:Q,createTransaction:z}=await import("@near-js/transactions"),{baseDecode:H}=await import("@near-js/utils"),b=[Q.transfer(I)];if(E&&R)b.push(Q.functionCall("memo",{memo:E},BigInt("250000000000000"),BigInt(R)));let F=await D.block({finality:"final"}),Ef=H(F.header.hash);return z(_,M,T,U+1,b,Ef)}function S(T){let x=T.encode();return Buffer.from(x).toString("base64")}async function P({args:T,attachedDeposit:x,contractId:E,gas:R,methodName:_,sender:L}){let D=await C(),{publicKey:M,nonce:U}=await V(D,L),{createTransaction:I,actionCreators:Q}=await import("@near-js/transactions"),{baseDecode:z}=await import("@near-js/utils"),H=await D.block({finality:"final"}),b=z(H.header.hash),F=[Q.functionCall(_,Buffer.from(JSON.stringify(T)),BigInt(R),BigInt(x))];return I(L,M,E,U+1,F,b)}async function u(T){let{actionCreators:x}=await import("@near-js/transactions");return x.functionCall(T.methodName,Buffer.from(JSON.stringify(T.args)),BigInt(T.gas),BigInt(T.attachedDeposit))}async function a(T){let x=await O();if(!x)throw new A("toolbox_near_no_signer");let[E,R]=await x.signTransaction(T);return R}async function ff(T){return(await(await C()).sendTransaction(T)).transaction.hash}async function Tf(T){let x=await O();if(!x)throw new A("toolbox_near_no_signer");try{let E=await a(T);return await ff(E)}catch{return x.signAndSendTransactions?.({transactions:[T]})}}async function Uf(T){let x=await O();if("assetValue"in T){let R=await Gf();try{let _=await Af($.Near),L=await fetch(_,{body:JSON.stringify({id:"dontcare",jsonrpc:"2.0",method:"EXPERIMENTAL_protocol_config",params:{finality:"final"}}),headers:{"Content-Type":"application/json"},method:"POST"}),{result:{runtime_config:D}}=await L.json(),{execution:M,send_sir:U}=D.transaction_costs.action_receipt_creation_config,{execution:I,send_sir:Q}=D.transaction_costs.action_creation_config.transfer_cost,z=BigInt(Q)+BigInt(I),H=BigInt(U)+BigInt(M),F=(z+H)*BigInt(R.toString());return c.from({chain:$.Near,value:F})}catch(_){console.debug("NEAR fee estimation (protocol config) failed, using fallback:",_);let L=BigInt("115123062500"),D=BigInt("108059500000"),U=(L+D)*BigInt(R.toString());return c.from({chain:$.Near,value:U})}}let E=x?await q():void 0;return k(T,E)}async function Gf(){let T=await C();try{return await T.query({account_id:"system",args_base64:"",finality:"final",method_name:"gas_price",request_type:"call_function"})}catch{return"100000000"}}async function If(T,x,E){if(!await O())throw new A("toolbox_near_no_signer");let _=await q(),{formatNearAmount:L}=await import("@near-js/utils"),{PublicKey:D}=await import("@near-js/crypto"),M=L(E)||"0";return(await _.createAccount(T,D.fromString(x),BigInt(M))).transaction.hash}async function Qf(T){let x=await O();try{if(!x)throw new A("toolbox_near_no_signer");let{actionCreators:E}=await import("@near-js/transactions"),{contractId:R,methodName:_,args:L,deposit:D}=T,M=await q(),U=await k({args:L||{},contractId:R,methodName:_}),I=E.functionCall(_,L||{},U.getBaseValue("bigint"),BigInt(D||"1"));return(await M.signAndSendTransaction({actions:[I],receiverId:R})).transaction_outcome.id}catch(E){throw new A("toolbox_near_transfer_failed",{error:E})}}async function Nf(T){let x=await q();return r({account:x,changeMethods:T.changeMethods,contractId:T.contractId,viewMethods:T.viewMethods})}async function xf(T){if(!await O())throw new A("toolbox_near_no_signer");if(T.actions.length===0)throw new A("toolbox_near_empty_batch");return(await(await q()).signAndSendTransaction({actions:T.actions,receiverId:T.receiverId})).transaction.hash}async function k(T,x){let E=await qf(T).when(K,()=>Y.SIMPLE_TRANSFER).when(h,(_)=>d(_.methodName)).when(o,(_)=>t(_.actions)).when(p,()=>Y.ACCOUNT_CREATION).when(l,()=>Y.CONTRACT_DEPLOYMENT).when(n,(_)=>{if(!x)throw new A("toolbox_near_no_account");return _.customEstimator(x)}).otherwise(()=>{throw new A("toolbox_near_invalid_gas_params")}),R=BigInt(E)*BigInt(1000000000000);return c.from({chain:$.Near,value:R})}function Wf(T,x){return console.warn("NEAR toolbox: estimateGas is deprecated, use estimateGasLimit instead"),k(T,x)}async function Xf(){let T=await C();try{return(await T.gasPrice(null)).gas_price||"100000000"}catch{return"100000000"}}async function Zf(){let T=await O();return T?(await T.getPublicKey()).toString():""}return{broadcastTransaction:ff,callFunction:Qf,createAction:u,createContract:Nf,createContractFunctionCall:P,createSubAccount:If,createTransaction:y,estimateGas:Wf,estimateGasLimit:k,estimateTransactionFee:Uf,executeBatchTransaction:xf,getAddress:G,getBalance:Df($.Near),getGasPrice:Xf,getNearProvider:C,getPublicKey:Zf,getSignerFromPhrase:j,getSignerFromPrivateKey:v,serializeTransaction:S,signAndBroadcastTransaction:Tf,signTransaction:a,transfer:J,validateAddress:w}}var e=Z(()=>{Yf();g();i()});var Mf=Z(()=>{e()});var uf={};Hf(uf,{validateNearAddress:()=>w,tgasToGas:()=>mf,isSimpleTransfer:()=>K,isCustomEstimator:()=>n,isContractDeployment:()=>l,isContractCall:()=>h,isBatchTransaction:()=>o,isAccountCreation:()=>p,getNearToolbox:()=>Pf,getNearSignerFromPrivateKey:()=>v,getNearSignerFromPhrase:()=>j,getFullAccessPublicKey:()=>V,getContractMethodGas:()=>d,gasToTGas:()=>yf,estimateBatchGas:()=>t,createNearContract:()=>r,GAS_COSTS:()=>Y});var vf=Z(()=>{g();i();e();Mf()});vf();export{w as validateNearAddress,mf as tgasToGas,K as isSimpleTransfer,n as isCustomEstimator,l as isContractDeployment,h as isContractCall,o as isBatchTransaction,p as isAccountCreation,Pf as getNearToolbox,v as getNearSignerFromPrivateKey,j as getNearSignerFromPhrase,V as getFullAccessPublicKey,d as getContractMethodGas,yf as gasToTGas,t as estimateBatchGas,r as createNearContract,Y as GAS_COSTS};
1
+ var Ff=Object.defineProperty;var mf=(N)=>N;function Hf(N,x){this[N]=mf.bind(null,x)}var wf=(N,x)=>{for(var R in x)Ff(N,R,{get:x[R],enumerable:!0,configurable:!0,set:Hf.bind(x,R)})};var $=(N,x)=>()=>(N&&(x=N(N=0)),x);var I=((N)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(N,{get:(x,R)=>(typeof require<"u"?require:x)[R]}):N)(function(N){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+N+'" is not supported')});import{KeyPairSigner as bf}from"@near-js/signers";import{derivationPathToString as jf,SwapKitError as kf}from"@swapkit/helpers";import*as Cf from"near-seed-phrase";function w(N){return N.length>=2&&N.length<=64&&/^(([a-z\d]+[-_])*[a-z\d]+\.)*([a-z\d]+[-_])*[a-z\d]+$/.test(N)}async function V(N){let{KeyPair:x}=await import("@near-js/crypto"),R=N.index||0,Y=N.derivationPath?jf(N.derivationPath.slice(0,3)):`m/44'/397'/${R}'`,{secretKey:q}=Cf.parseSeedPhrase(N.phrase,Y),G=x.fromString(q);return Yf(G)}async function h(N){let{KeyPair:x}=await import("@near-js/crypto"),R=x.fromString(N);return Yf(R)}function Yf(N){return new Lf(N)}async function P(N,x){let Y=(await N.query({account_id:x,finality:"final",request_type:"view_access_key_list"})).keys.find((b)=>b.access_key.permission==="FullAccess");if(!Y)throw new kf("toolbox_near_no_public_key_found");let{PublicKey:q}=await import("@near-js/crypto"),G=q.fromString(Y.public_key);return{nonce:Y.access_key.nonce||0,publicKey:G}}var Lf;var u=$(()=>{Lf=class Lf extends bf{#f;constructor(N){super(N);this.#f=N}getAddress(){let N=this.#f.getPublicKey(),x=Buffer.from(N.data).toString("hex");return Promise.resolve(x)}}});function K(N){return"recipient"in N&&"amount"in N&&!("contractId"in N)}function p(N){return"contractId"in N&&"methodName"in N}function o(N){return"actions"in N}function l(N){return"newAccountId"in N}function n(N){return"contractCode"in N}function d(N){return"customEstimator"in N}function i(N){let x=0;for(let R of N)switch(R.enum){case"transfer":x+=Number(A.SIMPLE_TRANSFER);break;case"functionCall":x+=Number(A.CONTRACT_CALL);break;case"createAccount":x+=Number(A.ACCOUNT_CREATION);break;case"deployContract":x+=Number(A.CONTRACT_DEPLOYMENT);break;case"addKey":x+=Number(A.ACCESS_KEY_ADDITION);break;case"deleteKey":x+=Number(A.ACCESS_KEY_DELETION);break;case"stake":x+=Number(A.STAKE);break;default:x+=Number(A.CONTRACT_CALL)}return x.toString()}function t(N){if(N==="ft_transfer"||N==="ft_transfer_call")return A.TOKEN_TRANSFER;if(N==="storage_deposit")return A.STORAGE_DEPOSIT;return A.CONTRACT_CALL}function Vf(N){return(BigInt(N)*BigInt(1000000000000)).toString()}function Pf(N){return(BigInt(N)/BigInt(1000000000000)).toString()}var A;var s=$(()=>{A={ACCESS_KEY_ADDITION:"5",ACCESS_KEY_DELETION:"5",ACCOUNT_CREATION:"30",CONTRACT_CALL:"150",CONTRACT_DEPLOYMENT:"200",SIMPLE_TRANSFER:"1",STAKE:"10",STORAGE_DEPOSIT:"150",TOKEN_TRANSFER:"150"}});async function c({account:N,contractId:x,viewMethods:R,changeMethods:Y}){let{Contract:q}=await import("@near-js/accounts");return new q(N,x,{changeMethods:Y,useLocalViewExecution:!0,viewMethods:R})}import{AssetValue as Af,getChainConfig as Sf}from"@swapkit/helpers";import{SwapKitApi as yf}from"@swapkit/helpers/api";function rf(){function N(){let x=Date.now(),R=r||x;return r=R,x>r?x:R+1}return vf+N().toString(36)}function Df(N){return async function(R,Y=!0){let q=await yf.getChainBalance({address:R,chain:N,scamFilter:Y}),{baseDecimal:G}=Sf(N),Z=q.map(({identifier:M,value:j,decimal:S})=>{return new Af({decimal:S||G,identifier:M,value:j})});if(!Z.some((M)=>M.isGasAsset))return[Af.from({chain:N}),...Z];return Z}}var vf,r=0;var If=$(()=>{vf=typeof process<"u"&&process.pid?process.pid.toString(36):""});import{JsonRpcProvider as gf}from"@near-js/providers";import{AssetValue as e,Chain as J,getRPCUrl as qf,SwapKitError as D}from"@swapkit/helpers";import{match as Bf,P as Uf}from"ts-pattern";function hf(N){let x;async function R(){if(x)return x;return x=await Bf(N).with({phrase:Uf.string},async(f)=>{return await V(f)}).with({signer:Uf.any},({signer:f})=>f).otherwise(()=>{return}),x}async function Y(){let f=await qf(J.Near);return new gf({url:f})}async function q(f){let{Account:T}=await import("@near-js/accounts"),O=await Y(),E=await R(),_=f||await G();return new T(_,O,E)}async function G(){let f=await R();if(!f)throw new D("toolbox_near_no_signer");return await f.getAddress()}async function Z(f){return(await Of({changeMethods:[],contractId:f.contractId,viewMethods:["storage_balance_of"]})).storage_balance_of({account_id:f.accountId})}async function b(f){let O=[await v({args:{account_id:f.recipient},attachedDeposit:"1250000000000000000000",gas:"150000000000000",methodName:"storage_deposit"}),await v({args:{amount:f.assetValue.getBaseValue("string"),memo:f.memo||null,receiver_id:f.recipient},attachedDeposit:"1",gas:"150000000000000",methodName:"ft_transfer"})];return _f({actions:O,receiverId:f.contractId})}async function M(f){if(!await R())throw new D("toolbox_near_no_signer");let{assetValue:O,recipient:E,memo:_}=f,C=await G();if(!O.isGasAsset&&O.address){if(!await Z({accountId:E,contractId:O.address}))return b({assetValue:O,contractId:O.address,memo:_,recipient:E})}let L=await j({...f,sender:C});return xf(L)}async function j({recipient:f,assetValue:T,memo:O,attachedDeposit:E,sender:_,functionCall:C}){let L=await Y();if(!w(f))throw new D("toolbox_near_invalid_address",{recipient:f});if(!w(_))throw new D("toolbox_near_invalid_address",{sender:_});if(C)return y({...C,sender:_});if(!T.isGasAsset){let Rf=T.address;if(!Rf)throw new D("toolbox_near_missing_contract_address");return y({args:{amount:T.getBaseValue("string"),memo:O||null,receiver_id:f},attachedDeposit:E||"1",contractId:Rf,gas:"250000000000000",methodName:"ft_transfer",sender:_})}let{publicKey:B,nonce:U}=await P(L,_),Q=T.getBaseValue("bigint"),{actionCreators:W,createTransaction:z}=await import("@near-js/transactions"),{baseDecode:F}=await import("@near-js/utils"),m=[W.transfer(Q)];if(O&&E)m.push(W.functionCall("memo",{memo:O},BigInt("250000000000000"),BigInt(E)));let H=await L.block({finality:"final"}),Ef=F(H.header.hash);return z(_,B,f,U+1,m,Ef)}function S(f){let T=f.encode();return Buffer.from(T).toString("base64")}async function y({args:f,attachedDeposit:T,contractId:O,gas:E,methodName:_,sender:C}){let L=await Y(),{publicKey:B,nonce:U}=await P(L,C),{createTransaction:Q,actionCreators:W}=await import("@near-js/transactions"),{baseDecode:z}=await import("@near-js/utils"),F=await L.block({finality:"final"}),m=z(F.header.hash),H=[W.functionCall(_,Buffer.from(JSON.stringify(f)),BigInt(E),BigInt(T))];return Q(C,B,O,U+1,H,m)}async function v(f){let{actionCreators:T}=await import("@near-js/transactions");return T.functionCall(f.methodName,Buffer.from(JSON.stringify(f.args)),BigInt(f.gas),BigInt(f.attachedDeposit))}async function ff(f){let T=await R();if(!T)throw new D("toolbox_near_no_signer");await Qf(f);let[O,E]=await T.signTransaction(f);return E}async function Qf(f){let T=f.publicKey;if(T.toString?.().startsWith("ed25519:")||T.toString?.().startsWith("secp256k1:"))return;let{KeyType:O,PublicKey:E}=await import("@near-js/crypto"),_=T.data||T.ed25519Key?.data,C=T.secp256k1Key?.data;if(_){f.publicKey=new E({data:Uint8Array.from(_),keyType:O.ED25519});return}if(C)f.publicKey=new E({data:Uint8Array.from(C),keyType:O.SECP256K1})}function g(f){if(typeof f==="string")return f;if(Array.isArray(f))return f.map(g).find(Boolean);if(!(f&&typeof f==="object"))return;let T=f;return T.transaction?.hash||T.transaction_outcome?.id}function Nf(f){return f instanceof Error?f.message:String(f)}async function Tf(f){let O=await(await Y()).sendTransaction(f),E=g(O);if(!E)throw new D("toolbox_near_transfer_failed",{result:O});return E}async function xf(f){let T=await R();if(!T)throw new D("toolbox_near_no_signer");let O;try{O=await ff(f)}catch(E){let _;try{_=T.signAndSendTransaction?await T.signAndSendTransaction({actions:f.actions,receiverId:f.receiverId,signerId:f.signerId}):await T.signAndSendTransactions?.({transactions:[f]})}catch(L){throw new D({errorKey:"toolbox_near_sign_transaction_failed",info:{directSignError:Nf(E),signAndSendError:Nf(L)}},L)}let C=g(_);if(C)return C;throw E}return Tf(O)}async function Wf(f){let T=await R();if("assetValue"in f){let E=await Xf();try{let _=await qf(J.Near),C=await fetch(_,{body:JSON.stringify({id:"dontcare",jsonrpc:"2.0",method:"EXPERIMENTAL_protocol_config",params:{finality:"final"}}),headers:{"Content-Type":"application/json"},method:"POST"}),{result:{runtime_config:L}}=await C.json(),{execution:B,send_sir:U}=L.transaction_costs.action_receipt_creation_config,{execution:Q,send_sir:W}=L.transaction_costs.action_creation_config.transfer_cost,z=BigInt(W)+BigInt(Q),F=BigInt(U)+BigInt(B),H=(z+F)*BigInt(E.toString());return e.from({chain:J.Near,value:H})}catch(_){console.debug("NEAR fee estimation (protocol config) failed, using fallback:",_);let C=BigInt("115123062500"),L=BigInt("108059500000"),U=(C+L)*BigInt(E.toString());return e.from({chain:J.Near,value:U})}}let O=T?await q():void 0;return k(f,O)}async function Xf(){let f=await Y();try{return await f.query({account_id:"system",args_base64:"",finality:"final",method_name:"gas_price",request_type:"call_function"})}catch{return"100000000"}}async function Zf(f,T,O){if(!await R())throw new D("toolbox_near_no_signer");let _=await q(),{formatNearAmount:C}=await import("@near-js/utils"),{PublicKey:L}=await import("@near-js/crypto"),B=C(O)||"0";return(await _.createAccount(f,L.fromString(T),BigInt(B))).transaction.hash}async function $f(f){let T=await R();try{if(!T)throw new D("toolbox_near_no_signer");let{actionCreators:O}=await import("@near-js/transactions"),{contractId:E,methodName:_,args:C,deposit:L}=f,B=await q(),U=await k({args:C||{},contractId:E,methodName:_}),Q=O.functionCall(_,C||{},U.getBaseValue("bigint"),BigInt(L||"1"));return(await B.signAndSendTransaction({actions:[Q],receiverId:E})).transaction_outcome.id}catch(O){throw new D("toolbox_near_transfer_failed",{error:O})}}async function Of(f){let T=await q();return c({account:T,changeMethods:f.changeMethods,contractId:f.contractId,viewMethods:f.viewMethods})}async function _f(f){if(!await R())throw new D("toolbox_near_no_signer");if(f.actions.length===0)throw new D("toolbox_near_empty_batch");return(await(await q()).signAndSendTransaction({actions:f.actions,receiverId:f.receiverId})).transaction.hash}async function k(f,T){let O=await Bf(f).when(K,()=>A.SIMPLE_TRANSFER).when(p,(_)=>t(_.methodName)).when(o,(_)=>i(_.actions)).when(l,()=>A.ACCOUNT_CREATION).when(n,()=>A.CONTRACT_DEPLOYMENT).when(d,(_)=>{if(!T)throw new D("toolbox_near_no_account");return _.customEstimator(T)}).otherwise(()=>{throw new D("toolbox_near_invalid_gas_params")}),E=BigInt(O)*BigInt(1000000000000);return e.from({chain:J.Near,value:E})}function Jf(f,T){return console.warn("NEAR toolbox: estimateGas is deprecated, use estimateGasLimit instead"),k(f,T)}async function Mf(){let f=await Y();try{return(await f.gasPrice(null)).gas_price||"100000000"}catch{return"100000000"}}async function zf(){let f=await R();return f?(await f.getPublicKey()).toString():""}return{broadcastTransaction:Tf,callFunction:$f,createAction:v,createContract:Of,createContractFunctionCall:y,createSubAccount:Zf,createTransaction:j,estimateGas:Jf,estimateGasLimit:k,estimateTransactionFee:Wf,executeBatchTransaction:_f,getAddress:G,getBalance:Df(J.Near),getGasPrice:Mf,getNearProvider:Y,getPublicKey:zf,getSignerFromPhrase:V,getSignerFromPrivateKey:h,serializeTransaction:S,signAndBroadcastTransaction:xf,signTransaction:ff,transfer:M,validateAddress:w}}var a=$(()=>{If();u();s()});var Gf=$(()=>{a()});var uf={};wf(uf,{validateNearAddress:()=>w,tgasToGas:()=>Vf,isSimpleTransfer:()=>K,isCustomEstimator:()=>d,isContractDeployment:()=>n,isContractCall:()=>p,isBatchTransaction:()=>o,isAccountCreation:()=>l,getNearToolbox:()=>hf,getNearSignerFromPrivateKey:()=>h,getNearSignerFromPhrase:()=>V,getFullAccessPublicKey:()=>P,getContractMethodGas:()=>t,gasToTGas:()=>Pf,estimateBatchGas:()=>i,createNearContract:()=>c,GAS_COSTS:()=>A});var Kf=$(()=>{u();s();a();Gf()});Kf();export{w as validateNearAddress,Vf as tgasToGas,K as isSimpleTransfer,d as isCustomEstimator,n as isContractDeployment,p as isContractCall,o as isBatchTransaction,l as isAccountCreation,hf as getNearToolbox,h as getNearSignerFromPrivateKey,V as getNearSignerFromPhrase,P as getFullAccessPublicKey,t as getContractMethodGas,Pf as gasToTGas,i as estimateBatchGas,c as createNearContract,A as GAS_COSTS};
@@ -7,7 +7,7 @@ import type { NearCreateTransactionParams, NearFunctionCallParams, NearToolboxPa
7
7
  import type { NearContractInterface, NearGasEstimateParams } from "./types/contract";
8
8
  import type { BatchTransaction, ContractFunctionCallParams, CreateActionParams } from "./types/toolbox";
9
9
  export declare function getNearToolbox(toolboxParams?: NearToolboxParams): {
10
- broadcastTransaction: (signedTransaction: SignedTransaction) => Promise<any>;
10
+ broadcastTransaction: (signedTransaction: SignedTransaction) => Promise<string>;
11
11
  callFunction: (params: NearFunctionCallParams) => Promise<string>;
12
12
  createAction: (params: CreateActionParams) => Promise<import("@near-js/transactions").Action>;
13
13
  createContract: <T extends Contract = Contract>(contractInterface: NearContractInterface) => Promise<T>;
@@ -27,8 +27,8 @@ export declare function getNearToolbox(toolboxParams?: NearToolboxParams): {
27
27
  getSignerFromPhrase: typeof getNearSignerFromPhrase;
28
28
  getSignerFromPrivateKey: typeof getNearSignerFromPrivateKey;
29
29
  serializeTransaction: (transaction: Transaction) => string;
30
- signAndBroadcastTransaction: (transaction: Transaction) => Promise<any>;
30
+ signAndBroadcastTransaction: (transaction: Transaction) => Promise<string>;
31
31
  signTransaction: (transaction: Transaction) => Promise<SignedTransaction>;
32
- transfer: (params: NearTransferParams) => Promise<any>;
32
+ transfer: (params: NearTransferParams) => Promise<string>;
33
33
  validateAddress: typeof validateNearAddress;
34
34
  };
@@ -2,7 +2,6 @@ import type { Account, Contract } from "@near-js/accounts";
2
2
  import type { JsonRpcProvider } from "@near-js/providers";
3
3
  import type { Action, SignedTransaction, Transaction } from "@near-js/transactions";
4
4
  import type { AssetValue, DerivationPathArray } from "@swapkit/helpers";
5
- import type { NEP141Token } from "../helpers/nep141";
6
5
  import type { NearCreateTransactionParams, NearFunctionCallParams, NearSigner, NearTransferParams } from "../types";
7
6
  import type { NearContractInterface, NearGasEstimateParams } from "../types/contract";
8
7
  export interface BatchTransaction {
@@ -26,7 +25,7 @@ export interface GetSignerFromPhraseParams {
26
25
  export interface NearToolbox {
27
26
  getAddress: () => Promise<string>;
28
27
  getPublicKey: () => Promise<string>;
29
- provider: typeof JsonRpcProvider;
28
+ getNearProvider: () => Promise<JsonRpcProvider>;
30
29
  transfer: (params: NearTransferParams) => Promise<string>;
31
30
  createAction: (params: CreateActionParams) => Promise<Action>;
32
31
  createTransaction: (params: NearCreateTransactionParams) => Promise<Transaction>;
@@ -34,6 +33,7 @@ export interface NearToolbox {
34
33
  estimateTransactionFee: (params: NearTransferParams | NearGasEstimateParams) => Promise<AssetValue>;
35
34
  broadcastTransaction: (signedTransaction: SignedTransaction) => Promise<string>;
36
35
  signTransaction: (transaction: Transaction) => Promise<SignedTransaction>;
36
+ signAndBroadcastTransaction: (transaction: Transaction) => Promise<string>;
37
37
  getBalance: (address: string) => Promise<AssetValue[]>;
38
38
  validateAddress: (address: string) => boolean;
39
39
  getSignerFromPhrase: (params: GetSignerFromPhraseParams) => Promise<NearSigner>;
@@ -42,11 +42,9 @@ export interface NearToolbox {
42
42
  createSubAccount: (subAccountId: string, publicKey: string, initialBalance: string) => Promise<string>;
43
43
  createContract: <T extends Contract = Contract>(contractInterface: NearContractInterface) => Promise<T>;
44
44
  executeBatchTransaction: (batch: BatchTransaction) => Promise<string>;
45
- nep141: (contractId: string) => Promise<NEP141Token>;
46
45
  getGasPrice: () => Promise<string>;
47
46
  /** @deprecated Use `estimateGasLimit` instead */
48
47
  estimateGas: (params: NearGasEstimateParams, account?: Account) => Promise<AssetValue>;
49
48
  estimateGasLimit: (params: NearGasEstimateParams, account?: Account) => Promise<AssetValue>;
50
- serializeTransaction: (params: Transaction) => Promise<string>;
51
- signAndSendTransaction: (params: Transaction) => Promise<string>;
49
+ serializeTransaction: (params: Transaction) => string;
52
50
  }
@@ -1,10 +1,30 @@
1
1
  import type { Signer } from "@near-js/signers";
2
2
  import type { SignedTransaction, Transaction } from "@near-js/transactions";
3
3
  import type { ChainSigner, DerivationPathArray, GenericCreateTransactionParams, GenericTransferParams } from "@swapkit/helpers";
4
+ type NearExecutionResult = string | {
5
+ transaction?: {
6
+ hash?: string;
7
+ };
8
+ transaction_outcome?: {
9
+ id?: string;
10
+ };
11
+ } | Array<{
12
+ transaction?: {
13
+ hash?: string;
14
+ };
15
+ transaction_outcome?: {
16
+ id?: string;
17
+ };
18
+ }> | undefined;
4
19
  export interface NearSigner extends Signer, Omit<ChainSigner<Transaction, SignedTransaction>, "signTransaction"> {
20
+ signAndSendTransaction?(params: {
21
+ actions: Transaction["actions"];
22
+ receiverId?: string;
23
+ signerId?: string;
24
+ }): Promise<NearExecutionResult>;
5
25
  signAndSendTransactions?(params: {
6
26
  transactions: Transaction[];
7
- }): Promise<string>;
27
+ }): Promise<NearExecutionResult>;
8
28
  }
9
29
  export type NearToolboxParams = {
10
30
  signer?: NearSigner;
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "dependencies": { "@swapkit/helpers": "4.13.10", "@swapkit/utxo-signer": "2.1.3" },
2
+ "dependencies": { "@swapkit/helpers": "4.13.11", "@swapkit/utxo-signer": "2.1.3" },
3
3
  "description": "SwapKit - Toolboxes",
4
4
  "devDependencies": {
5
5
  "@aptos-labs/ts-sdk": "1.34.0",
@@ -194,5 +194,5 @@
194
194
  "type-check:go": "tsgo"
195
195
  },
196
196
  "type": "module",
197
- "version": "4.15.14"
197
+ "version": "4.15.15"
198
198
  }