@swapkit/toolboxes 4.19.0 → 4.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/dist/chunk-3pne8gaa.js +1 -0
- package/dist/chunk-44m22jy1.js +1 -0
- package/dist/chunk-54gntgt1.js +2 -0
- package/dist/chunk-ntbvmmch.js +2 -0
- package/dist/chunk-x9db9hmg.js +1 -0
- package/dist/chunk-xs0j1eze.js +2 -0
- package/dist/src/aptos/index.js +1 -1
- package/dist/src/cardano/index.cjs +1 -1
- package/dist/src/cardano/index.js +1 -1
- package/dist/src/cosmos/index.cjs +1 -1
- package/dist/src/cosmos/index.js +1 -1
- package/dist/src/evm/index.cjs +1 -1
- package/dist/src/evm/index.js +1 -1
- package/dist/src/hypercore/index.cjs +1 -1
- package/dist/src/hypercore/index.js +1 -1
- package/dist/src/index.cjs +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/near/index.cjs +1 -1
- package/dist/src/near/index.js +1 -1
- package/dist/src/radix/index.cjs +1 -1
- package/dist/src/radix/index.js +1 -1
- package/dist/src/ripple/index.cjs +1 -1
- package/dist/src/ripple/index.js +1 -1
- package/dist/src/solana/index.js +1 -1
- package/dist/src/starknet/index.js +1 -1
- package/dist/src/stellar/index.js +1 -1
- package/dist/src/substrate/index.cjs +1 -1
- package/dist/src/substrate/index.js +1 -1
- package/dist/src/sui/index.js +1 -1
- package/dist/src/ton/index.cjs +1 -1
- package/dist/src/ton/index.js +1 -1
- package/dist/src/tron/index.cjs +1 -1
- package/dist/src/tron/index.js +1 -1
- package/dist/src/utxo/index.js +1 -1
- package/dist/types/cardano/toolbox.d.ts +1 -1
- package/dist/types/cosmos/toolbox/cosmos.d.ts +2 -3
- package/dist/types/evm/helpers.d.ts +11 -1
- package/dist/types/evm/toolbox/baseEVMToolbox.d.ts +90 -5
- package/dist/types/evm/toolbox/evm.d.ts +1584 -88
- package/dist/types/evm/toolbox/op.d.ts +72 -4
- package/dist/types/evm/types.d.ts +7 -7
- package/dist/types/near/toolbox.d.ts +1 -2
- package/dist/types/radix/index.d.ts +2 -2
- package/dist/types/ripple/index.d.ts +4 -8
- package/dist/types/substrate/substrate.d.ts +1 -1
- package/dist/types/ton/toolbox.d.ts +6 -6
- package/dist/types/ton/types.d.ts +5 -0
- package/dist/types/tron/index.d.ts +2 -2
- package/dist/types/tron/toolbox.d.ts +3 -1
- package/dist/types/tron/types.d.ts +5 -0
- package/package.json +4 -2
package/dist/src/near/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
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
|
+
var Ff=Object.create;var{getPrototypeOf:kf,defineProperty:H,getOwnPropertyNames:Yf,getOwnPropertyDescriptor:mf}=Object,Af=Object.prototype.hasOwnProperty;function Df(N){return this[N]}var Hf,wf,Kf=(N,x,O)=>{var L=N!=null&&typeof N==="object";if(L){var D=x?Hf??=new WeakMap:wf??=new WeakMap,B=D.get(N);if(B)return B}O=N!=null?Ff(kf(N)):{};let q=x||!N||!N.__esModule?H(O,"default",{value:N,enumerable:!0}):O;for(let Q of Yf(N))if(!Af.call(q,Q))H(q,Q,{get:Df.bind(N,Q),enumerable:!0});if(L)D.set(N,q);return q},bf=(N)=>{var x=(Lf??=new WeakMap).get(N),O;if(x)return x;if(x=H({},"__esModule",{value:!0}),N&&typeof N==="object"||typeof N==="function"){for(var L of Yf(N))if(!Af.call(x,L))H(x,L,{get:Df.bind(N,L),enumerable:!(O=mf(N,L))||O.enumerable})}return Lf.set(N,x),x},Lf;var jf=(N)=>N;function Vf(N,x){this[N]=jf.bind(null,x)}var Pf=(N,x)=>{for(var O in x)H(N,O,{get:x[O],enumerable:!0,configurable:!0,set:Vf.bind(x,O)})};var $=(N,x)=>()=>(N&&(x=N(N=0)),x);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 y(N){let{KeyPair:x}=await import("@near-js/crypto"),O=N.index||0,L=N.derivationPath?P.derivationPathToString(N.derivationPath.slice(0,3)):`m/44'/397'/${O}'`,{parseSeedPhrase:D}=await import("near-seed-phrase"),{secretKey:B}=D(N.phrase,L),q=x.fromString(B);return If(q)}async function K(N){let{KeyPair:x}=await import("@near-js/crypto"),O=x.fromString(N);return If(O)}async function If(N){let{KeyPairSigner:x}=await import("@near-js/signers");class O extends x{#f;constructor(L){super(L);this.#f=L}getAddress(){let L=this.#f.getPublicKey(),D=Buffer.from(L.data).toString("hex");return Promise.resolve(D)}}return new O(N)}async function S(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"),B=D.fromString(L.public_key);return{nonce:L.access_key.nonce||0,publicKey:B}}var P;var p=$(()=>{P=require("@swapkit/helpers")});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 O of N)switch(O.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 yf(N){return(BigInt(N)*BigInt(1000000000000)).toString()}function Sf(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:O,changeMethods:L}){let{Contract:D}=await import("@near-js/accounts");return new D(N,x,{changeMethods:L,useLocalViewExecution:!0,viewMethods:O})}function df(){function N(){let x=Date.now(),O=a||x;return a=O,x>a?x:O+1}return vf+N().toString(36)}function Bf(N){return async function(O,L=!0){let D=await qf.SwapKitApi.getChainBalance({address:O,chain:N,scamFilter:L}),{baseDecimal:B}=b.getChainConfig(N),q=D.map(({identifier:M,value:j,decimal:v})=>{return new b.AssetValue({decimal:v||B,identifier:M,value:j})});if(!q.some((M)=>M.isGasAsset))return[b.AssetValue.from({chain:N}),...q];return q}}var b,qf,vf,a=0;var Uf=$(()=>{b=require("@swapkit/helpers"),qf=require("@swapkit/helpers/api"),vf=typeof process<"u"&&process.pid?process.pid.toString(36):""});function gf(N){let x;async function O(){if(x)return x;return x=await J.match(N).with({phrase:J.P.string},async(f)=>{return await y(f)}).with({signer:J.P.any},({signer:f})=>f).otherwise(()=>{return}),x}async function L(){let{JsonRpcProvider:f}=await import("@near-js/providers"),T=await C.getRPCUrl(C.Chain.Near);return new f({url:T})}async function D(f){let{Account:T}=await import("@near-js/accounts"),_=await L(),R=await O(),E=f||await B();return new T(E,_,R)}async function B(){let f=await O();if(!f)throw new C.SwapKitError("toolbox_near_no_signer");return await f.getAddress()}async function q(f){return(await _f({changeMethods:[],contractId:f.contractId,viewMethods:["storage_balance_of"]})).storage_balance_of({account_id:f.accountId})}async function Q(f){let _=[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:_,receiverId:f.contractId})}async function M(f){if(!await O())throw new C.SwapKitError("toolbox_near_no_signer");let{assetValue:_,recipient:R,memo:E}=f,Y=await B();if(!_.isGasAsset&&_.address){if(!await q({accountId:R,contractId:_.address}))return Q({assetValue:_,contractId:_.address,memo:E,recipient:R})}let A=await j({...f,sender:Y});return Of(A)}async function j({recipient:f,assetValue:T,memo:_,attachedDeposit:R,sender:E,functionCall:Y}){let A=await L();if(!w(f))throw new C.SwapKitError("toolbox_near_invalid_address",{recipient:f});if(!w(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:_||null,receiver_id:f},attachedDeposit:R||"1",contractId:Cf,gas:"250000000000000",methodName:"ft_transfer",sender:E})}let{publicKey:U,nonce:G}=await S(A,E),W=T.getBaseValue("bigint"),{actionCreators:X,createTransaction:z}=await import("@near-js/transactions"),{baseDecode:F}=await import("@near-js/utils"),k=[X.transfer(W)];if(_&&R)k.push(X.functionCall("memo",{memo:_},BigInt("250000000000000"),BigInt(R)));let m=await A.block({finality:"final"}),Rf=F(m.header.hash);return z(E,U,f,G+1,k,Rf)}function v(f){let T=f.encode();return Buffer.from(T).toString("base64")}async function g({args:f,attachedDeposit:T,contractId:_,gas:R,methodName:E,sender:Y}){let A=await L(),{publicKey:U,nonce:G}=await S(A,Y),{createTransaction:W,actionCreators:X}=await import("@near-js/transactions"),{baseDecode:z}=await import("@near-js/utils"),F=await A.block({finality:"final"}),k=z(F.header.hash),m=[X.functionCall(E,Buffer.from(JSON.stringify(f)),BigInt(R),BigInt(T))];return W(Y,U,_,G+1,m,k)}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 O();if(!T)throw new C.SwapKitError("toolbox_near_no_signer");await Qf(f);let[_,R]=await T.signTransaction(f);return R}async function Qf(f){let T=f.publicKey;if(T.toString?.().startsWith("ed25519:")||T.toString?.().startsWith("secp256k1:"))return;let{KeyType:_,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:_.ED25519});return}if(Y)f.publicKey=new R({data:Uint8Array.from(Y),keyType:_.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 _=await(await L()).sendTransaction(f),R=u(_);if(!R)throw new C.SwapKitError("toolbox_near_transfer_failed",{result:_});return R}async function Of(f){let T=await O();if(!T)throw new C.SwapKitError("toolbox_near_no_signer");let _;try{_=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(_)}async function Wf(f){let T=await O();if("assetValue"in f){let R=await Xf();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),m=(z+F)*BigInt(R.toString());return C.AssetValue.from({chain:C.Chain.Near,value:m})}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 _=T?await D():void 0;return V(f,_)}async function Xf(){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,_){if(!await O())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(_)||"0";return(await E.createAccount(f,A.fromString(T),BigInt(U))).transaction.hash}async function $f(f){let T=await O();try{if(!T)throw new C.SwapKitError("toolbox_near_no_signer");let{actionCreators:_}=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=_.functionCall(E,Y||{},G.getBaseValue("bigint"),BigInt(A||"1"));return(await U.signAndSendTransaction({actions:[W],receiverId:R})).transaction_outcome.id}catch(_){throw new C.SwapKitError("toolbox_near_transfer_failed",{error:_})}}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 O())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 _=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(_)*BigInt(1000000000000);return C.AssetValue.from({chain:C.Chain.Near,value:R})}function Jf(f,T){return console.warn("NEAR toolbox: estimateGas is deprecated, use estimateGasLimit instead"),V(f,T)}async function Mf(){let f=await L();try{return(await f.gasPrice(null)).gas_price||"100000000"}catch{return"100000000"}}async function zf(){let f=await O();return f?(await f.getPublicKey()).toString():""}return{broadcastTransaction:xf,callFunction:$f,createAction:h,createContract:_f,createContractFunctionCall:g,createSubAccount:Zf,createTransaction:j,estimateGas:Jf,estimateGasLimit:V,estimateTransactionFee:Wf,executeBatchTransaction:Ef,getAddress:B,getBalance:Bf(C.Chain.Near),getGasPrice:Mf,getNearProvider:L,getPublicKey:zf,getSignerFromPhrase:y,getSignerFromPrivateKey:K,serializeTransaction:v,signAndBroadcastTransaction:Of,signTransaction:Nf,transfer:M,validateAddress:w}}var C,J;var ff=$(()=>{Uf();p();r();C=require("@swapkit/helpers"),J=require("ts-pattern")});var Gf=$(()=>{ff()});var hf={};Pf(hf,{validateNearAddress:()=>w,tgasToGas:()=>yf,isSimpleTransfer:()=>o,isCustomEstimator:()=>t,isContractDeployment:()=>i,isContractCall:()=>l,isBatchTransaction:()=>n,isAccountCreation:()=>d,getNearToolbox:()=>gf,getNearSignerFromPrivateKey:()=>K,getNearSignerFromPhrase:()=>y,getFullAccessPublicKey:()=>S,getContractMethodGas:()=>c,gasToTGas:()=>Sf,estimateBatchGas:()=>s,createNearContract:()=>e,GAS_COSTS:()=>I});module.exports=bf(hf);var uf=$(()=>{p();r();ff();Gf()});uf();
|
package/dist/src/near/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
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};
|
|
1
|
+
import{da as ON}from"../../chunk-54gntgt1.js";import{ea as I}from"../../chunk-ntbvmmch.js";import{derivationPathToString as QN,SwapKitError as WN}from"@swapkit/helpers";function k(f){return f.length>=2&&f.length<=64&&/^(([a-z\d]+[-_])*[a-z\d]+\.)*([a-z\d]+[-_])*[a-z\d]+$/.test(f)}async function V(f){let{KeyPair:E}=await import("@near-js/crypto"),C=f.index||0,L=f.derivationPath?QN(f.derivationPath.slice(0,3)):`m/44'/397'/${C}'`,{parseSeedPhrase:D}=await import("near-seed-phrase"),{secretKey:X}=D(f.phrase,L),A=E.fromString(X);return d(A)}async function o(f){let{KeyPair:E}=await import("@near-js/crypto"),C=E.fromString(f);return d(C)}async function d(f){let{KeyPairSigner:E}=await import("@near-js/signers");class C extends E{#N;constructor(L){super(L);this.#N=L}getAddress(){let L=this.#N.getPublicKey(),D=Buffer.from(L.data).toString("hex");return Promise.resolve(D)}}return new C(f)}async function P(f,E){let L=(await f.query({account_id:E,finality:"final",request_type:"view_access_key_list"})).keys.find((H)=>H.access_key.permission==="FullAccess");if(!L)throw new WN("toolbox_near_no_public_key_found");let{PublicKey:D}=await import("@near-js/crypto"),X=D.fromString(L.public_key);return{nonce:L.access_key.nonce||0,publicKey:X}}var 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"};function n(f){return"recipient"in f&&"amount"in f&&!("contractId"in f)}function i(f){return"contractId"in f&&"methodName"in f}function t(f){return"actions"in f}function c(f){return"newAccountId"in f}function s(f){return"contractCode"in f}function r(f){return"customEstimator"in f}function e(f){let E=0;for(let C of f)switch(C.enum){case"transfer":E+=Number(q.SIMPLE_TRANSFER);break;case"functionCall":E+=Number(q.CONTRACT_CALL);break;case"createAccount":E+=Number(q.ACCOUNT_CREATION);break;case"deployContract":E+=Number(q.CONTRACT_DEPLOYMENT);break;case"addKey":E+=Number(q.ACCESS_KEY_ADDITION);break;case"deleteKey":E+=Number(q.ACCESS_KEY_DELETION);break;case"stake":E+=Number(q.STAKE);break;default:E+=Number(q.CONTRACT_CALL)}return E.toString()}function a(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 $N(f){return(BigInt(f)*BigInt(1000000000000)).toString()}function GN(f){return(BigInt(f)/BigInt(1000000000000)).toString()}async function NN({account:f,contractId:E,viewMethods:C,changeMethods:L}){let{Contract:D}=await import("@near-js/accounts");return new D(f,E,{changeMethods:L,useLocalViewExecution:!0,viewMethods:C})}import{AssetValue as m,Chain as G,getRPCUrl as TN,SwapKitError as U}from"@swapkit/helpers";import{match as fN,P as xN}from"ts-pattern";function jN(f){let E;async function C(){if(E)return E;return E=await fN(f).with({phrase:xN.string},async(N)=>{return await V(N)}).with({signer:xN.any},({signer:N})=>N).otherwise(()=>{return}),E}async function L(){let{JsonRpcProvider:N}=await import("@near-js/providers"),T=await TN(G.Near);return new N({url:T})}async function D(N){let{Account:T}=await import("@near-js/accounts"),x=await L(),_=await C(),O=N||await X();return new T(O,x,_)}async function X(){let N=await C();if(!N)throw new U("toolbox_near_no_signer");return await N.getAddress()}async function A(N){return(await K({changeMethods:[],contractId:N.contractId,viewMethods:["storage_balance_of"]})).storage_balance_of({account_id:N.accountId})}async function H(N){let x=[await b({args:{account_id:N.recipient},attachedDeposit:"1250000000000000000000",gas:"150000000000000",methodName:"storage_deposit"}),await b({args:{amount:N.assetValue.getBaseValue("string"),memo:N.memo||null,receiver_id:N.recipient},attachedDeposit:"1",gas:"150000000000000",methodName:"ft_transfer"})];return u({actions:x,receiverId:N.contractId})}async function _N(N){if(!await C())throw new U("toolbox_near_no_signer");let{assetValue:x,recipient:_,memo:O}=N,R=await X();if(!x.isGasAsset&&x.address){if(!await A({accountId:_,contractId:x.address}))return H({assetValue:x,contractId:x.address,memo:O,recipient:_})}let Y=await y({...N,sender:R});return h(Y)}async function y({recipient:N,assetValue:T,memo:x,attachedDeposit:_,sender:O,functionCall:R}){let Y=await L();if(!k(N))throw new U("toolbox_near_invalid_address",{recipient:N});if(!k(O))throw new U("toolbox_near_invalid_address",{sender:O});if(R)return j({...R,sender:O});if(!T.isGasAsset){let l=T.address;if(!l)throw new U("toolbox_near_missing_contract_address");return j({args:{amount:T.getBaseValue("string"),memo:x||null,receiver_id:N},attachedDeposit:_||"1",contractId:l,gas:"250000000000000",methodName:"ft_transfer",sender:O})}let{publicKey:Q,nonce:W}=await P(Y,O),Z=T.getBaseValue("bigint"),{actionCreators:$,createTransaction:J}=await import("@near-js/transactions"),{baseDecode:M}=await import("@near-js/utils"),B=[$.transfer(Z)];if(x&&_)B.push($.functionCall("memo",{memo:x},BigInt("250000000000000"),BigInt(_)));let z=await Y.block({finality:"final"}),p=M(z.header.hash);return J(O,Q,N,W+1,B,p)}function EN(N){let T=N.encode();return Buffer.from(T).toString("base64")}async function j({args:N,attachedDeposit:T,contractId:x,gas:_,methodName:O,sender:R}){let Y=await L(),{publicKey:Q,nonce:W}=await P(Y,R),{createTransaction:Z,actionCreators:$}=await import("@near-js/transactions"),{baseDecode:J}=await import("@near-js/utils"),M=await Y.block({finality:"final"}),B=J(M.header.hash),z=[$.functionCall(O,Buffer.from(JSON.stringify(N)),BigInt(_),BigInt(T))];return Z(R,Q,x,W+1,z,B)}async function b(N){let{actionCreators:T}=await import("@near-js/transactions");return T.functionCall(N.methodName,Buffer.from(JSON.stringify(N.args)),BigInt(N.gas),BigInt(N.attachedDeposit))}async function S(N){let T=await C();if(!T)throw new U("toolbox_near_no_signer");await RN(N);let[x,_]=await T.signTransaction(N);return _}async function RN(N){let T=N.publicKey;if(T.toString?.().startsWith("ed25519:")||T.toString?.().startsWith("secp256k1:"))return;let{KeyType:x,PublicKey:_}=await import("@near-js/crypto"),O=T.data||T.ed25519Key?.data,R=T.secp256k1Key?.data;if(O){N.publicKey=new _({data:Uint8Array.from(O),keyType:x.ED25519});return}if(R)N.publicKey=new _({data:Uint8Array.from(R),keyType:x.SECP256K1})}function w(N){if(typeof N==="string")return N;if(Array.isArray(N))return N.map(w).find(Boolean);if(!(N&&typeof N==="object"))return;let T=N;return T.transaction?.hash||T.transaction_outcome?.id}function v(N){return N instanceof Error?N.message:String(N)}async function g(N){let x=await(await L()).sendTransaction(N),_=w(x);if(!_)throw new U("toolbox_near_transfer_failed",{result:x});return _}async function h(N){let T=await C();if(!T)throw new U("toolbox_near_no_signer");let x;try{x=await S(N)}catch(_){let O;try{O=T.signAndSendTransaction?await T.signAndSendTransaction({actions:N.actions,receiverId:N.receiverId,signerId:N.signerId}):await T.signAndSendTransactions?.({transactions:[N]})}catch(Y){throw new U({errorKey:"toolbox_near_sign_transaction_failed",info:{directSignError:v(_),signAndSendError:v(Y)}},Y)}let R=w(O);if(R)return R;throw _}return g(x)}async function CN(N){let T=await C();if("assetValue"in N){let _=await LN();try{let O=await TN(G.Near),R=await fetch(O,{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:Y}}=await R.json(),{execution:Q,send_sir:W}=Y.transaction_costs.action_receipt_creation_config,{execution:Z,send_sir:$}=Y.transaction_costs.action_creation_config.transfer_cost,J=BigInt($)+BigInt(Z),M=BigInt(W)+BigInt(Q),z=(J+M)*BigInt(_.toString());return m.from({chain:G.Near,value:z})}catch(O){console.debug("NEAR fee estimation (protocol config) failed, using fallback:",O);let R=BigInt("115123062500"),Y=BigInt("108059500000"),W=(R+Y)*BigInt(_.toString());return m.from({chain:G.Near,value:W})}}let x=T?await D():void 0;return F(N,x)}async function LN(){let N=await L();try{return await N.query({account_id:"system",args_base64:"",finality:"final",method_name:"gas_price",request_type:"call_function"})}catch{return"100000000"}}async function YN(N,T,x){if(!await C())throw new U("toolbox_near_no_signer");let O=await D(),{formatNearAmount:R}=await import("@near-js/utils"),{PublicKey:Y}=await import("@near-js/crypto"),Q=R(x)||"0";return(await O.createAccount(N,Y.fromString(T),BigInt(Q))).transaction.hash}async function IN(N){let T=await C();try{if(!T)throw new U("toolbox_near_no_signer");let{actionCreators:x}=await import("@near-js/transactions"),{contractId:_,methodName:O,args:R,deposit:Y}=N,Q=await D(),W=await F({args:R||{},contractId:_,methodName:O}),Z=x.functionCall(O,R||{},W.getBaseValue("bigint"),BigInt(Y||"1"));return(await Q.signAndSendTransaction({actions:[Z],receiverId:_})).transaction_outcome.id}catch(x){throw new U("toolbox_near_transfer_failed",{error:x})}}async function K(N){let T=await D();return NN({account:T,changeMethods:N.changeMethods,contractId:N.contractId,viewMethods:N.viewMethods})}async function u(N){if(!await C())throw new U("toolbox_near_no_signer");if(N.actions.length===0)throw new U("toolbox_near_empty_batch");return(await(await D()).signAndSendTransaction({actions:N.actions,receiverId:N.receiverId})).transaction.hash}async function F(N,T){let x=await fN(N).when(n,()=>q.SIMPLE_TRANSFER).when(i,(O)=>a(O.methodName)).when(t,(O)=>e(O.actions)).when(c,()=>q.ACCOUNT_CREATION).when(s,()=>q.CONTRACT_DEPLOYMENT).when(r,(O)=>{if(!T)throw new U("toolbox_near_no_account");return O.customEstimator(T)}).otherwise(()=>{throw new U("toolbox_near_invalid_gas_params")}),_=BigInt(x)*BigInt(1000000000000);return m.from({chain:G.Near,value:_})}function UN(N,T){return console.warn("NEAR toolbox: estimateGas is deprecated, use estimateGasLimit instead"),F(N,T)}async function qN(){let N=await L();try{return(await N.gasPrice(null)).gas_price||"100000000"}catch{return"100000000"}}async function DN(){let N=await C();return N?(await N.getPublicKey()).toString():""}return{broadcastTransaction:g,callFunction:IN,createAction:b,createContract:K,createContractFunctionCall:j,createSubAccount:YN,createTransaction:y,estimateGas:UN,estimateGasLimit:F,estimateTransactionFee:CN,executeBatchTransaction:u,getAddress:X,getBalance:ON(G.Near),getGasPrice:qN,getNearProvider:L,getPublicKey:DN,getSignerFromPhrase:V,getSignerFromPrivateKey:o,serializeTransaction:EN,signAndBroadcastTransaction:h,signTransaction:S,transfer:_N,validateAddress:k}}export{k as validateNearAddress,$N as tgasToGas,n as isSimpleTransfer,r as isCustomEstimator,s as isContractDeployment,i as isContractCall,t as isBatchTransaction,c as isAccountCreation,jN as getNearToolbox,o as getNearSignerFromPrivateKey,V as getNearSignerFromPhrase,P as getFullAccessPublicKey,a as getContractMethodGas,GN as gasToTGas,e as estimateBatchGas,NN as createNearContract,q as GAS_COSTS};
|
package/dist/src/radix/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var x=Object.create;var{getPrototypeOf:I,defineProperty:X,getOwnPropertyNames:_,getOwnPropertyDescriptor:S}=Object,$=Object.prototype.hasOwnProperty;function q(j){return this[j]}var T,C,w=(j,z,H)=>{var K=j!=null&&typeof j==="object";if(K){var Q=z?T??=new WeakMap:C??=new WeakMap,J=Q.get(j);if(J)return J}H=j!=null?x(I(j)):{};let L=z||!j||!j.__esModule?X(H,"default",{value:j,enumerable:!0}):H;for(let M of _(j))if(!$.call(L,M))X(L,M,{get:q.bind(j,M),enumerable:!0});if(K)Q.set(j,L);return L},D=(j)=>{var z=(Z??=new WeakMap).get(j),H;if(z)return z;if(z=X({},"__esModule",{value:!0}),j&&typeof j==="object"||typeof j==="function"){for(var K of _(j))if(!$.call(z,K))X(z,K,{get:q.bind(j,K),enumerable:!(H=S(j,K))||H.enumerable})}return Z.set(j,z),z},Z;var E=(j)=>j;function F(j,z){this[j]=E.bind(null,z)}var P=(j,z)=>{for(var H in z)X(j,H,{get:z[H],enumerable:!0,configurable:!0,set:F.bind(z,H)})};var B=(j,z)=>()=>(j&&(z=j(j=0)),z);var f={};P(f,{validateRadixAddress:()=>G,getRadixToolbox:()=>y});module.exports=D(f);function G(j){return j.startsWith("account_rdx1")&&j.length===66}async function N({address:j,networkApi:z}){let H=!0,K,Q=[],J=await h(z);while(H){let L={address:j,at_ledger_state:{state_version:J},cursor:K,limit_per_page:100},M=await z.state.innerClient.entityFungiblesPage({stateEntityFungiblesPageRequest:L});if(Q=Q.concat(M.items),M.next_cursor)K=M.next_cursor;else H=!1}return Q}async function R({resources:j,networkApi:z}){let H=[],K=50,Q=[];for(let J=0;J<j.length;J+=50)Q.push(j.slice(J,J+50));for(let J of Q){let L=J.map((O)=>O.resource_address),M=await z.state.getEntityDetailsVaultAggregated(L),W=new Map;for(let O of M)if(O.details!==void 0){let V=O.metadata?.items.find((v)=>v.key==="symbol"),Y=V?.value.typed.type==="String"?V.value.typed.value:"?";if(O.details.type==="FungibleResource")W.set(O.address,{decimals:O.details.divisibility,symbol:Y})}for(let O of J)if(O.aggregation_level==="Global"){let V=W.get(O.resource_address)||{decimals:0,symbol:"?"},Y=U.AssetValue.from({asset:V.symbol!==U.Chain.Radix?`${U.Chain.Radix}.${V.symbol}-${O.resource_address}`:"XRD.XRD",value:O.amount});H.push(Y)}}return H}async function h(j){return(await j.status.getCurrent()).ledger_state.state_version}function y({dappConfig:j}={}){let z=j||U.SKConfig.get("integrations").radix,H;async function K(){if(H)return H;let{GatewayApiClient:J}=await import("@radixdlt/babylon-gateway-api-sdk"),{RadixDappToolkit:L}=await import("@radixdlt/radix-dapp-toolkit"),M=L({...z,networkId:z.network?.networkId||1});return H=J.initialize(M.gatewayApi.clientConfig),H}async function Q(J){let L=await K(),M=await N({address:J,networkApi:L}),W=await R({networkApi:L,resources:M});if(!W.some((V)=>V.isGasAsset))return[U.AssetValue.from({chain:U.Chain.Radix}),...W];return W}return{getAddress:()=>"",getBalance:Q,getNetworkApi:K,signAndBroadcast:()=>{throw new U.SwapKitError("toolbox_radix_method_not_supported",{method:"signAndBroadcast"})},validateAddress:G}}var U;var m=B(()=>{U=require("@swapkit/helpers")});m();
|
package/dist/src/radix/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{ea as Y}from"../../chunk-ntbvmmch.js";import{AssetValue as Z,Chain as X,SKConfig as $,SwapKitError as q}from"@swapkit/helpers";function G(H){return H.startsWith("account_rdx1")&&H.length===66}async function v({address:H,networkApi:L}){let J=!0,U,M=[],j=await I(L);while(J){let O={address:H,at_ledger_state:{state_version:j},cursor:U,limit_per_page:100},K=await L.state.innerClient.entityFungiblesPage({stateEntityFungiblesPageRequest:O});if(M=M.concat(K.items),K.next_cursor)U=K.next_cursor;else J=!1}return M}async function x({resources:H,networkApi:L}){let J=[],U=50,M=[];for(let j=0;j<H.length;j+=50)M.push(H.slice(j,j+50));for(let j of M){let O=j.map((z)=>z.resource_address),K=await L.state.getEntityDetailsVaultAggregated(O),V=new Map;for(let z of K)if(z.details!==void 0){let Q=z.metadata?.items.find((_)=>_.key==="symbol"),W=Q?.value.typed.type==="String"?Q.value.typed.value:"?";if(z.details.type==="FungibleResource")V.set(z.address,{decimals:z.details.divisibility,symbol:W})}for(let z of j)if(z.aggregation_level==="Global"){let Q=V.get(z.resource_address)||{decimals:0,symbol:"?"},W=Z.from({asset:Q.symbol!==X.Radix?`${X.Radix}.${Q.symbol}-${z.resource_address}`:"XRD.XRD",value:z.amount});J.push(W)}}return J}async function I(H){return(await H.status.getCurrent()).ledger_state.state_version}function T({dappConfig:H}={}){let L=H||$.get("integrations").radix,J;async function U(){if(J)return J;let{GatewayApiClient:j}=await import("@radixdlt/babylon-gateway-api-sdk"),{RadixDappToolkit:O}=await import("@radixdlt/radix-dapp-toolkit"),K=O({...L,networkId:L.network?.networkId||1});return J=j.initialize(K.gatewayApi.clientConfig),J}async function M(j){let O=await U(),K=await v({address:j,networkApi:O}),V=await x({networkApi:O,resources:K});if(!V.some((Q)=>Q.isGasAsset))return[Z.from({chain:X.Radix}),...V];return V}return{getAddress:()=>"",getBalance:M,getNetworkApi:U,signAndBroadcast:()=>{throw new q("toolbox_radix_method_not_supported",{method:"signAndBroadcast"})},validateAddress:G}}export{G as validateRadixAddress,T as getRadixToolbox};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=Object.create;var{getPrototypeOf:mm,defineProperty:Q,getOwnPropertyNames:C,getOwnPropertyDescriptor:fm}=Object,p=Object.prototype.hasOwnProperty;function T(m){return this[m]}var vm,Um,Bm=(m,f,G)=>{var $=m!=null&&typeof m==="object";if($){var W=f?vm??=new WeakMap:Um??=new WeakMap,D=W.get(m);if(D)return D}G=m!=null?e(mm(m)):{};let Z=f||!m||!m.__esModule?Q(G,"default",{value:m,enumerable:!0}):G;for(let F of C(m))if(!p.call(Z,F))Q(Z,F,{get:T.bind(m,F),enumerable:!0});if($)W.set(m,Z);return Z},bm=(m)=>{var f=(g??=new WeakMap).get(m),G;if(f)return f;if(f=Q({},"__esModule",{value:!0}),m&&typeof m==="object"||typeof m==="function"){for(var $ of C(m))if(!p.call(f,$))Q(f,$,{get:T.bind(m,$),enumerable:!(G=fm(m,$))||G.enumerable})}return g.set(m,f),f},g;var Gm=(m)=>m;function km(m,f){this[m]=Gm.bind(null,f)}var Wm=(m,f)=>{for(var G in f)Q(m,G,{get:f[G],enumerable:!0,configurable:!0,set:km.bind(f,G)})};var A=(m,f)=>()=>(m&&(f=m(m=0)),f);function P(m){return/^[0-9A-Fa-f]{40}$/.test(m)}function _(m){if(P(m))return m.toUpperCase();if(m.length<=3){let G=Buffer.from(m.padEnd(3,"\x00")).toString("hex");return`00${"0".repeat(22)}${G}${"0".repeat(10)}`.toUpperCase()}let f=Buffer.from(m).toString("hex").toUpperCase();if(f.length>40)throw new u.SwapKitError({errorKey:"toolbox_ripple_asset_not_supported",info:{asset:m,reason:"Currency exceeds maximum length (20 bytes)"}});return f.padEnd(40,"0")}function zm(m){if(!P(m))return m;if(m.toUpperCase().startsWith("00")){let f=m.slice(24,30);try{let G=Buffer.from(f,"hex").toString("ascii").replace(/\0/g,"");if(/^[A-Za-z0-9?!@#$%^&*<>(){}[\]|]+$/.test(G)&&G.length>0)return G}catch{}return m.toUpperCase()}try{let f=m.replace(/0+$/,""),G=f.length%2===0?f:`${f}0`,$=Buffer.from(G,"hex").toString("utf8");if(/^[\x20-\x7E]+$/.test($))return $}catch{}return m.toUpperCase()}function Y(m){if(P(m))return m.toUpperCase();if(m.length<=3)return m;return _(m)}var u;var H=A(()=>{u=require("@swapkit/helpers")});async function Mm(m,f){let G=Y(m),$=O.find((W)=>Y(W.currency)===G&&W.issuer===f);if($)return $;try{let W=await w.RequestClient.get(`https://api.xrplmeta.org/token/${m}:${f}`);if(W)return{currency:m,decimals:15,description:W.desc,domain:W.domain,icon:W.icon,issuer:f,name:W.name,verified:W.self_assessment?.is_regulated||W.self_assessment?.is_licensed}}catch(W){w.warnOnce({condition:!0,id:`xrpl_token_lookup_${m}_${f}`,warning:`Failed to fetch XRPL token info for ${m}:${f}: ${W}`})}return{currency:m,decimals:15,issuer:f,verified:!1}}function $m(m){return O.filter((f)=>f.issuer===m)}function jm(m,f){let G=Y(m);return O.some(($)=>Y($.currency)===G&&$.issuer===f)}var w,O;var h=A(()=>{H();w=require("@swapkit/helpers"),O=[{currency:"USD",decimals:15,domain:"circle.com",issuer:"rcEGREd8NmkKRE8GE424sksyt1tJVFZwu",name:"Circle USDC",verified:!0},{currency:"RLUSD",decimals:15,domain:"ripple.com",issuer:"rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De",name:"Ripple USD",verified:!0},{currency:"USD",decimals:15,domain:"bitstamp.net",issuer:"rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B",name:"Bitstamp USD",verified:!0},{currency:"BTC",decimals:15,domain:"bitstamp.net",issuer:"rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B",name:"Bitstamp BTC",verified:!0},{currency:"EUR",decimals:15,domain:"bitstamp.net",issuer:"rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B",name:"Bitstamp EUR",verified:!0},{currency:"USD",decimals:15,domain:"gatehub.net",issuer:"rhub8VRN55s94qWKDv6jmDy1pUykJzF3wq",name:"GateHub USD",verified:!0},{currency:"EUR",decimals:15,domain:"gatehub.net",issuer:"rhub8VRN55s94qWKDv6jmDy1pUykJzF3wq",name:"GateHub EUR",verified:!0},{currency:"BTC",decimals:15,domain:"gatehub.net",issuer:"rchGBxcD1A1C2tdxF6papQYZ8kjRKMYcL",name:"GateHub BTC",verified:!0},{currency:"ETH",decimals:15,domain:"gatehub.net",issuer:"rcA8X3TVMST1n3CJeAdGk1RdRCHii7N2h",name:"GateHub ETH",verified:!0},{currency:"SOLO",decimals:15,domain:"sologenic.com",issuer:"rsoLo2S1kiGeCcn6hCUXVrCpGMWLrRrLZz",name:"Sologenic",verified:!0}]});var Xm={};Wm(Xm,{validateRippleAddress:()=>K,parseXrplTokenIdentifier:()=>d,normalizeCurrency:()=>Y,isKnownToken:()=>jm,isHexCurrency:()=>P,hexToCurrency:()=>zm,hashes:()=>i.hashes,getXrplTokenInfo:()=>Mm,getRippleToolbox:()=>Dm,getKnownTokensByIssuer:()=>$m,formatXrplTokenIdentifier:()=>l,currencyToHex:()=>_,XRPL_TOKEN_ERROR_CODES:()=>R,XRPL_KNOWN_TOKENS:()=>O});module.exports=bm(Xm);function d(m){let f=m.match(/^XRP\.([A-Fa-f0-9]{40}|[\x20-\x7E]{1,20})-([a-zA-Z0-9]{25,34})$/);if(!f?.[1]||!f?.[2])return null;if(!q.isValidAddress(f[2]))return null;return{currency:f[1],issuer:f[2]}}function l(m,f){return`${v.Chain.Ripple}.${m}-${f}`}function qm(m){if(m.isGasAsset)return q.xrpToDrops(m.getValue("string"));let f=d(m.toString());if(!f)throw new v.SwapKitError({errorKey:"toolbox_ripple_asset_not_supported",info:{asset:m.toString()}});return{currency:f.currency,issuer:f.issuer,value:m.getValue("string")}}function c(m){let f=q.Wallet.fromMnemonic(m);return{getAddress:()=>Promise.resolve(f.address),signTransaction:(G)=>Promise.resolve(f.sign(G))}}function K(m){return q.isValidAddress(m)}function Dm(m={}){let f=N.match(m).with({phrase:N.P.string},({phrase:U})=>c(U)).with({signer:N.P.any},({signer:U})=>U).otherwise(()=>{return}),G;async function $(){let U=await v.getRPCUrl(v.Chain.Ripple);if(!U)throw new v.SwapKitError({errorKey:"toolbox_ripple_rpc_not_configured",info:{chain:v.Chain.Ripple}});let b=new q.Client(U);return await b.connect(),b}async function W(){if(G){let U=await G.catch(()=>null);if(U?.isConnected())return U}return G=$(),G}let D=()=>{if(!f)throw new v.SwapKitError({errorKey:"toolbox_ripple_signer_not_found"});return f.getAddress()},Z=async(U)=>{let b=U||await D(),{baseDecimal:M}=v.getChainConfig(v.Chain.Ripple),z=await W();try{let[k,j]=await Promise.all([z.request({account:b,command:"account_info"}),z.request({account:b,command:"account_lines"})]),B=k.result.account_data.Balance,J=[v.AssetValue.from({chain:v.Chain.Ripple,fromBaseDecimal:M,value:B})];for(let X of j.result.lines){let V=l(X.currency,X.account);if(Number.parseFloat(X.balance)!==0)J.push(v.AssetValue.from({asset:V,asyncTokenLookup:!1,value:X.balance}))}return J}catch(k){if(k.data?.error_code===x.ACCOUNT_NOT_FOUND)return[v.AssetValue.from({chain:v.Chain.Ripple,value:0})];throw new v.SwapKitError({errorKey:"toolbox_ripple_get_balance_error",info:{address:b,error:k}})}},F=async()=>{let{baseDecimal:U}=v.getChainConfig(v.Chain.Ripple),z=(await(await W()).request({command:"fee"})).result.drops.open_ledger_fee;return v.AssetValue.from({chain:v.Chain.Ripple,fromBaseDecimal:U,value:z})};async function S(U){let b=U||await D(),M=await W();try{return(await M.request({account:b,command:"account_lines"})).result.lines.map((k)=>({account:k.account,authorized:k.authorized??!1,balance:k.balance,currency:k.currency,freeze:k.freeze??!1,freezePeer:k.freeze_peer??!1,limit:k.limit,limitPeer:k.limit_peer,noRipple:k.no_ripple??!1,noRipplePeer:k.no_ripple_peer??!1,peerAuthorized:k.peer_authorized??!1,qualityIn:k.quality_in??0,qualityOut:k.quality_out??0}))}catch(z){if(z.data?.error_code===x.ACCOUNT_NOT_FOUND)return[];throw new v.SwapKitError({errorKey:"toolbox_ripple_get_trust_lines_error",info:{address:b,error:z}})}}async function n({address:U,currency:b,issuer:M}){let z=await S(U),k=_(b);return z.some((j)=>{return _(j.currency)===k&&j.account===M})}async function E({currency:U,issuer:b,limit:M,sender:z}){let k=z||await D();if(!K(b))throw new v.SwapKitError({errorKey:"core_transaction_invalid_recipient_address",info:{address:b}});let j=Number.parseFloat(M);if(Number.isNaN(j)||j<0)throw new v.SwapKitError({errorKey:"toolbox_ripple_invalid_trust_line_limit",info:{limit:M}});let B=await W(),J={Account:k,LimitAmount:{currency:U,issuer:b,value:M},TransactionType:"TrustSet"};return B.autofill(J)}async function o({assetValue:U,recipient:b,memo:M,sender:z,destinationTag:k,extendBySeconds:j=150}){if(!K(b))throw new v.SwapKitError({errorKey:"core_transaction_invalid_recipient_address"});let B=z||await D();if(U.chain!==v.Chain.Ripple)throw new v.SwapKitError({errorKey:"toolbox_ripple_asset_not_supported",info:{asset:U.toString()}});let J=qm(U),X={Account:B,Amount:J,Destination:b,TransactionType:"Payment",...k!==void 0&&{DestinationTag:k}};if(M)X.Memos=[{Memo:{MemoData:Buffer.from(M).toString("hex")}}];let y=await(await W()).autofill(X);if(y.LastLedgerSequence&&j>0)y.LastLedgerSequence+=Math.ceil(j/4);return y}function I(U){if(!f)throw new v.SwapKitError({errorKey:"toolbox_ripple_signer_not_found"});return f.signTransaction(U)}async function L(U){let M=await(await W()).submitAndWait(U),{result:z}=M;if(z.validated)return z.hash;let k=z.meta?.TransactionResult,j=N.match(k).with(R.tecNO_LINE,()=>"No trust line exists for this token").with(R.tecPATH_DRY,()=>"Payment path could not deliver funds").with(R.tecFROZEN,()=>"Token is frozen").otherwise(()=>{return});throw new v.SwapKitError({errorKey:"toolbox_ripple_broadcast_error",info:{chain:v.Chain.Ripple,...j?{reason:j}:{txResult:k}}})}let t=async(U)=>{try{let b=await I(U);return L(b.tx_blob)}catch(b){if(b instanceof v.SwapKitError)throw b;throw new v.SwapKitError({errorKey:"toolbox_ripple_broadcast_error",info:{chain:v.Chain.Ripple,error:b}})}};async function a(U){if(!f)throw new v.SwapKitError({errorKey:"toolbox_ripple_signer_not_found"});let b=await f.getAddress(),M=await o({...U,sender:b}),z=await I(M);return L(z.tx_blob)}async function s(U){if(!f)throw new v.SwapKitError({errorKey:"toolbox_ripple_signer_not_found"});let b=await f.getAddress(),M=await E({...U,sender:b}),z=await I(M);return L(z.tx_blob)}function r(){let U=G;if(G=null,U)U.then((b)=>{if(b?.isConnected())return b.disconnect();return}).catch((b)=>{console.warn("XRPL Cleanup failed silently:",b)})}return{broadcastTransaction:L,createSigner:c,createTransaction:o,disconnect:r,estimateTransactionFee:F,getAddress:D,getBalance:Z,getTrustLines:S,hasTrustLine:n,setTrustLine:E,setTrustLineAndBroadcast:s,signAndBroadcastTransaction:t,signTransaction:I,transfer:a,validateAddress:K}}var v,N,q,i,x,R;var Zm=A(()=>{H();v=require("@swapkit/helpers"),N=require("ts-pattern"),q=require("xrpl");H();h();i=require("xrpl"),x={ACCOUNT_NOT_FOUND:19},R={tecFROZEN:"tecFROZEN",tecNO_AUTH:"tecNO_AUTH",tecNO_DST:"tecNO_DST",tecNO_LINE:"tecNO_LINE",tecPATH_DRY:"tecPATH_DRY",tecUNFUNDED_OFFER:"tecUNFUNDED_OFFER"}});Zm();
|
|
1
|
+
var e=Object.create;var{getPrototypeOf:ff,defineProperty:F,getOwnPropertyNames:T,getOwnPropertyDescriptor:mf}=Object,u=Object.prototype.hasOwnProperty;function p(f){return this[f]}var Uf,bf,Jf=(f,m,G)=>{var z=f!=null&&typeof f==="object";if(z){var j=m?Uf??=new WeakMap:bf??=new WeakMap,W=j.get(f);if(W)return W}G=f!=null?e(ff(f)):{};let D=m||!f||!f.__esModule?F(G,"default",{value:f,enumerable:!0}):G;for(let N of T(f))if(!u.call(D,N))F(D,N,{get:p.bind(f,N),enumerable:!0});if(z)j.set(f,D);return D},vf=(f)=>{var m=(S??=new WeakMap).get(f),G;if(m)return m;if(m=F({},"__esModule",{value:!0}),f&&typeof f==="object"||typeof f==="function"){for(var z of T(f))if(!u.call(m,z))F(m,z,{get:p.bind(f,z),enumerable:!(G=mf(f,z))||G.enumerable})}return S.set(f,m),m},S;var Gf=(f)=>f;function kf(f,m){this[f]=Gf.bind(null,m)}var zf=(f,m)=>{for(var G in m)F(f,G,{get:m[G],enumerable:!0,configurable:!0,set:kf.bind(m,G)})};var A=(f,m)=>()=>(f&&(m=f(f=0)),m);function H(f){return/^[0-9A-Fa-f]{40}$/.test(f)}function Q(f){if(H(f))return f.toUpperCase();if(f.length<=3){let G=Buffer.from(f.padEnd(3,"\x00")).toString("hex");return`00${"0".repeat(22)}${G}${"0".repeat(10)}`.toUpperCase()}let m=Buffer.from(f).toString("hex").toUpperCase();if(m.length>40)throw new g.SwapKitError({errorKey:"toolbox_ripple_asset_not_supported",info:{asset:f,reason:"Currency exceeds maximum length (20 bytes)"}});return m.padEnd(40,"0")}function Mf(f){if(!H(f))return f;if(f.toUpperCase().startsWith("00")){let m=f.slice(24,30);try{let G=Buffer.from(m,"hex").toString("ascii").replace(/\0/g,"");if(/^[A-Za-z0-9?!@#$%^&*<>(){}[\]|]+$/.test(G)&&G.length>0)return G}catch{}return f.toUpperCase()}try{let m=f.replace(/0+$/,""),G=m.length%2===0?m:`${m}0`,z=Buffer.from(G,"hex").toString("utf8");if(/^[\x20-\x7E]+$/.test(z))return z}catch{}return f.toUpperCase()}function X(f){if(H(f))return f.toUpperCase();if(f.length<=3)return f;return Q(f)}var g;var w=A(()=>{g=require("@swapkit/helpers")});async function $f(f,m){let G=X(f),z=P.find((j)=>X(j.currency)===G&&j.issuer===m);if(z)return z;try{let j=await O.RequestClient.get(`https://api.xrplmeta.org/token/${f}:${m}`);if(j)return{currency:f,decimals:15,description:j.desc,domain:j.domain,icon:j.icon,issuer:m,name:j.name,verified:j.self_assessment?.is_regulated||j.self_assessment?.is_licensed}}catch(j){O.warnOnce({condition:!0,id:`xrpl_token_lookup_${f}_${m}`,warning:`Failed to fetch XRPL token info for ${f}:${m}: ${j}`})}return{currency:f,decimals:15,issuer:m,verified:!1}}function jf(f){return P.filter((m)=>m.issuer===f)}function qf(f,m){let G=X(f);return P.some((z)=>X(z.currency)===G&&z.issuer===m)}var O,P;var h=A(()=>{w();O=require("@swapkit/helpers"),P=[{currency:"USD",decimals:15,domain:"circle.com",issuer:"rcEGREd8NmkKRE8GE424sksyt1tJVFZwu",name:"Circle USDC",verified:!0},{currency:"RLUSD",decimals:15,domain:"ripple.com",issuer:"rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De",name:"Ripple USD",verified:!0},{currency:"USD",decimals:15,domain:"bitstamp.net",issuer:"rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B",name:"Bitstamp USD",verified:!0},{currency:"BTC",decimals:15,domain:"bitstamp.net",issuer:"rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B",name:"Bitstamp BTC",verified:!0},{currency:"EUR",decimals:15,domain:"bitstamp.net",issuer:"rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B",name:"Bitstamp EUR",verified:!0},{currency:"USD",decimals:15,domain:"gatehub.net",issuer:"rhub8VRN55s94qWKDv6jmDy1pUykJzF3wq",name:"GateHub USD",verified:!0},{currency:"EUR",decimals:15,domain:"gatehub.net",issuer:"rhub8VRN55s94qWKDv6jmDy1pUykJzF3wq",name:"GateHub EUR",verified:!0},{currency:"BTC",decimals:15,domain:"gatehub.net",issuer:"rchGBxcD1A1C2tdxF6papQYZ8kjRKMYcL",name:"GateHub BTC",verified:!0},{currency:"ETH",decimals:15,domain:"gatehub.net",issuer:"rcA8X3TVMST1n3CJeAdGk1RdRCHii7N2h",name:"GateHub ETH",verified:!0},{currency:"SOLO",decimals:15,domain:"sologenic.com",issuer:"rsoLo2S1kiGeCcn6hCUXVrCpGMWLrRrLZz",name:"Sologenic",verified:!0}]});var Zf={};zf(Zf,{validateRippleAddress:()=>_,parseXrplTokenIdentifier:()=>d,normalizeCurrency:()=>X,isKnownToken:()=>qf,isHexCurrency:()=>H,hexToCurrency:()=>Mf,getXrplTokenInfo:()=>$f,getRippleToolbox:()=>Wf,getKnownTokensByIssuer:()=>jf,formatXrplTokenIdentifier:()=>l,currencyToHex:()=>Q,XRPL_TOKEN_ERROR_CODES:()=>K,XRPL_KNOWN_TOKENS:()=>P});module.exports=vf(Zf);function d(f){let m=f.match(/^XRP\.([A-Fa-f0-9]{40}|[\x20-\x7E]{1,20})-([a-zA-Z0-9]{25,34})$/);if(!m?.[1]||!m?.[2])return null;if(!_(m[2]))return null;return{currency:m[1],issuer:m[2]}}function l(f,m){return`${v.Chain.Ripple}.${f}-${m}`}async function Df(f){if(f.isGasAsset){let{xrpToDrops:G}=await import("xrpl");return G(f.getValue("string"))}let m=d(f.toString());if(!m)throw new v.SwapKitError({errorKey:"toolbox_ripple_asset_not_supported",info:{asset:f.toString()}});return{currency:m.currency,issuer:m.issuer,value:f.getValue("string")}}function c(f){let m,G=()=>{return m??=import("xrpl").then(({Wallet:z})=>z.fromMnemonic(f)),m};return{getAddress:async()=>(await G()).address,signTransaction:async(z)=>(await G()).sign(z)}}function _(f){return R.isValidClassicAddress(f)||R.isValidXAddress(f)}function Wf(f={}){let m;async function G(){if(m)return m;return m=await Y.match(f).with({phrase:Y.P.string},({phrase:U})=>c(U)).with({signer:Y.P.any},({signer:U})=>U).otherwise(()=>{return}),m}let z;async function j(){let U=await v.getRPCUrl(v.Chain.Ripple);if(!U)throw new v.SwapKitError({errorKey:"toolbox_ripple_rpc_not_configured",info:{chain:v.Chain.Ripple}});let{Client:b}=await import("xrpl"),M=new b(U);return await M.connect(),M}async function W(){if(z){let U=await z.catch(()=>null);if(U?.isConnected())return U}return z=j(),z}let D=async()=>{let U=await G();if(!U)throw new v.SwapKitError({errorKey:"toolbox_ripple_signer_not_found"});return U.getAddress()},N=async(U)=>{let b=U||await D(),{baseDecimal:M}=v.getChainConfig(v.Chain.Ripple),$=await W();try{let[k,q]=await Promise.all([$.request({account:b,command:"account_info"}),$.request({account:b,command:"account_lines"})]),B=k.result.account_data.Balance,J=[v.AssetValue.from({chain:v.Chain.Ripple,fromBaseDecimal:M,value:B})];for(let Z of q.result.lines){let C=l(Z.currency,Z.account);if(Number.parseFloat(Z.balance)!==0)J.push(v.AssetValue.from({asset:C,asyncTokenLookup:!1,value:Z.balance}))}return J}catch(k){if(k.data?.error_code===x.ACCOUNT_NOT_FOUND)return[v.AssetValue.from({chain:v.Chain.Ripple,value:0})];throw new v.SwapKitError({errorKey:"toolbox_ripple_get_balance_error",info:{address:b,error:k}})}},n=async()=>{let{baseDecimal:U}=v.getChainConfig(v.Chain.Ripple),$=(await(await W()).request({command:"fee"})).result.drops.open_ledger_fee;return v.AssetValue.from({chain:v.Chain.Ripple,fromBaseDecimal:U,value:$})};async function E(U){let b=U||await D(),M=await W();try{return(await M.request({account:b,command:"account_lines"})).result.lines.map((k)=>({account:k.account,authorized:k.authorized??!1,balance:k.balance,currency:k.currency,freeze:k.freeze??!1,freezePeer:k.freeze_peer??!1,limit:k.limit,limitPeer:k.limit_peer,noRipple:k.no_ripple??!1,noRipplePeer:k.no_ripple_peer??!1,peerAuthorized:k.peer_authorized??!1,qualityIn:k.quality_in??0,qualityOut:k.quality_out??0}))}catch($){if($.data?.error_code===x.ACCOUNT_NOT_FOUND)return[];throw new v.SwapKitError({errorKey:"toolbox_ripple_get_trust_lines_error",info:{address:b,error:$}})}}async function i({address:U,currency:b,issuer:M}){let $=await E(U),k=Q(b);return $.some((q)=>{return Q(q.currency)===k&&q.account===M})}async function V({currency:U,issuer:b,limit:M,sender:$}){let k=$||await D();if(!_(b))throw new v.SwapKitError({errorKey:"core_transaction_invalid_recipient_address",info:{address:b}});let q=Number.parseFloat(M);if(Number.isNaN(q)||q<0)throw new v.SwapKitError({errorKey:"toolbox_ripple_invalid_trust_line_limit",info:{limit:M}});let B=await W(),J={Account:k,LimitAmount:{currency:U,issuer:b,value:M},TransactionType:"TrustSet"};return B.autofill(J)}async function o({assetValue:U,recipient:b,memo:M,sender:$,destinationTag:k,extendBySeconds:q=150}){if(!_(b))throw new v.SwapKitError({errorKey:"core_transaction_invalid_recipient_address"});let B=$||await D();if(U.chain!==v.Chain.Ripple)throw new v.SwapKitError({errorKey:"toolbox_ripple_asset_not_supported",info:{asset:U.toString()}});let J=await Df(U),Z={Account:B,Amount:J,Destination:b,TransactionType:"Payment",...k!==void 0&&{DestinationTag:k}};if(M)Z.Memos=[{Memo:{MemoData:Buffer.from(M).toString("hex")}}];let y=await(await W()).autofill(Z);if(y.LastLedgerSequence&&q>0)y.LastLedgerSequence+=Math.ceil(q/4);return y}async function I(U){let b=await G();if(!b)throw new v.SwapKitError({errorKey:"toolbox_ripple_signer_not_found"});return b.signTransaction(U)}async function L(U){let M=await(await W()).submitAndWait(U),{result:$}=M;if($.validated)return $.hash;let k=$.meta?.TransactionResult,q=Y.match(k).with(K.tecNO_LINE,()=>"No trust line exists for this token").with(K.tecPATH_DRY,()=>"Payment path could not deliver funds").with(K.tecFROZEN,()=>"Token is frozen").otherwise(()=>{return});throw new v.SwapKitError({errorKey:"toolbox_ripple_broadcast_error",info:{chain:v.Chain.Ripple,...q?{reason:q}:{txResult:k}}})}let t=async(U)=>{try{let b=await I(U);return L(b.tx_blob)}catch(b){if(b instanceof v.SwapKitError)throw b;throw new v.SwapKitError({errorKey:"toolbox_ripple_broadcast_error",info:{chain:v.Chain.Ripple,error:b}})}};async function a(U){let b=await G();if(!b)throw new v.SwapKitError({errorKey:"toolbox_ripple_signer_not_found"});let M=await b.getAddress(),$=await o({...U,sender:M}),k=await I($);return L(k.tx_blob)}async function s(U){let b=await G();if(!b)throw new v.SwapKitError({errorKey:"toolbox_ripple_signer_not_found"});let M=await b.getAddress(),$=await V({...U,sender:M}),k=await I($);return L(k.tx_blob)}function r(){let U=z;if(z=null,U)U.then((b)=>{if(b?.isConnected())return b.disconnect();return}).catch((b)=>{console.warn("XRPL Cleanup failed silently:",b)})}return{broadcastTransaction:L,createSigner:c,createTransaction:o,disconnect:r,estimateTransactionFee:n,getAddress:D,getBalance:N,getTrustLines:E,hasTrustLine:i,setTrustLine:V,setTrustLineAndBroadcast:s,signAndBroadcastTransaction:t,signTransaction:I,transfer:a,validateAddress:_}}var v,R,Y,x,K;var Bf=A(()=>{w();v=require("@swapkit/helpers"),R=require("ripple-address-codec"),Y=require("ts-pattern");w();h();x={ACCOUNT_NOT_FOUND:19},K={tecFROZEN:"tecFROZEN",tecNO_AUTH:"tecNO_AUTH",tecNO_DST:"tecNO_DST",tecNO_LINE:"tecNO_LINE",tecPATH_DRY:"tecPATH_DRY",tecUNFUNDED_OFFER:"tecUNFUNDED_OFFER"}});Bf();
|
package/dist/src/ripple/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{ea as P}from"../../chunk-ntbvmmch.js";import{AssetValue as _,Chain as D,getChainConfig as E,getRPCUrl as i,SwapKitError as $}from"@swapkit/helpers";import{isValidClassicAddress as t,isValidXAddress as a}from"ripple-address-codec";import{match as V,P as o}from"ts-pattern";import{SwapKitError as d}from"@swapkit/helpers";function H(f){return/^[0-9A-Fa-f]{40}$/.test(f)}function Q(f){if(H(f))return f.toUpperCase();if(f.length<=3){let z=Buffer.from(f.padEnd(3,"\x00")).toString("hex");return`00${"0".repeat(22)}${z}${"0".repeat(10)}`.toUpperCase()}let m=Buffer.from(f).toString("hex").toUpperCase();if(m.length>40)throw new d({errorKey:"toolbox_ripple_asset_not_supported",info:{asset:f,reason:"Currency exceeds maximum length (20 bytes)"}});return m.padEnd(40,"0")}function mf(f){if(!H(f))return f;if(f.toUpperCase().startsWith("00")){let m=f.slice(24,30);try{let z=Buffer.from(m,"hex").toString("ascii").replace(/\0/g,"");if(/^[A-Za-z0-9?!@#$%^&*<>(){}[\]|]+$/.test(z)&&z.length>0)return z}catch{}return f.toUpperCase()}try{let m=f.replace(/0+$/,""),z=m.length%2===0?m:`${m}0`,M=Buffer.from(z,"hex").toString("utf8");if(/^[\x20-\x7E]+$/.test(M))return M}catch{}return f.toUpperCase()}function Y(f){if(H(f))return f.toUpperCase();if(f.length<=3)return f;return Q(f)}import{RequestClient as l,warnOnce as n}from"@swapkit/helpers";var w=[{currency:"USD",decimals:15,domain:"circle.com",issuer:"rcEGREd8NmkKRE8GE424sksyt1tJVFZwu",name:"Circle USDC",verified:!0},{currency:"RLUSD",decimals:15,domain:"ripple.com",issuer:"rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De",name:"Ripple USD",verified:!0},{currency:"USD",decimals:15,domain:"bitstamp.net",issuer:"rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B",name:"Bitstamp USD",verified:!0},{currency:"BTC",decimals:15,domain:"bitstamp.net",issuer:"rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B",name:"Bitstamp BTC",verified:!0},{currency:"EUR",decimals:15,domain:"bitstamp.net",issuer:"rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B",name:"Bitstamp EUR",verified:!0},{currency:"USD",decimals:15,domain:"gatehub.net",issuer:"rhub8VRN55s94qWKDv6jmDy1pUykJzF3wq",name:"GateHub USD",verified:!0},{currency:"EUR",decimals:15,domain:"gatehub.net",issuer:"rhub8VRN55s94qWKDv6jmDy1pUykJzF3wq",name:"GateHub EUR",verified:!0},{currency:"BTC",decimals:15,domain:"gatehub.net",issuer:"rchGBxcD1A1C2tdxF6papQYZ8kjRKMYcL",name:"GateHub BTC",verified:!0},{currency:"ETH",decimals:15,domain:"gatehub.net",issuer:"rcA8X3TVMST1n3CJeAdGk1RdRCHii7N2h",name:"GateHub ETH",verified:!0},{currency:"SOLO",decimals:15,domain:"sologenic.com",issuer:"rsoLo2S1kiGeCcn6hCUXVrCpGMWLrRrLZz",name:"Sologenic",verified:!0}];async function Gf(f,m){let z=Y(f),M=w.find((j)=>Y(j.currency)===z&&j.issuer===m);if(M)return M;try{let j=await l.get(`https://api.xrplmeta.org/token/${f}:${m}`);if(j)return{currency:f,decimals:15,description:j.desc,domain:j.domain,icon:j.icon,issuer:m,name:j.name,verified:j.self_assessment?.is_regulated||j.self_assessment?.is_licensed}}catch(j){n({condition:!0,id:`xrpl_token_lookup_${f}_${m}`,warning:`Failed to fetch XRPL token info for ${f}:${m}: ${j}`})}return{currency:f,decimals:15,issuer:m,verified:!1}}function kf(f){return w.filter((m)=>m.issuer===f)}function zf(f,m){let z=Y(f);return w.some((M)=>Y(M.currency)===z&&M.issuer===m)}var C={ACCOUNT_NOT_FOUND:19},O={tecFROZEN:"tecFROZEN",tecNO_AUTH:"tecNO_AUTH",tecNO_DST:"tecNO_DST",tecNO_LINE:"tecNO_LINE",tecPATH_DRY:"tecPATH_DRY",tecUNFUNDED_OFFER:"tecUNFUNDED_OFFER"};function s(f){let m=f.match(/^XRP\.([A-Fa-f0-9]{40}|[\x20-\x7E]{1,20})-([a-zA-Z0-9]{25,34})$/);if(!m?.[1]||!m?.[2])return null;if(!I(m[2]))return null;return{currency:m[1],issuer:m[2]}}function r(f,m){return`${D.Ripple}.${f}-${m}`}async function e(f){if(f.isGasAsset){let{xrpToDrops:z}=await import("xrpl");return z(f.getValue("string"))}let m=s(f.toString());if(!m)throw new $({errorKey:"toolbox_ripple_asset_not_supported",info:{asset:f.toString()}});return{currency:m.currency,issuer:m.issuer,value:f.getValue("string")}}function S(f){let m,z=()=>{return m??=import("xrpl").then(({Wallet:M})=>M.fromMnemonic(f)),m};return{getAddress:async()=>(await z()).address,signTransaction:async(M)=>(await z()).sign(M)}}function I(f){return t(f)||a(f)}function Wf(f={}){let m;async function z(){if(m)return m;return m=await V(f).with({phrase:o.string},({phrase:U})=>S(U)).with({signer:o.any},({signer:U})=>U).otherwise(()=>{return}),m}let M;async function j(){let U=await i(D.Ripple);if(!U)throw new $({errorKey:"toolbox_ripple_rpc_not_configured",info:{chain:D.Ripple}});let{Client:b}=await import("xrpl"),G=new b(U);return await G.connect(),G}async function Z(){if(M){let U=await M.catch(()=>null);if(U?.isConnected())return U}return M=j(),M}let X=async()=>{let U=await z();if(!U)throw new $({errorKey:"toolbox_ripple_signer_not_found"});return U.getAddress()},T=async(U)=>{let b=U||await X(),{baseDecimal:G}=E(D.Ripple),k=await Z();try{let[v,q]=await Promise.all([k.request({account:b,command:"account_info"}),k.request({account:b,command:"account_lines"})]),B=v.result.account_data.Balance,J=[_.from({chain:D.Ripple,fromBaseDecimal:G,value:B})];for(let W of q.result.lines){let A=r(W.currency,W.account);if(Number.parseFloat(W.balance)!==0)J.push(_.from({asset:A,asyncTokenLookup:!1,value:W.balance}))}return J}catch(v){if(v.data?.error_code===C.ACCOUNT_NOT_FOUND)return[_.from({chain:D.Ripple,value:0})];throw new $({errorKey:"toolbox_ripple_get_balance_error",info:{address:b,error:v}})}},u=async()=>{let{baseDecimal:U}=E(D.Ripple),k=(await(await Z()).request({command:"fee"})).result.drops.open_ledger_fee;return _.from({chain:D.Ripple,fromBaseDecimal:U,value:k})};async function K(U){let b=U||await X(),G=await Z();try{return(await G.request({account:b,command:"account_lines"})).result.lines.map((v)=>({account:v.account,authorized:v.authorized??!1,balance:v.balance,currency:v.currency,freeze:v.freeze??!1,freezePeer:v.freeze_peer??!1,limit:v.limit,limitPeer:v.limit_peer,noRipple:v.no_ripple??!1,noRipplePeer:v.no_ripple_peer??!1,peerAuthorized:v.peer_authorized??!1,qualityIn:v.quality_in??0,qualityOut:v.quality_out??0}))}catch(k){if(k.data?.error_code===C.ACCOUNT_NOT_FOUND)return[];throw new $({errorKey:"toolbox_ripple_get_trust_lines_error",info:{address:b,error:k}})}}async function p({address:U,currency:b,issuer:G}){let k=await K(U),v=Q(b);return k.some((q)=>{return Q(q.currency)===v&&q.account===G})}async function R({currency:U,issuer:b,limit:G,sender:k}){let v=k||await X();if(!I(b))throw new $({errorKey:"core_transaction_invalid_recipient_address",info:{address:b}});let q=Number.parseFloat(G);if(Number.isNaN(q)||q<0)throw new $({errorKey:"toolbox_ripple_invalid_trust_line_limit",info:{limit:G}});let B=await Z(),J={Account:v,LimitAmount:{currency:U,issuer:b,value:G},TransactionType:"TrustSet"};return B.autofill(J)}async function y({assetValue:U,recipient:b,memo:G,sender:k,destinationTag:v,extendBySeconds:q=150}){if(!I(b))throw new $({errorKey:"core_transaction_invalid_recipient_address"});let B=k||await X();if(U.chain!==D.Ripple)throw new $({errorKey:"toolbox_ripple_asset_not_supported",info:{asset:U.toString()}});let J=await e(U),W={Account:B,Amount:J,Destination:b,TransactionType:"Payment",...v!==void 0&&{DestinationTag:v}};if(G)W.Memos=[{Memo:{MemoData:Buffer.from(G).toString("hex")}}];let L=await(await Z()).autofill(W);if(L.LastLedgerSequence&&q>0)L.LastLedgerSequence+=Math.ceil(q/4);return L}async function N(U){let b=await z();if(!b)throw new $({errorKey:"toolbox_ripple_signer_not_found"});return b.signTransaction(U)}async function F(U){let G=await(await Z()).submitAndWait(U),{result:k}=G;if(k.validated)return k.hash;let v=k.meta?.TransactionResult,q=V(v).with(O.tecNO_LINE,()=>"No trust line exists for this token").with(O.tecPATH_DRY,()=>"Payment path could not deliver funds").with(O.tecFROZEN,()=>"Token is frozen").otherwise(()=>{return});throw new $({errorKey:"toolbox_ripple_broadcast_error",info:{chain:D.Ripple,...q?{reason:q}:{txResult:v}}})}let g=async(U)=>{try{let b=await N(U);return F(b.tx_blob)}catch(b){if(b instanceof $)throw b;throw new $({errorKey:"toolbox_ripple_broadcast_error",info:{chain:D.Ripple,error:b}})}};async function h(U){let b=await z();if(!b)throw new $({errorKey:"toolbox_ripple_signer_not_found"});let G=await b.getAddress(),k=await y({...U,sender:G}),v=await N(k);return F(v.tx_blob)}async function x(U){let b=await z();if(!b)throw new $({errorKey:"toolbox_ripple_signer_not_found"});let G=await b.getAddress(),k=await R({...U,sender:G}),v=await N(k);return F(v.tx_blob)}function c(){let U=M;if(M=null,U)U.then((b)=>{if(b?.isConnected())return b.disconnect();return}).catch((b)=>{console.warn("XRPL Cleanup failed silently:",b)})}return{broadcastTransaction:F,createSigner:S,createTransaction:y,disconnect:c,estimateTransactionFee:u,getAddress:X,getBalance:T,getTrustLines:K,hasTrustLine:p,setTrustLine:R,setTrustLineAndBroadcast:x,signAndBroadcastTransaction:g,signTransaction:N,transfer:h,validateAddress:I}}export{I as validateRippleAddress,s as parseXrplTokenIdentifier,Y as normalizeCurrency,zf as isKnownToken,H as isHexCurrency,mf as hexToCurrency,Gf as getXrplTokenInfo,Wf as getRippleToolbox,kf as getKnownTokensByIssuer,r as formatXrplTokenIdentifier,Q as currencyToHex,O as XRPL_TOKEN_ERROR_CODES,w as XRPL_KNOWN_TOKENS};
|
package/dist/src/solana/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{da as M}from"../../chunk-54gntgt1.js";import{ea as w}from"../../chunk-ntbvmmch.js";import{PublicKey as q}from"@solana/web3.js";import{AssetValue as N,Chain as W,DerivationPath as V,derivationPathToString as K,getChainConfig as E,getRPCUrl as v,NetworkDerivationPath as D,SwapKitError as F,updateDerivationPath as h}from"@swapkit/helpers";import{match as k,P as Z}from"ts-pattern";async function m(T){let l=N.from({address:T,chain:W.Solana});if(l.symbol!=="UNKNOWN")return{decimals:l.decimal||0,id:T,logoURI:l.getIconUrl(),name:l.symbol,symbol:l.ticker};let f=`https://lite-api.jup.ag/tokens/v2/search?query=${encodeURIComponent(T)}`;try{let x=await fetch(f);if(!x.ok)return null;let G=await x.json();if(!Array.isArray(G)||G.length===0)return null;return G.find((p)=>p.id===T)||null}catch{return null}}async function A(T){let l=await j(),{PublicKey:f}=await import("@solana/web3.js"),{TOKEN_PROGRAM_ID:x}=await import("@solana/spl-token"),G=new f(T),{baseDecimal:O}=E(W.Solana),p=await l.getBalance(G),b=[N.from({chain:W.Solana,fromBaseDecimal:O,value:p||0})],y=await l.getParsedTokenAccountsByOwner(G,{programId:x});for(let{account:R}of y.value){let P=R.data.parsed.info,J=P.mint,B=P.tokenAmount.amount;if(Number(B)===0)continue;let z=await m(J),S=z?.symbol||"UNKNOWN",L=z?.decimals||P.tokenAmount.decimals;b.push(N.from({asset:`${W.Solana}.${S}-${J}`,fromBaseDecimal:L,value:B}))}return b}function H(T){try{let l=new q(T);return q.isOnCurve(l.toBytes())}catch{return!1}}function t(T){let l=T&&"index"in T?T.index||0:0,f=K(T&&"derivationPath"in T&&T.derivationPath?T.derivationPath:h(D[W.Solana],{index:l})),x;async function G(){if(x)return x;return x=await k(T).with({phrase:Z.string},({phrase:p})=>$({derivationPath:f,phrase:p})).with({signer:Z.any},({signer:p})=>p).otherwise(()=>{return}),x}async function O(){let p=await G();return p?.publicKey?I(p.publicKey):""}return{broadcastTransaction:Q(j),createKeysForPath:$,createTransaction:X(j),createTransactionFromInstructions:d,estimateTransactionFee:u(j),getAddress:O,getAddressFromPubKey:I,getBalance:M(W.Solana),getBalanceFromRPC:A,getConnection:j,getPubkeyFromAddress:(p)=>new q(p),signAndBroadcastTransaction:async(p)=>{let b=await _(j,G)(p);return Q(j)(b)},signTransaction:_(j,G),transfer:o(j,G),validateAddress:H}}function u(T){return async({recipient:l,assetValue:f,memo:x,isProgramDerivedAddress:G,sender:O})=>{let p=await T(),y=(await X(T)({assetValue:f,isProgramDerivedAddress:G,memo:x,recipient:l,sender:O})).compileMessage(),R=await p.getFeeForMessage(y);if(R.value===null)throw new F("toolbox_fee_estimation_failed","Could not estimate Solana fee.");let{baseDecimal:P}=E(W.Solana);return N.from({chain:W.Solana,fromBaseDecimal:P,value:R.value})}}async function j(){let{Connection:T}=await import("@solana/web3.js"),l=await v(W.Solana);return new T(l,{commitment:"confirmed",fetchMiddleware:(f,x,G)=>{let O={};for(let[p,b]of Object.entries(x?.headers??{})){let y=p.toLowerCase();if(y!=="pragma"&&y!=="solana-client")O[p]=b}G(f,{...x,headers:O})}})}function C(T){return async({assetValue:l,recipient:f,sender:x,isProgramDerivedAddress:G})=>{let O=await T(),p=new q(x);if(l.isGasAsset){let{Transaction:b,SystemProgram:y}=await import("@solana/web3.js");return new b().add(y.transfer({fromPubkey:p,lamports:l.getBaseValue("number"),toPubkey:new q(f)}))}if(l.address)return a({amount:l.getBaseValue("number"),connection:O,decimals:l.decimal,from:p,isProgramDerivedAddress:G,recipient:f,tokenAddress:l.address});return}}async function a({tokenAddress:T,recipient:l,from:f,connection:x,amount:G,decimals:O,isProgramDerivedAddress:p}){let{getAssociatedTokenAddress:b,getAccount:y,createAssociatedTokenAccountInstruction:R,createTransferCheckedInstruction:P}=await import("@solana/spl-token"),{Transaction:J}=await import("@solana/web3.js"),B=new J,z=new q(T),S=await b(z,f),L=new q(l),U=await b(z,L,p),Y=!1;try{await y(x,U),Y=!0}catch{}if(!Y)B.add(R(f,U,L,z));return B.add(P(S,z,U,f,G,O)),B}function X(T){return async({recipient:l,assetValue:f,memo:x,isProgramDerivedAddress:G,sender:O})=>{let{createMemoInstruction:p}=await import("@solana/spl-memo"),b=new q(O);if(!(G||H(l)))throw new F("core_transaction_invalid_recipient_address");let y=await T(),R=await C(T)({assetValue:f,isProgramDerivedAddress:G,recipient:l,sender:O});if(!R)throw new F("core_transaction_invalid_sender_address");if(x)R.add(p(x));let P=await y.getLatestBlockhash();return R.recentBlockhash=P.blockhash,R.feePayer=b,R}}async function d({instructions:T}){let{Transaction:l}=await import("@solana/web3.js"),f=new l().add(...T);if(!f)throw new F("core_transaction_invalid_sender_address");return f}function o(T,l){return async({recipient:f,assetValue:x,memo:G,isProgramDerivedAddress:O})=>{let p=await l();if(!p)throw new F("core_transaction_invalid_sender_address");let b=p.publicKey?.toString()??(await p.connect()).publicKey.toString(),y=await X(T)({assetValue:x,isProgramDerivedAddress:O,memo:G,recipient:f,sender:b});if("signTransaction"in p){let R=await p.signTransaction(y);return Q(T)(R)}return y.sign(p),Q(T)(y)}}function Q(T){return async(l)=>{return(await T()).sendRawTransaction(l.serialize())}}function _(T,l){return async(f)=>{let x=await l();if(!x)throw new F("toolbox_solana_no_signer");let{VersionedTransaction:G}=await import("@solana/web3.js");if(!(f instanceof G)){let p=await(await T()).getLatestBlockhash();f.recentBlockhash=p.blockhash,f.feePayer=x.publicKey||void 0}if("connect"in x)return await x.signTransaction(f);return f.sign([x]),f}}async function $({phrase:T,derivationPath:l=V.SOL}){let{HDKey:f}=await import("micro-key-producer/slip10.js"),{mnemonicToSeedSync:x}=await import("@scure/bip39"),{Keypair:G}=await import("@solana/web3.js"),O=x(T),p=f.fromMasterSeed(O);return G.fromSeed(p.derive(l,!0).privateKey)}function I(T){return T.toString()}export{H as validateSolanaAddress,t as getSolanaToolbox,m as fetchTokenMetaData,$ as createKeysForPath};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{da as h}from"../../chunk-54gntgt1.js";import{ea as M}from"../../chunk-ntbvmmch.js";import{AssetValue as R,Chain as _,DerivationPath as u,derivationPathToString as n,getChainConfig as c,getRPCUrl as b,NetworkDerivationPath as i,SwapKitError as X,updateDerivationPath as s}from"@swapkit/helpers";import{match as m,P as U}from"ts-pattern";var K="0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d",g="0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7",C="0x01a736d6ed154502257f02b1ccdf4d9d1089f80811cd6acad48e6b6a9d1f2003";function v(W){if(!W)return!1;return/^0x[0-9a-fA-F]{1,64}$/.test(W)}async function S({phrase:W,derivationPath:Y=u.STRK}){let{HDKey:k}=await import("@scure/bip32"),{mnemonicToSeedSync:x}=await import("@scure/bip39"),{ec:Z,hash:F,encode:$,CallData:j}=await import("starknet"),O=x(W),V=k.fromMasterSeed(O).derive(Y);if(!V.privateKey)throw new X("toolbox_starknet_no_signer");let B=$.addHexPrefix(Buffer.from(V.privateKey).toString("hex")),w=Z.starkCurve.grindKey(B),E=$.addHexPrefix(w),H=Z.starkCurve.getStarkKey(E),y=j.compile([H,0]);return{address:F.calculateContractAddressFromHash(H,C,y,0),privateKey:E,publicKey:H}}async function p({phrase:W,derivationPath:Y=u.STRK}){let{Account:k,RpcProvider:x}=await import("starknet"),{privateKey:Z,address:F}=await S({derivationPath:Y,phrase:W}),$=await b(_.Starknet),j=new x({nodeUrl:$});return new k({address:F,provider:j,signer:Z})}function t(W){let Y=_.Starknet,k=W&&"index"in W?W.index||0:0,x=n(W&&"derivationPath"in W&&W.derivationPath?W.derivationPath:s(i[Y],{index:k})),Z,F,$;async function j(){if(F)return F;let{RpcProvider:q}=await import("starknet"),z=await b(Y);return F=new q({nodeUrl:z}),F}async function O(q){let z=await j(),G=q||await w();if(!G)return!1;try{return await z.getClassHashAt(G),!0}catch(I){if(I instanceof Error&&I.message.includes("Contract not found"))return!1;let J=I;if(J?.code===20||J?.code===19)return!1;throw I}}async function T(){let{CallData:q,hash:z}=await import("starknet"),G=await j(),I=await B();if(!I)throw new X("toolbox_starknet_no_signer");if(!$)throw new X({errorKey:"toolbox_starknet_account_not_deployed",info:{message:"Cannot deploy account: public key not available. Use phrase-based wallet initialization."}});if(await O())return I.address;let f=q.compile([$,0]);if(z.calculateContractAddressFromHash($,C,f,0).toLowerCase()!==I.address.toLowerCase())throw new X({errorKey:"toolbox_starknet_account_not_deployed",info:{message:"Address mismatch during deployment verification"}});let L={addressSalt:$,classHash:C,constructorCalldata:f},{transaction_hash:N}=await I.deployAccount(L);return await G.waitForTransaction(N),N}async function V(){if(!await O()){if(!$)throw new X({errorKey:"toolbox_starknet_account_not_deployed",info:{message:"Starknet account is not deployed and cannot be auto-deployed without public key. Use phrase-based wallet initialization."}});await T()}}async function B(){if(Z)return Z;return Z=await m(W).with({phrase:U.string},async({phrase:q})=>{let{Account:z,RpcProvider:G}=await import("starknet"),{privateKey:I,address:J,publicKey:f}=await S({derivationPath:x,phrase:q});$=f;let Q=await b(_.Starknet),L=new G({nodeUrl:Q});return new z({address:J,provider:L,signer:I})}).with({address:U.string,privateKey:U.string},async({privateKey:q,address:z})=>{let{Account:G}=await import("starknet"),I=await j();return new G({address:z,provider:I,signer:q})}).with({signer:U.instanceOf(Object)},({signer:q})=>q).otherwise(()=>{return}),Z}async function w(){return(await B())?.address??""}async function E(q){let z=await j(),{uint256:G,CallData:I}=await import("starknet"),J=[],f=[K,g];for(let Q of f)try{let[L="0",N="0"]=await z.callContract({calldata:I.compile({account:q}),contractAddress:Q,entrypoint:"balanceOf"}),D=G.uint256ToBN({high:L,low:N});m(Q).with(K,()=>{J.push(R.from({chain:Y,value:D}))}).with(g,()=>{if(D>0n)J.push(R.from({asset:`${Y}.ETH-${Q}`,value:D}))}).otherwise(()=>{})}catch{}return J}async function H({recipient:q,assetValue:z}){let{CallData:G,uint256:I}=await import("starknet");if(!v(q))throw new X("core_transaction_invalid_recipient_address",{address:q});let J=z.isGasAsset?K:z.address;if(!J)throw new X("toolbox_starknet_invalid_address",{address:J,assetValue:z});let f=I.bnToUint256(z.getBaseValue("bigint"));return[{calldata:G.compile([q,f]),contractAddress:J,entrypoint:"transfer"}]}async function y({recipient:q,assetValue:z,sender:G}){let{baseDecimal:I}=c(_.Starknet),J=await B(),f=await m({sender:G,signer:J}).with({sender:U.string},async({sender:Q})=>{let{Account:L}=await import("starknet"),N=await j();return new L({address:Q,provider:N,signer:"0x0"})}).with({signer:U.nonNullable},({signer:Q})=>Q).otherwise((Q)=>{throw new X({errorKey:"toolbox_starknet_fee_estimation_failed",info:{message:"Estimating fee needs a valid sender address or signer",params:Q}})});try{let Q=await H({assetValue:z,recipient:q}),L=await f.estimateInvokeFee(Q);if(L?.overall_fee)return R.from({chain:Y,fromBaseDecimal:I,value:L.overall_fee})}catch(Q){throw new X("toolbox_starknet_fee_estimation_failed",Q)}return R.from({chain:Y,value:"0.00001"})}async function A({recipient:q,assetValue:z,memo:G}){let I=await B();if(!I)throw new X("toolbox_starknet_no_signer");await V();let J=await H({assetValue:z,memo:G,recipient:q});return(await I.execute(J)).transaction_hash}async function l(q){let z=await B();if(!z)throw new X("toolbox_starknet_no_signer");let G=await z.signMessage(q);return Array.isArray(G)?G:[G.r.toString(),G.s.toString()]}async function P(q){let z=await B();if(!z)throw new X("toolbox_starknet_no_signer");return await V(),(await z.execute(q)).transaction_hash}function d(q){return P(q)}function o(q,z=!0){try{return h(Y)(q,z)}catch{return E(q)}}return{broadcastTransaction:P,createKeysForPath:p,createTransaction:H,deployAccount:T,estimateTransactionFee:y,getAddress:w,getBalance:o,getProvider:j,isAccountDeployed:O,signAndBroadcastTransaction:d,signMessage:l,transfer:A,validateAddress:v}}export{v as validateStarknetAddress,p as starknetCreateKeysForPath,t as getStarknetToolbox,S as deriveStarknetKeys};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{ea as Z}from"../../chunk-ntbvmmch.js";import{AssetValue as f,Chain as R,derivationPathToString as g,getChainConfig as h,getRPCUrl as w,NetworkDerivationPath as m,SKConfig as u,SwapKitError as $}from"@swapkit/helpers";import{match as p,P as l}from"ts-pattern";var c=/^G[A-Z2-7]{55}$/;function x(q){if(!q||typeof q!=="string"||!q.startsWith("G")||q.length!==56)return!1;return c.test(q)}function o(q){if(typeof q!=="object"||q===null)return;let W="response"in q?q.response:void 0;return typeof W?.status==="number"?W.status:void 0}function d(q){return o(q)===504}function n(q){return q.hash?.().toString("hex")}function i(q){return[...new Set([q,...u.get("rpcUrls")[R.Stellar]])].filter(Boolean)}async function t(q){if(!x(q))return!1;try{let{StrKey:W}=await import("@stellar/stellar-sdk");return W.isValidEd25519PublicKey(q)}catch{return!1}}function s(q={}){let W,E=q.derivationPath||m[R.Stellar],k=g(E.slice(0,3));async function v({phrase:P,path:j}){let{HDKey:J}=await import("micro-key-producer/slip10.js"),{mnemonicToSeedSync:L}=await import("@scure/bip39"),{Keypair:G}=await import("@stellar/stellar-sdk"),Q=L(P),X=J.fromMasterSeed(Q).derive(j,!0);return G.fromRawEd25519Seed(Buffer.from(X.privateKey))}async function F(){if(W)return W;let P=p(q).with({phrase:l.string},({phrase:j})=>j).otherwise(()=>{return});if(!P)throw new $("toolbox_stellar_no_signer");return W=await v({path:k,phrase:P}),W}async function I(P){let{Horizon:j}=await import("@stellar/stellar-sdk"),J=P||await w(R.Stellar);return new j.Server(J)}async function S(P,j){for(let J of j)try{return(await(await I(J)).transactions().transaction(P).call()).hash||P}catch{}return}async function B(P,j){let J=await w(R.Stellar),L=i(J),G=n(P),Q;for(let Y of L)try{let X=await I(Y),{hash:_}=await X.submitTransaction(P);return _}catch(X){if(Q=X,!d(X))break;let _=G?await S(G,L):void 0;if(_)return _}throw new $(j,Q)}async function N(){try{return(await F()).publicKey()}catch{return""}}async function y(P){let j=P||await N();if(!j)throw new $("toolbox_stellar_account_not_found");try{return(await(await I()).loadAccount(j)).balances.map((G)=>{if(G.asset_type==="native")return f.from({chain:R.Stellar,value:G.balance});let Q="asset_code"in G?G.asset_code:"",Y="asset_issuer"in G?G.asset_issuer:"";return f.from({asset:`${R.Stellar}.${Q}-${Y}`,asyncTokenLookup:!1,value:G.balance})})}catch{return[f.from({chain:R.Stellar,value:0})]}}async function U({recipient:P,assetValue:j,memo:J,sender:L}){if(J){if(new TextEncoder().encode(J).length>28)throw new $("helpers_invalid_memo_type")}if(!await t(P))throw new $("core_transaction_invalid_recipient_address");let Q=L||await N();if(!Q)throw new $("toolbox_stellar_no_signer");let{Asset:Y,Memo:X,Networks:_,Operation:D,TransactionBuilder:T}=await import("@stellar/stellar-sdk"),O=await I(),V=await O.fetchBaseFee(),b=await O.loadAccount(Q),M=new T(b,{fee:String(V),networkPassphrase:_.PUBLIC});if(j.isGasAsset)try{await O.loadAccount(P),M.addOperation(D.payment({amount:j.getValue("string"),asset:Y.native(),destination:P}))}catch{M.addOperation(D.createAccount({destination:P,startingBalance:j.getValue("string")}))}else M.addOperation(D.payment({amount:j.getValue("string"),asset:new Y(j.symbol,j.address),destination:P}));if(J)M.addMemo(X.text(J));return M.setTimeout(30).build()}async function C(P){let{TransactionBuilder:j,Networks:J}=await import("@stellar/stellar-sdk"),L=await F(),G=j.fromXDR(P.toXDR(),J.PUBLIC);return G.sign(L),G}function z(P){return B(P,"toolbox_stellar_broadcast_error")}async function K({recipient:P,assetValue:j,memo:J}){let L=await F(),G=L.publicKey(),Q=await U({assetValue:j,memo:J,recipient:P,sender:G});return Q.sign(L),B(Q,"toolbox_stellar_transaction_failed")}async function A(P){let j=await C(P);return z(j)}async function H(){let{baseDecimal:P}=h(R.Stellar);try{let L=(await(await I()).feeStats()).fee_charged.p50;return f.from({chain:R.Stellar,fromBaseDecimal:P,value:L})}catch{return f.from({chain:R.Stellar,fromBaseDecimal:P,value:"100"})}}return{broadcastTransaction:z,createTransaction:U,estimateTransactionFee:H,getAddress:N,getBalance:y,signAndBroadcastTransaction:A,signTransaction:C,transfer:K,validateAddress:x}}export{x as validateStellarAddress,s as getStellarToolbox};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var V=Object.create;var{getPrototypeOf:B,defineProperty:W,getOwnPropertyNames:X,getOwnPropertyDescriptor:w}=Object,Y=Object.prototype.hasOwnProperty;function Z(o){return this[o]}var x,K,jo=(o,I,m)=>{var j=o!=null&&typeof o==="object";if(j){var v=I?x??=new WeakMap:K??=new WeakMap,t=v.get(o);if(t)return t}m=o!=null?V(B(o)):{};let f=I||!o||!o.__esModule?W(m,"default",{value:o,enumerable:!0}):m;for(let R of X(o))if(!Y.call(f,R))W(f,R,{get:Z.bind(o,R),enumerable:!0});if(j)v.set(o,f);return f},S=(o)=>{var I=(Q??=new WeakMap).get(o),m;if(I)return I;if(I=W({},"__esModule",{value:!0}),o&&typeof o==="object"||typeof o==="function"){for(var j of X(o))if(!Y.call(I,j))W(I,j,{get:Z.bind(o,j),enumerable:!(m=w(o,j))||m.enumerable})}return Q.set(o,I),I},Q;var p=(o)=>o;function k(o,I){this[o]=p.bind(null,I)}var h=(o,I)=>{for(var m in I)W(o,m,{get:I[m],enumerable:!0,configurable:!0,set:k.bind(I,m)})};var vo=(o,I)=>()=>(o&&(I=o(o=0)),I);var mo={};h(mo,{isKeyringPair:()=>F,getSubstrateToolbox:()=>g,getSubstrateAddressValidator:()=>P,createSubstrateToolbox:()=>b,createKeyring:()=>q,SubstrateNetwork:()=>G});module.exports=S(mo);var H=require("@polkadot/util"),T=require("@polkadot/util-crypto"),y=require("@swapkit/helpers"),O=require("ts-pattern");var N=require("@swapkit/helpers");async function n(o,I,m){let j=[I.set(0)];if(!m)return j;try{let v=await o.query.system?.account?.(m);if(!v)return j;let{data:{free:t}}=v,f=N.SwapKitNumber.fromBigInt(BigInt(t.toString()),I.decimal).getValue("string");return[I.set(f)]}catch(v){let t=v instanceof Error?v.message:String(v);return console.error(`Error fetching substrate balance: ${t}`),j}}async function l(o,I,m){let j=[I.set(0)];if(!m)return j;try{let v=await o.query.flip?.account?.(m);if(!v)return j;let t=v.balance||v.data?.balance;if(!t||t.isEmpty)return j;let f=N.SwapKitNumber.fromBigInt(BigInt(t.toString()),I.decimal).getValue("string");return[I.set(f)]}catch(v){let t=v instanceof Error?v.message:String(v);return console.error(`Error fetching chainflip balance: ${t}`),j}}function _(o,I){return function(j){let v=N.AssetValue.from({chain:o});switch(o){case N.Chain.Chainflip:return l(I,v,j);default:return n(I,v,j)}}}var A={decimals:[10],displayName:"Polkadot Relay Chain",network:"polkadot",prefix:0,standardAccount:"*25519",symbols:["DOT"],website:"https://polkadot.network"},c={decimals:[18],displayName:"Chainflip",network:"chainflip",prefix:2112,standardAccount:"*25519",symbols:["FLIP"],website:"https://chainflip.io/"},i={decimals:[],displayName:"Substrate",network:"substrate",prefix:42,standardAccount:"*25519",symbols:[],website:"https://substrate.io/"},G={DOT:A,FLIP:c,GENERIC:i};function g(o,I){return O.match(o).with(...y.SubstrateChains,(m)=>b({chain:m,...I})).exhaustive()}function F(o){return"address"in o}async function q(o,I){let{Keyring:m}=await import("@polkadot/keyring"),{cryptoWaitReady:j}=await import("@polkadot/util-crypto");return await j(),new m({ss58Format:I,type:"sr25519"}).addFromUri(o)}var z=(o,I)=>o.rpc.system.accountNextIndex(I),J=(o,{recipient:I,assetValue:m})=>o.tx.balances?.transferAllowDeath?.(I,m.getBaseValue("number")),d=async(o,I,{recipient:m,assetValue:j,sender:v})=>{let t=J(o,{assetValue:j,recipient:m});if(!t)throw new y.SwapKitError("toolbox_substrate_transfer_error");let f=F(I),R=f?I.address:v;if(!R)throw new y.SwapKitError("core_transaction_invalid_sender_address");let C=await z(o,R);return(await t.signAndSend(f?I:R,{nonce:C,signer:f?void 0:I})).toString()},e=async(o,I,m,{recipient:j,assetValue:v,sender:t})=>{let f=J(o,{assetValue:v,recipient:j}),R=F(I)?I.address:t;if(!R)return Promise.resolve(m.set(0));let C=await f?.paymentInfo(R,{nonce:await z(o,R)})||{partialFee:0};return m.set(y.SwapKitNumber.fromBigInt(BigInt(C.partialFee.toString()),m.decimal).getValue("string"))},r=async(o,I)=>{if(I)return o.send(I);return(await o.send()).toString()},s=async(o,I)=>{return await I.signAsync(o)},a=(o,I,m)=>{if(m)return I.signAndSend(o,m);return I.signAndSend(o).toString()},oo=async({signer:o,address:I,tx:m,callback:j,api:v})=>{let t=await z(v,I);if(j)m.signAndSend(I,{nonce:t,signer:o},j);return m.signAndSend(I,{nonce:t,signer:o}).toString()};function Io(o,I){let m=T.decodeAddress(o);return T.encodeAddress(m,I)}function $(o,I){return H.isHex(o)?H.hexToU8a(o):T.decodeAddress(o,void 0,I)}function U(o,I="ss58",m){if(I==="hex")return H.u8aToHex(o);return T.encodeAddress(o,m)}function P({chain:o,prefix:I}){let m=I||O.match(o).with(y.Chain.Polkadot,()=>G.DOT.prefix).with(y.Chain.Chainflip,()=>G.FLIP.prefix).otherwise(()=>G.GENERIC.prefix);return function(v){try{let t=$(v,m);return U(t,"ss58",m),!0}catch{return!1}}}function b({chain:o,generic:I=!1,...m}){let j=y.AssetValue.from({chain:o}),v;async function t(){let{ApiPromise:D,WsProvider:M}=await import("@polkadot/api"),L=await y.getRPCUrl(o),E=new M(L);return D.create({noInitWarn:!0,provider:E})}async function f(){if(v)return v;return v=await O.match(m).with({phrase:O.P.string},({phrase:D})=>q(D,G[o].prefix)).with({signer:O.P.any},({signer:D})=>D).otherwise(()=>{return}),v}let R=I?G.GENERIC:G[o];async function C(D){let M=await f(),L=D||M;if(!L)throw new y.SwapKitError("core_wallet_not_keypair_wallet");return F(L)?L.address:void 0}return{broadcast:r,convertAddress:Io,createKeyring:(D)=>q(D,R.prefix),createTransaction:async(D)=>{let M=await t();return J(M,D)},decodeAddress:$,encodeAddress:U,estimateTransactionFee:async(D)=>{let M=await f();if(!M)throw new y.SwapKitError("core_wallet_not_keypair_wallet");let L=await t();return e(L,M,j,D)},gasAsset:j,getAddress:C,getApi:t,getBalance:async(D)=>{let M=await t(),L=_(o,M),E=D||await C();return L(E)},network:R,sign:async(D)=>{let M=await f();if(!M)throw new y.SwapKitError("core_wallet_not_keypair_wallet");if(F(M))return s(M,D);throw new y.SwapKitError("core_wallet_not_keypair_wallet","Signer does not have keyring pair capabilities required for signing.")},signAndBroadcast:async({tx:D,callback:M,address:L})=>{let E=await f();if(!E)throw new y.SwapKitError("core_wallet_not_keypair_wallet");if(F(E))return a(E,D,M);let u=await t();if(L)return oo({address:L,api:u,callback:M,signer:E,tx:D});throw new y.SwapKitError("core_wallet_not_keypair_wallet","Signer does not have keyring pair capabilities required for signing.")},transfer:async(D)=>{let M=await f();if(!M)throw new y.SwapKitError("core_wallet_not_keypair_wallet");let L=await t();return d(L,M,D)},validateAddress:P({chain:o,prefix:R.prefix})}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{ea as C}from"../../chunk-ntbvmmch.js";import{hexToU8a as x,isHex as K,u8aToHex as S}from"@polkadot/util";import{decodeAddress as X,encodeAddress as Y}from"@polkadot/util-crypto";import{AssetValue as p,Chain as z,getRPCUrl as k,SubstrateChains as h,SwapKitError as L,SwapKitNumber as n}from"@swapkit/helpers";import{match as F,P as J}from"ts-pattern";import{AssetValue as U,Chain as P,SwapKitNumber as W}from"@swapkit/helpers";async function b(o,I,m){let v=[I.set(0)];if(!m)return v;try{let j=await o.query.system?.account?.(m);if(!j)return v;let{data:{free:t}}=j,y=W.fromBigInt(BigInt(t.toString()),I.decimal).getValue("string");return[I.set(y)]}catch(j){let t=j instanceof Error?j.message:String(j);return console.error(`Error fetching substrate balance: ${t}`),v}}async function u(o,I,m){let v=[I.set(0)];if(!m)return v;try{let j=await o.query.flip?.account?.(m);if(!j)return v;let t=j.balance||j.data?.balance;if(!t||t.isEmpty)return v;let y=W.fromBigInt(BigInt(t.toString()),I.decimal).getValue("string");return[I.set(y)]}catch(j){let t=j instanceof Error?j.message:String(j);return console.error(`Error fetching chainflip balance: ${t}`),v}}function q(o,I){return function(v){let j=U.from({chain:o});switch(o){case P.Chainflip:return u(I,j,v);default:return b(I,j,v)}}}var V={decimals:[10],displayName:"Polkadot Relay Chain",network:"polkadot",prefix:0,standardAccount:"*25519",symbols:["DOT"],website:"https://polkadot.network"},B={decimals:[18],displayName:"Chainflip",network:"chainflip",prefix:2112,standardAccount:"*25519",symbols:["FLIP"],website:"https://chainflip.io/"},w={decimals:[],displayName:"Substrate",network:"substrate",prefix:42,standardAccount:"*25519",symbols:[],website:"https://substrate.io/"},G={DOT:V,FLIP:B,GENERIC:w};function yo(o,I){return F(o).with(...h,(m)=>s({chain:m,...I})).exhaustive()}function O(o){return"address"in o}async function Q(o,I){let{Keyring:m}=await import("@polkadot/keyring"),{cryptoWaitReady:v}=await import("@polkadot/util-crypto");return await v(),new m({ss58Format:I,type:"sr25519"}).addFromUri(o)}var H=(o,I)=>o.rpc.system.accountNextIndex(I),T=(o,{recipient:I,assetValue:m})=>o.tx.balances?.transferAllowDeath?.(I,m.getBaseValue("number")),l=async(o,I,{recipient:m,assetValue:v,sender:j})=>{let t=T(o,{assetValue:v,recipient:m});if(!t)throw new L("toolbox_substrate_transfer_error");let y=O(I),R=y?I.address:j;if(!R)throw new L("core_transaction_invalid_sender_address");let N=await H(o,R);return(await t.signAndSend(y?I:R,{nonce:N,signer:y?void 0:I})).toString()},A=async(o,I,m,{recipient:v,assetValue:j,sender:t})=>{let y=T(o,{assetValue:j,recipient:v}),R=O(I)?I.address:t;if(!R)return Promise.resolve(m.set(0));let N=await y?.paymentInfo(R,{nonce:await H(o,R)})||{partialFee:0};return m.set(n.fromBigInt(BigInt(N.partialFee.toString()),m.decimal).getValue("string"))},c=async(o,I)=>{if(I)return o.send(I);return(await o.send()).toString()},i=async(o,I)=>{return await I.signAsync(o)},g=(o,I,m)=>{if(m)return I.signAndSend(o,m);return I.signAndSend(o).toString()},d=async({signer:o,address:I,tx:m,callback:v,api:j})=>{let t=await H(j,I);if(v)m.signAndSend(I,{nonce:t,signer:o},v);return m.signAndSend(I,{nonce:t,signer:o}).toString()};function e(o,I){let m=X(o);return Y(m,I)}function Z(o,I){return K(o)?x(o):X(o,void 0,I)}function _(o,I="ss58",m){if(I==="hex")return S(o);return Y(o,m)}function r({chain:o,prefix:I}){let m=I||F(o).with(z.Polkadot,()=>G.DOT.prefix).with(z.Chainflip,()=>G.FLIP.prefix).otherwise(()=>G.GENERIC.prefix);return function(j){try{let t=Z(j,m);return _(t,"ss58",m),!0}catch{return!1}}}function s({chain:o,generic:I=!1,...m}){let v=p.from({chain:o}),j;async function t(){let{ApiPromise:D,WsProvider:f}=await import("@polkadot/api"),M=await k(o),E=new f(M);return D.create({noInitWarn:!0,provider:E})}async function y(){if(j)return j;return j=await F(m).with({phrase:J.string},({phrase:D})=>Q(D,G[o].prefix)).with({signer:J.any},({signer:D})=>D).otherwise(()=>{return}),j}let R=I?G.GENERIC:G[o];async function N(D){let f=await y(),M=D||f;if(!M)throw new L("core_wallet_not_keypair_wallet");return O(M)?M.address:void 0}return{broadcast:c,convertAddress:e,createKeyring:(D)=>Q(D,R.prefix),createTransaction:async(D)=>{let f=await t();return T(f,D)},decodeAddress:Z,encodeAddress:_,estimateTransactionFee:async(D)=>{let f=await y();if(!f)throw new L("core_wallet_not_keypair_wallet");let M=await t();return A(M,f,v,D)},gasAsset:v,getAddress:N,getApi:t,getBalance:async(D)=>{let f=await t(),M=q(o,f),E=D||await N();return M(E)},network:R,sign:async(D)=>{let f=await y();if(!f)throw new L("core_wallet_not_keypair_wallet");if(O(f))return i(f,D);throw new L("core_wallet_not_keypair_wallet","Signer does not have keyring pair capabilities required for signing.")},signAndBroadcast:async({tx:D,callback:f,address:M})=>{let E=await y();if(!E)throw new L("core_wallet_not_keypair_wallet");if(O(E))return g(E,D,f);let $=await t();if(M)return d({address:M,api:$,callback:f,signer:E,tx:D});throw new L("core_wallet_not_keypair_wallet","Signer does not have keyring pair capabilities required for signing.")},transfer:async(D)=>{let f=await y();if(!f)throw new L("core_wallet_not_keypair_wallet");let M=await t();return l(M,f,D)},validateAddress:r({chain:o,prefix:R.prefix})}}export{O as isKeyringPair,yo as getSubstrateToolbox,r as getSubstrateAddressValidator,s as createSubstrateToolbox,Q as createKeyring,G as SubstrateNetwork};
|