@swapkit/toolboxes 4.23.0 → 4.24.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-ap5mzmjf.js +1 -0
- package/dist/{chunk-9psy287z.js → chunk-btth5bse.js} +1 -1
- package/dist/{chunk-jdh5asaw.js → chunk-nvfkjbyq.js} +1 -1
- package/dist/{chunk-fjyc6m34.js → chunk-xbdjxeqd.js} +1 -1
- package/dist/chunk-z61r1327.js +2 -0
- package/dist/src/aptos/index.cjs +1 -1
- 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.js +1 -1
- package/dist/src/ripple/index.cjs +1 -1
- package/dist/src/ripple/index.js +1 -1
- package/dist/src/solana/index.cjs +1 -1
- package/dist/src/solana/index.js +1 -1
- package/dist/src/starknet/index.cjs +1 -1
- package/dist/src/starknet/index.js +1 -1
- package/dist/src/stellar/index.cjs +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.cjs +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.cjs +1 -1
- package/dist/src/utxo/index.js +1 -1
- package/dist/types/aptos/toolbox.d.ts +11 -7
- package/dist/types/cardano/toolbox.d.ts +2 -2
- package/dist/types/cosmos/thorchainUtils/messages.d.ts +2 -1
- package/dist/types/cosmos/thorchainUtils/registry.d.ts +1 -1
- package/dist/types/cosmos/toolbox/cosmos.d.ts +1 -1
- package/dist/types/cosmos/toolbox/thorchain.d.ts +6 -6
- package/dist/types/cosmos/util.d.ts +16 -2
- package/dist/types/evm/toolbox/baseEVMToolbox.d.ts +66 -21
- package/dist/types/evm/toolbox/evm.d.ts +1603 -234
- package/dist/types/evm/toolbox/op.d.ts +235 -11
- package/dist/types/evm/types.d.ts +7 -13
- package/dist/types/hypercore/toolbox.d.ts +2 -2
- package/dist/types/hypercore/types.d.ts +3 -1
- package/dist/types/near/toolbox.d.ts +22 -3
- package/dist/types/near/types.d.ts +4 -1
- package/dist/types/ripple/index.d.ts +3 -2
- package/dist/types/solana/toolbox.d.ts +2 -2
- package/dist/types/starknet/toolbox.d.ts +2 -2
- package/dist/types/starknet/types.d.ts +3 -12
- package/dist/types/stellar/toolbox.d.ts +2 -2
- package/dist/types/sui/toolbox.d.ts +3 -3
- package/dist/types/ton/toolbox.d.ts +1 -4
- package/dist/types/tron/toolbox.d.ts +2 -2
- package/dist/types/utxo/helpers/coinselect.d.ts +2 -1
- package/dist/types/utxo/toolbox/bitcoinCash.d.ts +7 -5
- package/dist/types/utxo/toolbox/utxo.d.ts +8 -5
- package/dist/types/utxo/toolbox/zcash.d.ts +6 -4
- package/package.json +2 -2
- package/dist/chunk-6b99avsd.js +0 -2
- package/dist/chunk-e02sjx7s.js +0 -1
package/dist/src/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{ga as t}from"../chunk-xbdjxeqd.js";import{AssetValue as R,Chain as o,CosmosChains as x,EVMChains as c,FeeOption as W,SwapKitError as k,UTXOChains as b}from"@swapkit/helpers";async function V(){let{match:s}=await import("ts-pattern"),{validateAptosAddress:r}=await import("./aptos/index.js"),{validateEVMAddress:i}=await import("./evm/index.js"),{validateCardanoAddress:e}=await import("./cardano/index.js"),{getCosmosAddressValidator:a}=await import("./cosmos/index.js"),{validateHyperCoreAddress:l}=await import("./hypercore/index.js"),{validateSolanaAddress:T}=await import("./solana/index.js"),{validateStarknetAddress:p}=await import("./starknet/index.js"),{validateSuiAddress:C}=await import("./sui/index.js"),{validateTonAddress:h}=await import("./ton/index.js"),{getUTXOAddressValidator:u}=await import("./utxo/index.js"),{validateNearAddress:d}=await import("./near/index.js"),{validateRadixAddress:f}=await import("./radix/index.js"),{validateRippleAddress:g}=await import("./ripple/index.js"),{validateTronAddress:w}=await import("./tron/index.js"),{validateStellarAddress:S}=await import("./stellar/index.js");return function({address:n,chain:P}){return s(P).with(...c,()=>i(n)).with(...b,(m)=>{return u(m)(n)}).with(...x,(m)=>{return a(m)(n)}).with(o.Aptos,()=>r(n)).with(o.Radix,()=>f(n)).with(o.Hype,()=>l(n)).with(o.Near,()=>d(n)).with(o.Ripple,()=>g(n)).with(o.Solana,()=>T(n)).with(o.Stellar,()=>S(n)).with(o.Starknet,()=>p(n)).with(o.Sui,()=>C(n)).with(o.Ton,()=>h(n)).with(o.Tron,()=>w(n)).with(o.Cardano,()=>e(n)).otherwise(()=>!1)}}function E(s){return async function(i){let{match:e}=await import("ts-pattern");return e(s).returnType().with(...c,async(a)=>{let l=await y(a),T=await l.createTransaction(i),p="feeOptionKey"in i?i.feeOptionKey:W.Fast;return l.estimateTransactionFee({...T,feeOption:p})}).with(o.Bitcoin,o.BitcoinCash,o.Dogecoin,o.Dash,o.Litecoin,o.Solana,o.Ripple,o.Tron,o.Near,o.Cardano,o.Hype,async(a)=>{return(await y(a)).estimateTransactionFee(i)}).with(o.Aptos,async()=>{let{getAptosToolbox:a}=await import("./aptos/index.js");return a().estimateTransactionFee(i)}).with(o.Starknet,async()=>{let{getStarknetToolbox:a}=await import("./starknet/index.js");return(await a()).estimateTransactionFee(i)}).with(o.Stellar,async()=>{let{getStellarToolbox:a}=await import("./stellar/index.js");return a().estimateTransactionFee()}).with(o.Sui,async()=>{let{getSuiToolbox:a}=await import("./sui/index.js");return a().estimateTransactionFee(i)}).with(o.Ton,async()=>{let{getTONToolbox:a}=await import("./ton/index.js");return a().estimateTransactionFee(i)}).with(...x,async()=>{let{estimateTransactionFee:a}=await import("./cosmos/index.js");return a(i)}).otherwise(async()=>R.from({chain:s}))}}async function y(s,r){let{match:i}=await import("ts-pattern");return i(s).returnType().with(...c,async()=>{let{getEvmToolboxAsync:e}=await import("../chunk-ap5mzmjf.js");return await e(s,r)}).with(...b,async()=>{let{getUtxoToolbox:e}=await import("./utxo/index.js");return e(s,r)}).with(...x,async()=>{let{getCosmosToolbox:e}=await import("./cosmos/index.js");return e(s,r)}).with(o.Aptos,async()=>{let{getAptosToolbox:e}=await import("./aptos/index.js");return e(r)}).with(o.Hype,async()=>{let{getHyperCoreToolbox:e}=await import("./hypercore/index.js");return e(r)}).with(o.Radix,async()=>{let{getRadixToolbox:e}=await import("./radix/index.js");return e(r)}).with(o.Ripple,async()=>{let{getRippleToolbox:e}=await import("./ripple/index.js");return e(r)}).with(o.Solana,async()=>{let{getSolanaToolbox:e}=await import("./solana/index.js");return e(r)}).with(o.Stellar,async()=>{let{getStellarToolbox:e}=await import("./stellar/index.js");return e(r)}).with(o.Starknet,async()=>{let{getStarknetToolbox:e}=await import("./starknet/index.js");return e(r)}).with(o.Sui,async()=>{let{getSuiToolbox:e}=await import("./sui/index.js");return e(r)}).with(o.Tron,async()=>{let{getTronToolbox:e}=await import("./tron/index.js");return e(r)}).with(o.Near,async()=>{let{getNearToolbox:e}=await import("./near/index.js");return e(r)}).with(o.Cardano,async()=>{let{getCardanoToolbox:e}=await import("./cardano/index.js");return e(r)}).with(o.Ton,async()=>{let{getTONToolbox:e}=await import("./ton/index.js");return e(r)}).otherwise(()=>{throw new k("toolbox_not_supported",{chain:s})})}export{y as getToolbox,E as getFeeEstimator,V as getAddressValidator};
|
package/dist/src/near/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
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();
|
|
1
|
+
var pE=Object.create;var{getPrototypeOf:dE,defineProperty:b,getOwnPropertyNames:jE,getOwnPropertyDescriptor:nE}=Object,BE=Object.prototype.hasOwnProperty;function FE(O){return this[O]}var iE,oE,TO=(O,C,x)=>{var T=O!=null&&typeof O==="object";if(T){var Z=C?iE??=new WeakMap:oE??=new WeakMap,M=Z.get(O);if(M)return M}x=O!=null?pE(dE(O)):{};let J=C||!O||!O.__esModule?b(x,"default",{value:O,enumerable:!0}):x;for(let z of jE(O))if(!BE.call(J,z))b(J,z,{get:FE.bind(O,z),enumerable:!0});if(T)Z.set(O,J);return J},cE=(O)=>{var C=(zE??=new WeakMap).get(O),x;if(C)return C;if(C=b({},"__esModule",{value:!0}),O&&typeof O==="object"||typeof O==="function"){for(var T of jE(O))if(!BE.call(C,T))b(C,T,{get:FE.bind(O,T),enumerable:!(x=nE(O,T))||x.enumerable})}return zE.set(O,C),C},zE;var sE=(O)=>O;function tE(O,C){this[O]=sE.bind(null,C)}var rE=(O,C)=>{for(var x in C)b(O,x,{get:C[x],enumerable:!0,configurable:!0,set:tE.bind(C,x)})};var D=(O,C)=>()=>(O&&(C=O(O=0)),C);function K(O){return O.length>=2&&O.length<=64&&/^(([a-z\d]+[-_])*[a-z\d]+\.)*([a-z\d]+[-_])*[a-z\d]+$/.test(O)}async function p(O){let{KeyPair:C}=await import("@near-js/crypto"),x=O.index||0,T=O.derivationPath?g.derivationPathToString(O.derivationPath.slice(0,3)):`m/44'/397'/${x}'`,{parseSeedPhrase:Z}=await import("near-seed-phrase"),{secretKey:M}=Z(O.phrase,T),J=C.fromString(M);return fE(J)}async function s(O){let{KeyPair:C}=await import("@near-js/crypto"),x=C.fromString(O);return fE(x)}async function fE(O){let{KeyPairSigner:C}=await import("@near-js/signers");class x extends C{#E;constructor(T){super(T);this.#E=T}getAddress(){let T=this.#E.getPublicKey(),Z=Buffer.from(T.data).toString("hex");return Promise.resolve(Z)}}return new x(O)}async function d(O,C){let T=(await O.query({account_id:C,finality:"final",request_type:"view_access_key_list"})).keys.find((z)=>z.access_key.permission==="FullAccess");if(!T)throw new g.SwapKitError("toolbox_near_no_public_key_found");let{PublicKey:Z}=await import("@near-js/crypto"),M=Z.fromString(T.public_key);return{nonce:T.access_key.nonce||0,publicKey:M}}var g;var t=D(()=>{g=require("@swapkit/helpers")});function r(O){return"recipient"in O&&"amount"in O&&!("contractId"in O)}function a(O){return"contractId"in O&&"methodName"in O}function e(O){return"actions"in O}function EE(O){return"newAccountId"in O}function OE(O){return"contractCode"in O}function _E(O){return"customEstimator"in O}function NE(O){let C=0;for(let x of O)switch(x.enum){case"transfer":C+=Number(q.SIMPLE_TRANSFER);break;case"functionCall":C+=Number(q.CONTRACT_CALL);break;case"createAccount":C+=Number(q.ACCOUNT_CREATION);break;case"deployContract":C+=Number(q.CONTRACT_DEPLOYMENT);break;case"addKey":C+=Number(q.ACCESS_KEY_ADDITION);break;case"deleteKey":C+=Number(q.ACCESS_KEY_DELETION);break;case"stake":C+=Number(q.STAKE);break;default:C+=Number(q.CONTRACT_CALL)}return C.toString()}function CE(O){if(O==="ft_transfer"||O==="ft_transfer_call")return q.TOKEN_TRANSFER;if(O==="storage_deposit")return q.STORAGE_DEPOSIT;return q.CONTRACT_CALL}function aE(O){return(BigInt(O)*BigInt(1000000000000)).toString()}function eE(O){return(BigInt(O)/BigInt(1000000000000)).toString()}var q;var LE=D(()=>{q={ACCESS_KEY_ADDITION:"5",ACCESS_KEY_DELETION:"5",ACCOUNT_CREATION:"30",CONTRACT_CALL:"150",CONTRACT_DEPLOYMENT:"200",SIMPLE_TRANSFER:"1",STAKE:"10",STORAGE_DEPOSIT:"150",TOKEN_TRANSFER:"150"}});async function RE({account:O,contractId:C,viewMethods:x,changeMethods:T}){let{Contract:Z}=await import("@near-js/accounts");return new Z(O,C,{changeMethods:T,useLocalViewExecution:!0,viewMethods:x})}function ZO(){function O(){let C=Date.now(),x=xE||C;return xE=x,C>xE?C:x+1}return EO+O().toString(36)}function HE(O){return async function(x,T=!0){let Z=await AE.SwapKitApi.getChainBalance({address:x,chain:O,scamFilter:T}),{baseDecimal:M}=y.getChainConfig(O),J=Z.map(({identifier:F,value:S,decimal:P})=>{return new y.AssetValue({decimal:P||M,identifier:F,value:S})});if(!J.some((F)=>F.isGasAsset))return[y.AssetValue.from({chain:O}),...J];return J}}var y,AE,EO,xE=0;var GE=D(()=>{y=require("@swapkit/helpers"),AE=require("@swapkit/helpers/api"),EO=typeof process<"u"&&process.pid?process.pid.toString(36):""});function LO(O){let C;async function x(){if(C)return C;return C=await I.match(O).with({phrase:I.P.string},async(E)=>{return await p(E)}).with({signer:I.P.any},({signer:E})=>E).otherwise(()=>{return}),C}async function T(){let{JsonRpcProvider:E}=await import("@near-js/providers"),_=await Y.getRPCUrl(Y.Chain.Near);return new E({url:_})}async function Z(E){let{Account:_}=await import("@near-js/accounts"),N=await T(),L=await x(),R=E||await M();return new _(R,N,L)}async function M(){let E=await x();if(!E)throw new Y.SwapKitError("toolbox_near_no_signer");return await E.getAddress()}async function J(E,_){return(_||await T()).callFunction(E.contractId,"storage_balance_of",{account_id:E.accountId},{finality:"final"})}async function z(E,_){try{let N=await _.callFunction(E,"storage_balance_bounds",{},{finality:"final"});return N?.min?BigInt(N.min):wE}catch{return wE}}function F(E){return(E*(TE+CO)+TE-1n)/TE}function S(E,_){return BigInt(E)*BigInt(_.runtime_config.storage_amount_per_byte)}function P(E,_){if(E<=0n)throw new Y.SwapKitError({errorKey:"toolbox_sweep_amount_too_low",info:_});return E}async function n(E){return await(E||await T()).experimental_protocolConfig({finality:"final"})}async function kE(E,_,N){let R=await(N||await T()).callFunction(E,"ft_balance_of",{account_id:_},{finality:"final"});return BigInt(R||"0")}async function VE(E){if(!await x())throw new Y.SwapKitError("toolbox_near_no_signer");let{assetValue:N,recipient:L,memo:R,sweep:Q}=E,W=await M(),X=await QE({assetValue:N,memo:R,recipient:L,sender:W,sweep:Q});return qE(X)}async function bE({assetValue:E,attachedDeposit:_,memo:N,provider:L,recipient:R,sender:Q,sweep:W}){let X=E.address;if(!X)throw new Y.SwapKitError("toolbox_near_missing_contract_address");let $=await J({accountId:R,contractId:X},L),U=$?0n:await z(X,L),j=$?_O:OO,A=BigInt(_||"1"),H=E.getBaseValue("bigint");if(W){let[G,w,k,v]=await Promise.all([kE(X,Q,L),L.viewAccount(Q,{finality:"final"}),n(L),c(L)]);H=P(G,{asset:E.toString(),balance:G.toString()});let u=S(w.storage_usage,k),V=w.amount-u,l=U,UE=(j+($?0n:DE))*F(v)+l+A;if(V<UE)throw new Y.SwapKitError("toolbox_sweep_amount_too_low",{asset:E.toString(),availableNear:V.toString(),reason:"Insufficient NEAR to cover token transfer gas and storage deposit",requiredNear:UE.toString()})}let B=[];if(!$)B.push(await h({args:{account_id:R},attachedDeposit:U.toString(),gas:DE.toString(),methodName:"storage_deposit"}));return B.push(await h({args:{amount:H.toString(),memo:N||null,receiver_id:R},attachedDeposit:A.toString(),gas:j.toString(),methodName:"ft_transfer"})),XE({actions:B,receiverId:X,sender:Q})}async function KE({assetValue:E,attachedDeposit:_,memo:N,provider:L,recipient:R,sender:Q,sweep:W}){let{publicKey:X,nonce:$}=await d(L,Q),U=E.getBaseValue("bigint");if(W){let[k,v]=await Promise.all([L.viewAccount(Q,{finality:"final"}),n(L)]),u=await JE({assetValue:E,memo:N,recipient:R,sweep:W},v),V=S(k.storage_usage,v),l=0n;if(N&&_){let ME=await c(L);l=NO*F(ME)+BigInt(_)}U=P(k.amount-u.getBaseValue("bigint")-V-l,{asset:E.toString(),balance:k.amount.toString(),fee:u.getBaseValue("bigint").toString(),storageStakeReserve:V.toString()})}let{actionCreators:j,createTransaction:A}=await import("@near-js/transactions"),{baseDecode:H}=await import("@near-js/utils"),B=[j.transfer(U)];if(N&&_)B.push(j.functionCall("memo",{memo:N},BigInt("250000000000000"),BigInt(_)));let G=await L.block({finality:"final"}),w=H(G.header.hash);return A(Q,X,R,$+1,B,w)}async function QE({recipient:E,assetValue:_,memo:N,attachedDeposit:L,sender:R,functionCall:Q,sweep:W}){if(!K(E))throw new Y.SwapKitError("toolbox_near_invalid_address",{recipient:E});if(!K(R))throw new Y.SwapKitError("toolbox_near_invalid_address",{sender:R});if(Q)return WE({...Q,sender:R});if(W&&!await x())throw new Y.SwapKitError("toolbox_near_no_signer");let X=await T(),$={assetValue:_,attachedDeposit:L,memo:N,provider:X,recipient:E,sender:R,sweep:W};return _.isGasAsset?KE($):bE($)}function yE(E){let _=E.encode();return Buffer.from(_).toString("base64")}async function WE({args:E,attachedDeposit:_,contractId:N,gas:L,methodName:R,sender:Q}){let W=await h({args:E,attachedDeposit:_,gas:L,methodName:R});return XE({actions:[W],receiverId:N,sender:Q})}async function XE({actions:E,receiverId:_,sender:N}){let L=await T(),{publicKey:R,nonce:Q}=await d(L,N),{createTransaction:W}=await import("@near-js/transactions"),{baseDecode:X}=await import("@near-js/utils"),$=await L.block({finality:"final"}),U=X($.header.hash);return W(N,R,_,Q+1,E,U)}async function h(E){let{actionCreators:_}=await import("@near-js/transactions");return _.functionCall(E.methodName,Buffer.from(JSON.stringify(E.args)),BigInt(E.gas),BigInt(E.attachedDeposit))}async function ZE(E){let _=await x();if(!_)throw new Y.SwapKitError("toolbox_near_no_signer");await SE(E);let[N,L]=await _.signTransaction(E);return L}async function SE(E){let _=E.publicKey;if(_.toString?.().startsWith("ed25519:")||_.toString?.().startsWith("secp256k1:"))return;let{KeyType:N,PublicKey:L}=await import("@near-js/crypto"),R=_.data||_.ed25519Key?.data,Q=_.secp256k1Key?.data;if(R){E.publicKey=new L({data:Uint8Array.from(R),keyType:N.ED25519});return}if(Q)E.publicKey=new L({data:Uint8Array.from(Q),keyType:N.SECP256K1})}function i(E){if(typeof E==="string")return E;if(Array.isArray(E))return E.map(i).find(Boolean);if(!(E&&typeof E==="object"))return;let _=E;return _.transaction?.hash||_.transaction_outcome?.id}function o(E){return E instanceof Error?E.message:String(E)}async function $E(E){let N=await(await T()).sendTransaction(E),L=i(N);if(!L)throw new Y.SwapKitError("toolbox_near_transfer_failed",{result:N});return L}async function qE(E){let _=await x();if(!_)throw new Y.SwapKitError("toolbox_near_no_signer");let N;try{N=await ZE(E)}catch(L){let R;try{R=_.signAndSendTransaction?await _.signAndSendTransaction({actions:E.actions,receiverId:E.receiverId,signerId:E.signerId}):await _.signAndSendTransactions?.({transactions:[E]})}catch(W){throw new Y.SwapKitError({errorKey:"toolbox_near_sign_transaction_failed",info:{directSignError:o(L),signAndSendError:o(W)}},W)}let Q=i(R);if(Q)return Q;throw L}return $E(N)}async function JE(E,_){let N=await x();if("assetValue"in E){if(E.sweep&&!N)throw new Y.SwapKitError("toolbox_near_no_signer");try{let[R,Q]=await Promise.all([c(),_?Promise.resolve(_):n()]),{runtime_config:W}=Q,{execution:X,send_sir:$}=W.transaction_costs.action_receipt_creation_config,{execution:U,send_sir:j}=W.transaction_costs.action_creation_config.transfer_cost,A=BigInt(j)+BigInt(U),H=BigInt($)+BigInt(X),B=A+H,G=E.sweep?F(R):R,w=B*G;return Y.AssetValue.from({chain:Y.Chain.Near,value:w})}catch(R){throw new Y.SwapKitError({errorKey:"toolbox_fee_estimation_failed",info:{chain:Y.Chain.Near,message:o(R)}},R)}}let L=N?await Z():void 0;return m(E,L)}async function c(E){let N=await(E||await T()).gasPrice(null);return BigInt(N.gas_price)}async function PE(E,_,N){if(!await x())throw new Y.SwapKitError("toolbox_near_no_signer");let R=await Z(),{formatNearAmount:Q}=await import("@near-js/utils"),{PublicKey:W}=await import("@near-js/crypto"),X=Q(N)||"0";return(await R.createAccount(E,W.fromString(_),BigInt(X))).transaction.hash}async function hE(E){let _=await x();try{if(!_)throw new Y.SwapKitError("toolbox_near_no_signer");let{actionCreators:N}=await import("@near-js/transactions"),{contractId:L,methodName:R,args:Q,deposit:W}=E,X=await Z(),$=await m({args:Q||{},contractId:L,methodName:R}),U=N.functionCall(R,Q||{},$.getBaseValue("bigint"),BigInt(W||"1"));return(await X.signAndSendTransaction({actions:[U],receiverId:L})).transaction_outcome.id}catch(N){throw new Y.SwapKitError("toolbox_near_transfer_failed",{error:N})}}async function mE(E){let _=await Z();return RE({account:_,changeMethods:E.changeMethods,contractId:E.contractId,viewMethods:E.viewMethods})}async function vE(E){if(!await x())throw new Y.SwapKitError("toolbox_near_no_signer");if(E.actions.length===0)throw new Y.SwapKitError("toolbox_near_empty_batch");return(await(await Z()).signAndSendTransaction({actions:E.actions,receiverId:E.receiverId})).transaction.hash}async function m(E,_){let N=await I.match(E).when(r,()=>q.SIMPLE_TRANSFER).when(a,(R)=>CE(R.methodName)).when(e,(R)=>NE(R.actions)).when(EE,()=>q.ACCOUNT_CREATION).when(OE,()=>q.CONTRACT_DEPLOYMENT).when(_E,(R)=>{if(!_)throw new Y.SwapKitError("toolbox_near_no_account");return R.customEstimator(_)}).otherwise(()=>{throw new Y.SwapKitError("toolbox_near_invalid_gas_params")}),L=BigInt(N)*BigInt(1000000000000);return Y.AssetValue.from({chain:Y.Chain.Near,value:L})}function uE(E,_){return console.warn("NEAR toolbox: estimateGas is deprecated, use estimateGasLimit instead"),m(E,_)}async function lE(){let E=await T();try{return(await E.gasPrice(null)).gas_price||"100000000"}catch{return"100000000"}}async function gE(){let E=await x();return E?(await E.getPublicKey()).toString():""}return{broadcastTransaction:$E,callFunction:hE,createAction:h,createContract:mE,createContractFunctionCall:WE,createSubAccount:PE,createTransaction:QE,estimateGas:uE,estimateGasLimit:m,estimateTransactionFee:JE,executeBatchTransaction:vE,getAddress:M,getBalance:HE(Y.Chain.Near),getGasPrice:lE,getNearProvider:T,getPublicKey:gE,getSignerFromPhrase:p,getSignerFromPrivateKey:s,serializeTransaction:yE,signAndBroadcastTransaction:qE,signTransaction:ZE,transfer:VE,validateAddress:K}}var Y,I,wE=1250000000000000000000n,DE=150000000000000n,OO=150000000000000n,_O=250000000000000n,NO=250000000000000n,CO=500n,TE=10000n;var YE=D(()=>{GE();t();LE();Y=require("@swapkit/helpers"),I=require("ts-pattern")});var IE=D(()=>{YE()});var RO={};rE(RO,{validateNearAddress:()=>K,tgasToGas:()=>aE,isSimpleTransfer:()=>r,isCustomEstimator:()=>_E,isContractDeployment:()=>OE,isContractCall:()=>a,isBatchTransaction:()=>e,isAccountCreation:()=>EE,getNearToolbox:()=>LO,getNearSignerFromPrivateKey:()=>s,getNearSignerFromPhrase:()=>p,getFullAccessPublicKey:()=>d,getContractMethodGas:()=>CE,gasToTGas:()=>eE,estimateBatchGas:()=>NE,createNearContract:()=>RE,GAS_COSTS:()=>q});module.exports=cE(RO);var xO=D(()=>{t();LE();YE();IE()});xO();
|
package/dist/src/near/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ea as ON}from"../../chunk-jdh5asaw.js";import{fa as I}from"../../chunk-fjyc6m34.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};
|
|
1
|
+
import{fa as ME}from"../../chunk-nvfkjbyq.js";import{ga as Z}from"../../chunk-xbdjxeqd.js";import{derivationPathToString as VE,SwapKitError as bE}from"@swapkit/helpers";function y(R){return R.length>=2&&R.length<=64&&/^(([a-z\d]+[-_])*[a-z\d]+\.)*([a-z\d]+[-_])*[a-z\d]+$/.test(R)}async function l(R){let{KeyPair:C}=await import("@near-js/crypto"),x=R.index||0,T=R.derivationPath?VE(R.derivationPath.slice(0,3)):`m/44'/397'/${x}'`,{parseSeedPhrase:q}=await import("near-seed-phrase"),{secretKey:j}=q(R.phrase,T),k=C.fromString(j);return _E(k)}async function OE(R){let{KeyPair:C}=await import("@near-js/crypto"),x=C.fromString(R);return _E(x)}async function _E(R){let{KeyPairSigner:C}=await import("@near-js/signers");class x extends C{#E;constructor(T){super(T);this.#E=T}getAddress(){let T=this.#E.getPublicKey(),q=Buffer.from(T.data).toString("hex");return Promise.resolve(q)}}return new x(R)}async function g(R,C){let T=(await R.query({account_id:C,finality:"final",request_type:"view_access_key_list"})).keys.find((S)=>S.access_key.permission==="FullAccess");if(!T)throw new bE("toolbox_near_no_public_key_found");let{PublicKey:q}=await import("@near-js/crypto"),j=q.fromString(T.public_key);return{nonce:T.access_key.nonce||0,publicKey:j}}var J={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 NE(R){return"recipient"in R&&"amount"in R&&!("contractId"in R)}function LE(R){return"contractId"in R&&"methodName"in R}function RE(R){return"actions"in R}function YE(R){return"newAccountId"in R}function CE(R){return"contractCode"in R}function xE(R){return"customEstimator"in R}function TE(R){let C=0;for(let x of R)switch(x.enum){case"transfer":C+=Number(J.SIMPLE_TRANSFER);break;case"functionCall":C+=Number(J.CONTRACT_CALL);break;case"createAccount":C+=Number(J.ACCOUNT_CREATION);break;case"deployContract":C+=Number(J.CONTRACT_DEPLOYMENT);break;case"addKey":C+=Number(J.ACCESS_KEY_ADDITION);break;case"deleteKey":C+=Number(J.ACCESS_KEY_DELETION);break;case"stake":C+=Number(J.STAKE);break;default:C+=Number(J.CONTRACT_CALL)}return C.toString()}function QE(R){if(R==="ft_transfer"||R==="ft_transfer_call")return J.TOKEN_TRANSFER;if(R==="storage_deposit")return J.STORAGE_DEPOSIT;return J.CONTRACT_CALL}function uE(R){return(BigInt(R)*BigInt(1000000000000)).toString()}function lE(R){return(BigInt(R)/BigInt(1000000000000)).toString()}async function WE({account:R,contractId:C,viewMethods:x,changeMethods:T}){let{Contract:q}=await import("@near-js/accounts");return new q(R,C,{changeMethods:T,useLocalViewExecution:!0,viewMethods:x})}import{AssetValue as XE,Chain as D,getRPCUrl as KE,SwapKitError as W}from"@swapkit/helpers";import{match as ZE,P as $E}from"ts-pattern";var JE=1250000000000000000000n,qE=150000000000000n,yE=150000000000000n,SE=250000000000000n,PE=250000000000000n,hE=500n,p=10000n;function tE(R){let C;async function x(){if(C)return C;return C=await ZE(R).with({phrase:$E.string},async(E)=>{return await l(E)}).with({signer:$E.any},({signer:E})=>E).otherwise(()=>{return}),C}async function T(){let{JsonRpcProvider:E}=await import("@near-js/providers"),O=await KE(D.Near);return new E({url:O})}async function q(E){let{Account:O}=await import("@near-js/accounts"),_=await T(),N=await x(),L=E||await j();return new O(L,_,N)}async function j(){let E=await x();if(!E)throw new W("toolbox_near_no_signer");return await E.getAddress()}async function k(E,O){return(O||await T()).callFunction(E.contractId,"storage_balance_of",{account_id:E.accountId},{finality:"final"})}async function S(E,O){try{let _=await O.callFunction(E,"storage_balance_bounds",{},{finality:"final"});return _?.min?BigInt(_.min):JE}catch{return JE}}function P(E){return(E*(p+hE)+p-1n)/p}function d(E,O){return BigInt(E)*BigInt(O.runtime_config.storage_amount_per_byte)}function i(E,O){if(E<=0n)throw new W({errorKey:"toolbox_sweep_amount_too_low",info:O});return E}async function h(E){return await(E||await T()).experimental_protocolConfig({finality:"final"})}async function UE(E,O,_){let L=await(_||await T()).callFunction(E,"ft_balance_of",{account_id:O},{finality:"final"});return BigInt(L||"0")}async function zE(E){if(!await x())throw new W("toolbox_near_no_signer");let{assetValue:_,recipient:N,memo:L,sweep:Y}=E,Q=await j(),X=await o({assetValue:_,memo:L,recipient:N,sender:Q,sweep:Y});return r(X)}async function jE({assetValue:E,attachedDeposit:O,memo:_,provider:N,recipient:L,sender:Y,sweep:Q}){let X=E.address;if(!X)throw new W("toolbox_near_missing_contract_address");let $=await k({accountId:L,contractId:X},N),M=$?0n:await S(X,N),U=$?SE:yE,F=BigInt(O||"1"),B=E.getBaseValue("bigint");if(Q){let[H,G,A,V]=await Promise.all([UE(X,Y,N),N.viewAccount(Y,{finality:"final"}),h(N),u(N)]);B=i(H,{asset:E.toString(),balance:H.toString()});let b=d(G.storage_usage,A),I=G.amount-b,K=M,EE=(U+($?0n:qE))*P(V)+K+F;if(I<EE)throw new W("toolbox_sweep_amount_too_low",{asset:E.toString(),availableNear:I.toString(),reason:"Insufficient NEAR to cover token transfer gas and storage deposit",requiredNear:EE.toString()})}let z=[];if(!$)z.push(await w({args:{account_id:L},attachedDeposit:M.toString(),gas:qE.toString(),methodName:"storage_deposit"}));return z.push(await w({args:{amount:B.toString(),memo:_||null,receiver_id:L},attachedDeposit:F.toString(),gas:U.toString(),methodName:"ft_transfer"})),c({actions:z,receiverId:X,sender:Y})}async function FE({assetValue:E,attachedDeposit:O,memo:_,provider:N,recipient:L,sender:Y,sweep:Q}){let{publicKey:X,nonce:$}=await g(N,Y),M=E.getBaseValue("bigint");if(Q){let[A,V]=await Promise.all([N.viewAccount(Y,{finality:"final"}),h(N)]),b=await a({assetValue:E,memo:_,recipient:L,sweep:Q},V),I=d(A.storage_usage,V),K=0n;if(_&&O){let e=await u(N);K=PE*P(e)+BigInt(O)}M=i(A.amount-b.getBaseValue("bigint")-I-K,{asset:E.toString(),balance:A.amount.toString(),fee:b.getBaseValue("bigint").toString(),storageStakeReserve:I.toString()})}let{actionCreators:U,createTransaction:F}=await import("@near-js/transactions"),{baseDecode:B}=await import("@near-js/utils"),z=[U.transfer(M)];if(_&&O)z.push(U.functionCall("memo",{memo:_},BigInt("250000000000000"),BigInt(O)));let H=await N.block({finality:"final"}),G=B(H.header.hash);return F(Y,X,L,$+1,z,G)}async function o({recipient:E,assetValue:O,memo:_,attachedDeposit:N,sender:L,functionCall:Y,sweep:Q}){if(!y(E))throw new W("toolbox_near_invalid_address",{recipient:E});if(!y(L))throw new W("toolbox_near_invalid_address",{sender:L});if(Y)return n({...Y,sender:L});if(Q&&!await x())throw new W("toolbox_near_no_signer");let X=await T(),$={assetValue:O,attachedDeposit:N,memo:_,provider:X,recipient:E,sender:L,sweep:Q};return O.isGasAsset?FE($):jE($)}function BE(E){let O=E.encode();return Buffer.from(O).toString("base64")}async function n({args:E,attachedDeposit:O,contractId:_,gas:N,methodName:L,sender:Y}){let Q=await w({args:E,attachedDeposit:O,gas:N,methodName:L});return c({actions:[Q],receiverId:_,sender:Y})}async function c({actions:E,receiverId:O,sender:_}){let N=await T(),{publicKey:L,nonce:Y}=await g(N,_),{createTransaction:Q}=await import("@near-js/transactions"),{baseDecode:X}=await import("@near-js/utils"),$=await N.block({finality:"final"}),M=X($.header.hash);return Q(_,L,O,Y+1,E,M)}async function w(E){let{actionCreators:O}=await import("@near-js/transactions");return O.functionCall(E.methodName,Buffer.from(JSON.stringify(E.args)),BigInt(E.gas),BigInt(E.attachedDeposit))}async function s(E){let O=await x();if(!O)throw new W("toolbox_near_no_signer");await HE(E);let[_,N]=await O.signTransaction(E);return N}async function HE(E){let O=E.publicKey;if(O.toString?.().startsWith("ed25519:")||O.toString?.().startsWith("secp256k1:"))return;let{KeyType:_,PublicKey:N}=await import("@near-js/crypto"),L=O.data||O.ed25519Key?.data,Y=O.secp256k1Key?.data;if(L){E.publicKey=new N({data:Uint8Array.from(L),keyType:_.ED25519});return}if(Y)E.publicKey=new N({data:Uint8Array.from(Y),keyType:_.SECP256K1})}function v(E){if(typeof E==="string")return E;if(Array.isArray(E))return E.map(v).find(Boolean);if(!(E&&typeof E==="object"))return;let O=E;return O.transaction?.hash||O.transaction_outcome?.id}function m(E){return E instanceof Error?E.message:String(E)}async function t(E){let _=await(await T()).sendTransaction(E),N=v(_);if(!N)throw new W("toolbox_near_transfer_failed",{result:_});return N}async function r(E){let O=await x();if(!O)throw new W("toolbox_near_no_signer");let _;try{_=await s(E)}catch(N){let L;try{L=O.signAndSendTransaction?await O.signAndSendTransaction({actions:E.actions,receiverId:E.receiverId,signerId:E.signerId}):await O.signAndSendTransactions?.({transactions:[E]})}catch(Q){throw new W({errorKey:"toolbox_near_sign_transaction_failed",info:{directSignError:m(N),signAndSendError:m(Q)}},Q)}let Y=v(L);if(Y)return Y;throw N}return t(_)}async function a(E,O){let _=await x();if("assetValue"in E){if(E.sweep&&!_)throw new W("toolbox_near_no_signer");try{let[L,Y]=await Promise.all([u(),O?Promise.resolve(O):h()]),{runtime_config:Q}=Y,{execution:X,send_sir:$}=Q.transaction_costs.action_receipt_creation_config,{execution:M,send_sir:U}=Q.transaction_costs.action_creation_config.transfer_cost,F=BigInt(U)+BigInt(M),B=BigInt($)+BigInt(X),z=F+B,H=E.sweep?P(L):L,G=z*H;return XE.from({chain:D.Near,value:G})}catch(L){throw new W({errorKey:"toolbox_fee_estimation_failed",info:{chain:D.Near,message:m(L)}},L)}}let N=_?await q():void 0;return f(E,N)}async function u(E){let _=await(E||await T()).gasPrice(null);return BigInt(_.gas_price)}async function GE(E,O,_){if(!await x())throw new W("toolbox_near_no_signer");let L=await q(),{formatNearAmount:Y}=await import("@near-js/utils"),{PublicKey:Q}=await import("@near-js/crypto"),X=Y(_)||"0";return(await L.createAccount(E,Q.fromString(O),BigInt(X))).transaction.hash}async function AE(E){let O=await x();try{if(!O)throw new W("toolbox_near_no_signer");let{actionCreators:_}=await import("@near-js/transactions"),{contractId:N,methodName:L,args:Y,deposit:Q}=E,X=await q(),$=await f({args:Y||{},contractId:N,methodName:L}),M=_.functionCall(L,Y||{},$.getBaseValue("bigint"),BigInt(Q||"1"));return(await X.signAndSendTransaction({actions:[M],receiverId:N})).transaction_outcome.id}catch(_){throw new W("toolbox_near_transfer_failed",{error:_})}}async function IE(E){let O=await q();return WE({account:O,changeMethods:E.changeMethods,contractId:E.contractId,viewMethods:E.viewMethods})}async function DE(E){if(!await x())throw new W("toolbox_near_no_signer");if(E.actions.length===0)throw new W("toolbox_near_empty_batch");return(await(await q()).signAndSendTransaction({actions:E.actions,receiverId:E.receiverId})).transaction.hash}async function f(E,O){let _=await ZE(E).when(NE,()=>J.SIMPLE_TRANSFER).when(LE,(L)=>QE(L.methodName)).when(RE,(L)=>TE(L.actions)).when(YE,()=>J.ACCOUNT_CREATION).when(CE,()=>J.CONTRACT_DEPLOYMENT).when(xE,(L)=>{if(!O)throw new W("toolbox_near_no_account");return L.customEstimator(O)}).otherwise(()=>{throw new W("toolbox_near_invalid_gas_params")}),N=BigInt(_)*BigInt(1000000000000);return XE.from({chain:D.Near,value:N})}function kE(E,O){return console.warn("NEAR toolbox: estimateGas is deprecated, use estimateGasLimit instead"),f(E,O)}async function wE(){let E=await T();try{return(await E.gasPrice(null)).gas_price||"100000000"}catch{return"100000000"}}async function fE(){let E=await x();return E?(await E.getPublicKey()).toString():""}return{broadcastTransaction:t,callFunction:AE,createAction:w,createContract:IE,createContractFunctionCall:n,createSubAccount:GE,createTransaction:o,estimateGas:kE,estimateGasLimit:f,estimateTransactionFee:a,executeBatchTransaction:DE,getAddress:j,getBalance:ME(D.Near),getGasPrice:wE,getNearProvider:T,getPublicKey:fE,getSignerFromPhrase:l,getSignerFromPrivateKey:OE,serializeTransaction:BE,signAndBroadcastTransaction:r,signTransaction:s,transfer:zE,validateAddress:y}}export{y as validateNearAddress,uE as tgasToGas,NE as isSimpleTransfer,xE as isCustomEstimator,CE as isContractDeployment,LE as isContractCall,RE as isBatchTransaction,YE as isAccountCreation,tE as getNearToolbox,OE as getNearSignerFromPrivateKey,l as getNearSignerFromPhrase,g as getFullAccessPublicKey,QE as getContractMethodGas,lE as gasToTGas,TE as estimateBatchGas,WE as createNearContract,J as GAS_COSTS};
|
package/dist/src/radix/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{ga as Y}from"../../chunk-xbdjxeqd.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: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();
|
|
1
|
+
var z5=Object.create;var{getPrototypeOf:$5,defineProperty:k,getOwnPropertyNames:u,getOwnPropertyDescriptor:j5}=Object,p=Object.prototype.hasOwnProperty;function o(f){return this[f]}var q5,v5,k5=(f,U,q)=>{var W=f!=null&&typeof f==="object";if(W){var B=U?q5??=new WeakMap:v5??=new WeakMap,X=B.get(f);if(X)return X}q=f!=null?z5($5(f)):{};let D=U||!f||!f.__esModule?k(q,"default",{value:f,enumerable:!0}):q;for(let Q of u(f))if(!p.call(D,Q))k(D,Q,{get:o.bind(f,Q),enumerable:!0});if(W)B.set(f,D);return D},W5=(f)=>{var U=(x??=new WeakMap).get(f),q;if(U)return U;if(U=k({},"__esModule",{value:!0}),f&&typeof f==="object"||typeof f==="function"){for(var W of u(f))if(!p.call(U,W))k(U,W,{get:o.bind(f,W),enumerable:!(q=j5(f,W))||q.enumerable})}return x.set(f,U),U},x;var Z5=(f)=>f;function B5(f,U){this[f]=Z5.bind(null,U)}var J5=(f,U)=>{for(var q in U)k(f,q,{get:U[q],enumerable:!0,configurable:!0,set:B5.bind(U,q)})};var S=(f,U)=>()=>(f&&(U=f(f=0)),U);function P(f){return/^[0-9A-Fa-f]{40}$/.test(f)}function N(f){if(P(f))return f.toUpperCase();if(f.length<=3){let q=Buffer.from(f.padEnd(3,"\x00")).toString("hex");return`00${"0".repeat(22)}${q}${"0".repeat(10)}`.toUpperCase()}let U=Buffer.from(f).toString("hex").toUpperCase();if(U.length>40)throw new c.SwapKitError({errorKey:"toolbox_ripple_asset_not_supported",info:{asset:f,reason:"Currency exceeds maximum length (20 bytes)"}});return U.padEnd(40,"0")}function Y5(f){if(!P(f))return f;if(f.toUpperCase().startsWith("00")){let U=f.slice(24,30);try{let q=Buffer.from(U,"hex").toString("ascii").replace(/\0/g,"");if(/^[A-Za-z0-9?!@#$%^&*<>(){}[\]|]+$/.test(q)&&q.length>0)return q}catch{}return f.toUpperCase()}try{let U=f.replace(/0+$/,""),q=U.length%2===0?U:`${U}0`,W=Buffer.from(q,"hex").toString("utf8");if(/^[\x20-\x7E]+$/.test(W))return W}catch{}return f.toUpperCase()}function b(f){if(P(f))return f.toUpperCase();if(f.length<=3)return f;return N(f)}var c;var I=S(()=>{c=require("@swapkit/helpers")});async function M5(f,U){let q=b(f),W=E.find((B)=>b(B.currency)===q&&B.issuer===U);if(W)return W;try{let B=await K.RequestClient.get(`https://api.xrplmeta.org/token/${f}:${U}`);if(B)return{currency:f,decimals:15,description:B.desc,domain:B.domain,icon:B.icon,issuer:U,name:B.name,verified:B.self_assessment?.is_regulated||B.self_assessment?.is_licensed}}catch(B){K.warnOnce({condition:!0,id:`xrpl_token_lookup_${f}_${U}`,warning:`Failed to fetch XRPL token info for ${f}:${U}: ${B}`})}return{currency:f,decimals:15,issuer:U,verified:!1}}function X5(f){return E.filter((U)=>U.issuer===f)}function Q5(f,U){let q=b(f);return E.some((W)=>b(W.currency)===q&&W.issuer===U)}var K,E;var d=S(()=>{I();K=require("@swapkit/helpers"),E=[{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 D5={};J5(D5,{validateRippleAddress:()=>L,parseXrplTokenIdentifier:()=>C,normalizeCurrency:()=>b,isKnownToken:()=>Q5,isHexCurrency:()=>P,hexToCurrency:()=>Y5,getXrplTokenInfo:()=>M5,getRippleToolbox:()=>N5,getKnownTokensByIssuer:()=>X5,formatXrplTokenIdentifier:()=>t,currencyToHex:()=>N,XRPL_TOKEN_ERROR_CODES:()=>y,XRPL_KNOWN_TOKENS:()=>E});module.exports=W5(D5);function i(f){if(typeof f!=="object"||f===null||!("data"in f))return!1;let{data:U}=f;return typeof U==="object"&&U!==null&&"error_code"in U&&U.error_code===_5.ACCOUNT_NOT_FOUND}function C(f){let U=f.match(/^XRP\.([A-Fa-f0-9]{40}|[\x20-\x7E]{1,20})-([a-zA-Z0-9]{25,34})$/);if(!U?.[1]||!U?.[2])return null;if(!L(U[2]))return null;return{currency:U[1],issuer:U[2]}}function t(f,U){return`${G.Chain.Ripple}.${f}-${U}`}async function l(f){if(f.isGasAsset){let{xrpToDrops:q}=await import("xrpl");return q(f.getValue("string"))}let U=C(f.toString());if(!U)throw new G.SwapKitError({errorKey:"toolbox_ripple_asset_not_supported",info:{asset:f.toString()}});return{currency:U.currency,issuer:U.issuer,value:f.getValue("string")}}function n(f){let U,q=()=>{return U??=import("xrpl").then(({Wallet:W})=>W.fromMnemonic(f)),U};return{getAddress:async()=>(await q()).address,signTransaction:async(W)=>(await q()).sign(W)}}function L(f){return w.isValidClassicAddress(f)||w.isValidXAddress(f)}function N5(f={}){let U;async function q(){if(U)return U;return U=await F.match(f).with({phrase:F.P.string},({phrase:m})=>n(m)).with({signer:F.P.any},({signer:m})=>m).otherwise(()=>{return}),U}let W;async function B(){let m=await G.getRPCUrl(G.Chain.Ripple);if(!m)throw new G.SwapKitError({errorKey:"toolbox_ripple_rpc_not_configured",info:{chain:G.Chain.Ripple}});let{Client:z}=await import("xrpl"),j=new z(m);return await j.connect(),j}async function X(){if(W){let m=await W.catch(()=>null);if(m?.isConnected())return m}return W=B(),W}async function D(m){let z=await m.request({command:"server_state"}),j=z.result.state.validated_ledger??z.result.state.closed_ledger;if(!j||!Number.isSafeInteger(j.reserve_base)||j.reserve_base<0||!Number.isSafeInteger(j.reserve_inc)||j.reserve_inc<0)throw new G.SwapKitError({errorKey:"toolbox_ripple_get_balance_error",info:{reason:"XRPL reserve data is unavailable or invalid"}});return{baseReserveDrops:BigInt(j.reserve_base),ownerReserveDrops:BigInt(j.reserve_inc)}}let Q=async()=>{let m=await q();if(!m)throw new G.SwapKitError({errorKey:"toolbox_ripple_signer_not_found"});return m.getAddress()},a=async(m)=>{let z=m||await Q(),{baseDecimal:j}=G.getChainConfig(G.Chain.Ripple),v=await X();try{let[$,Z]=await Promise.all([v.request({account:z,command:"account_info"}),v.request({account:z,command:"account_lines"})]),M=$.result.account_data.Balance,J=[G.AssetValue.from({chain:G.Chain.Ripple,fromBaseDecimal:j,value:M})];for(let Y of Z.result.lines){let _=t(Y.currency,Y.account);if(Number.parseFloat(Y.balance)!==0)J.push(G.AssetValue.from({asset:_,asyncTokenLookup:!1,value:Y.balance}))}return J}catch($){if(i($))return[G.AssetValue.from({chain:G.Chain.Ripple,value:0})];throw new G.SwapKitError({errorKey:"toolbox_ripple_get_balance_error",info:{address:z,error:$}})}},T=async()=>{let{baseDecimal:m}=G.getChainConfig(G.Chain.Ripple),v=(await(await X()).request({command:"fee"})).result.drops.open_ledger_fee;return G.AssetValue.from({chain:G.Chain.Ripple,fromBaseDecimal:m,value:v})};async function V(m){let z=m||await Q(),j=await X();try{return(await j.request({account:z,command:"account_lines"})).result.lines.map(($)=>({account:$.account,authorized:$.authorized??!1,balance:$.balance,currency:$.currency,freeze:$.freeze??!1,freezePeer:$.freeze_peer??!1,limit:$.limit,limitPeer:$.limit_peer,noRipple:$.no_ripple??!1,noRipplePeer:$.no_ripple_peer??!1,peerAuthorized:$.peer_authorized??!1,qualityIn:$.quality_in??0,qualityOut:$.quality_out??0}))}catch(v){if(i(v))return[];throw new G.SwapKitError({errorKey:"toolbox_ripple_get_trust_lines_error",info:{address:z,error:v}})}}async function s({address:m,currency:z,issuer:j}){let v=await V(m),$=N(z);return v.some((Z)=>{return N(Z.currency)===$&&Z.account===j})}async function h({currency:m,issuer:z,limit:j,sender:v}){let $=v||await Q();if(!L(z))throw new G.SwapKitError({errorKey:"core_transaction_invalid_recipient_address",info:{address:z}});let Z=Number.parseFloat(j);if(Number.isNaN(Z)||Z<0)throw new G.SwapKitError({errorKey:"toolbox_ripple_invalid_trust_line_limit",info:{limit:j}});let M=await X(),J={Account:$,LimitAmount:{currency:m,issuer:z,value:j},TransactionType:"TrustSet"};return M.autofill(J)}async function r(m,z){let[j,v,$]=await Promise.all([m.request({account:z,command:"account_info"}),D(m),T()]),{Balance:Z,OwnerCount:M}=j.result.account_data,J=$.getBaseValue("bigint"),Y=BigInt(Z)-v.baseReserveDrops-BigInt(M)*v.ownerReserveDrops-J;if(Y<=0n)throw new G.SwapKitError({errorKey:"toolbox_sweep_amount_too_low",info:{asset:G.Chain.Ripple,balance:Z,baseReserve:v.baseReserveDrops.toString(),fee:J.toString(),ownerCount:M,ownerReserve:v.ownerReserveDrops.toString()}});let{baseDecimal:_}=G.getChainConfig(G.Chain.Ripple),H=G.AssetValue.from({chain:G.Chain.Ripple,fromBaseDecimal:_,value:Y.toString()});return{amount:await l(H),fee:J.toString()}}async function e(m,z){let j=C(m.toString());if(!j)throw new G.SwapKitError({errorKey:"toolbox_ripple_asset_not_supported",info:{asset:m.toString()}});let v=await X(),$="0",Z;while(!0){let M=await v.request({account:z,command:"account_lines",peer:j.issuer,...Z!==void 0&&{marker:Z}}),J=M.result.lines.find((_)=>_.account===j.issuer&&N(_.currency)===N(j.currency));if(J){$=J.balance;break}let Y=M.result.marker;if(Y===void 0||Y===null)break;Z=Y}if(!Number.isFinite(Number($))||Number($)<=0)throw new G.SwapKitError({errorKey:"toolbox_sweep_amount_too_low",info:{asset:m.toString(),balance:$}});return{currency:j.currency,issuer:j.issuer,value:$}}async function g({assetValue:m,recipient:z,memo:j,sender:v,sweep:$,destinationTag:Z,extendBySeconds:M=150}){if(!L(z))throw new G.SwapKitError({errorKey:"core_transaction_invalid_recipient_address"});let J=v||await Q();if(m.chain!==G.Chain.Ripple)throw new G.SwapKitError({errorKey:"toolbox_ripple_asset_not_supported",info:{asset:m.toString()}});let Y=$&&m.isGasAsset?await r(await X(),J):void 0,_=Y?Y.amount:$?await e(m,J):await l(m),H={Account:J,Amount:_,Destination:z,TransactionType:"Payment",...Y&&{Fee:Y.fee},...Z!==void 0&&{DestinationTag:Z}};if(j)H.Memos=[{Memo:{MemoData:Buffer.from(j).toString("hex")}}];let A=await(await X()).autofill(H);if(A.LastLedgerSequence&&M>0)A.LastLedgerSequence+=Math.ceil(M/4);return A}async function O(m){let z=await q();if(!z)throw new G.SwapKitError({errorKey:"toolbox_ripple_signer_not_found"});return z.signTransaction(m)}async function R(m){let j=await(await X()).submitAndWait(m),{result:v}=j;if(v.validated)return v.hash;let $=v.meta?.TransactionResult,Z=F.match($).with(y.tecNO_LINE,()=>"No trust line exists for this token").with(y.tecPATH_DRY,()=>"Payment path could not deliver funds").with(y.tecFROZEN,()=>"Token is frozen").otherwise(()=>{return});throw new G.SwapKitError({errorKey:"toolbox_ripple_broadcast_error",info:{chain:G.Chain.Ripple,...Z?{reason:Z}:{txResult:$}}})}let f5=async(m)=>{try{let z=await O(m);return R(z.tx_blob)}catch(z){if(z instanceof G.SwapKitError)throw z;throw new G.SwapKitError({errorKey:"toolbox_ripple_broadcast_error",info:{chain:G.Chain.Ripple,error:z}})}};async function U5({assetValue:m,memo:z,recipient:j,sweep:v}){let $=await q();if(!$)throw new G.SwapKitError({errorKey:"toolbox_ripple_signer_not_found"});let Z=await $.getAddress(),M=await g({assetValue:m,memo:z,recipient:j,sender:Z,sweep:v}),J=await O(M);return R(J.tx_blob)}async function m5(m){let z=await q();if(!z)throw new G.SwapKitError({errorKey:"toolbox_ripple_signer_not_found"});let j=await z.getAddress(),v=await h({...m,sender:j}),$=await O(v);return R($.tx_blob)}function G5(){let m=W;if(W=null,m)m.then((z)=>{if(z?.isConnected())return z.disconnect();return}).catch((z)=>{console.warn("XRPL Cleanup failed silently:",z)})}return{broadcastTransaction:R,createSigner:n,createTransaction:g,disconnect:G5,estimateTransactionFee:T,getAddress:Q,getBalance:a,getTrustLines:V,hasTrustLine:s,setTrustLine:h,setTrustLineAndBroadcast:m5,signAndBroadcastTransaction:f5,signTransaction:O,transfer:U5,validateAddress:L}}var G,w,F,_5,y;var b5=S(()=>{I();G=require("@swapkit/helpers"),w=require("ripple-address-codec"),F=require("ts-pattern");I();d();_5={ACCOUNT_NOT_FOUND:19};y={tecFROZEN:"tecFROZEN",tecNO_AUTH:"tecNO_AUTH",tecNO_DST:"tecNO_DST",tecNO_LINE:"tecNO_LINE",tecPATH_DRY:"tecPATH_DRY",tecUNFUNDED_OFFER:"tecUNFUNDED_OFFER"}});b5();
|
package/dist/src/ripple/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{fa as P}from"../../chunk-fjyc6m34.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};
|
|
1
|
+
import{ga as y}from"../../chunk-xbdjxeqd.js";import{AssetValue as F,Chain as X,getChainConfig as K,getRPCUrl as f5,SwapKitError as Z}from"@swapkit/helpers";import{isValidClassicAddress as U5,isValidXAddress as m5}from"ripple-address-codec";import{match as T,P as V}from"ts-pattern";import{SwapKitError as s}from"@swapkit/helpers";function P(f){return/^[0-9A-Fa-f]{40}$/.test(f)}function N(f){if(P(f))return f.toUpperCase();if(f.length<=3){let v=Buffer.from(f.padEnd(3,"\x00")).toString("hex");return`00${"0".repeat(22)}${v}${"0".repeat(10)}`.toUpperCase()}let G=Buffer.from(f).toString("hex").toUpperCase();if(G.length>40)throw new s({errorKey:"toolbox_ripple_asset_not_supported",info:{asset:f,reason:"Currency exceeds maximum length (20 bytes)"}});return G.padEnd(40,"0")}function q5(f){if(!P(f))return f;if(f.toUpperCase().startsWith("00")){let G=f.slice(24,30);try{let v=Buffer.from(G,"hex").toString("ascii").replace(/\0/g,"");if(/^[A-Za-z0-9?!@#$%^&*<>(){}[\]|]+$/.test(v)&&v.length>0)return v}catch{}return f.toUpperCase()}try{let G=f.replace(/0+$/,""),v=G.length%2===0?G:`${G}0`,W=Buffer.from(v,"hex").toString("utf8");if(/^[\x20-\x7E]+$/.test(W))return W}catch{}return f.toUpperCase()}function b(f){if(P(f))return f.toUpperCase();if(f.length<=3)return f;return N(f)}import{RequestClient as r,warnOnce as e}from"@swapkit/helpers";var I=[{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 B5(f,G){let v=b(f),W=I.find((M)=>b(M.currency)===v&&M.issuer===G);if(W)return W;try{let M=await r.get(`https://api.xrplmeta.org/token/${f}:${G}`);if(M)return{currency:f,decimals:15,description:M.desc,domain:M.domain,icon:M.icon,issuer:G,name:M.name,verified:M.self_assessment?.is_regulated||M.self_assessment?.is_licensed}}catch(M){e({condition:!0,id:`xrpl_token_lookup_${f}_${G}`,warning:`Failed to fetch XRPL token info for ${f}:${G}: ${M}`})}return{currency:f,decimals:15,issuer:G,verified:!1}}function J5(f){return I.filter((G)=>G.issuer===f)}function Y5(f,G){let v=b(f);return I.some((W)=>b(W.currency)===v&&W.issuer===G)}var G5={ACCOUNT_NOT_FOUND:19};function h(f){if(typeof f!=="object"||f===null||!("data"in f))return!1;let{data:G}=f;return typeof G==="object"&&G!==null&&"error_code"in G&&G.error_code===G5.ACCOUNT_NOT_FOUND}var E={tecFROZEN:"tecFROZEN",tecNO_AUTH:"tecNO_AUTH",tecNO_DST:"tecNO_DST",tecNO_LINE:"tecNO_LINE",tecPATH_DRY:"tecPATH_DRY",tecUNFUNDED_OFFER:"tecUNFUNDED_OFFER"};function u(f){let G=f.match(/^XRP\.([A-Fa-f0-9]{40}|[\x20-\x7E]{1,20})-([a-zA-Z0-9]{25,34})$/);if(!G?.[1]||!G?.[2])return null;if(!R(G[2]))return null;return{currency:G[1],issuer:G[2]}}function z5(f,G){return`${X.Ripple}.${f}-${G}`}async function g(f){if(f.isGasAsset){let{xrpToDrops:v}=await import("xrpl");return v(f.getValue("string"))}let G=u(f.toString());if(!G)throw new Z({errorKey:"toolbox_ripple_asset_not_supported",info:{asset:f.toString()}});return{currency:G.currency,issuer:G.issuer,value:f.getValue("string")}}function x(f){let G,v=()=>{return G??=import("xrpl").then(({Wallet:W})=>W.fromMnemonic(f)),G};return{getAddress:async()=>(await v()).address,signTransaction:async(W)=>(await v()).sign(W)}}function R(f){return U5(f)||m5(f)}function D5(f={}){let G;async function v(){if(G)return G;return G=await T(f).with({phrase:V.string},({phrase:U})=>x(U)).with({signer:V.any},({signer:U})=>U).otherwise(()=>{return}),G}let W;async function M(){let U=await f5(X.Ripple);if(!U)throw new Z({errorKey:"toolbox_ripple_rpc_not_configured",info:{chain:X.Ripple}});let{Client:m}=await import("xrpl"),$=new m(U);return await $.connect(),$}async function Q(){if(W){let U=await W.catch(()=>null);if(U?.isConnected())return U}return W=M(),W}async function p(U){let m=await U.request({command:"server_state"}),$=m.result.state.validated_ledger??m.result.state.closed_ledger;if(!$||!Number.isSafeInteger($.reserve_base)||$.reserve_base<0||!Number.isSafeInteger($.reserve_inc)||$.reserve_inc<0)throw new Z({errorKey:"toolbox_ripple_get_balance_error",info:{reason:"XRPL reserve data is unavailable or invalid"}});return{baseReserveDrops:BigInt($.reserve_base),ownerReserveDrops:BigInt($.reserve_inc)}}let D=async()=>{let U=await v();if(!U)throw new Z({errorKey:"toolbox_ripple_signer_not_found"});return U.getAddress()},o=async(U)=>{let m=U||await D(),{baseDecimal:$}=K(X.Ripple),j=await Q();try{let[z,q]=await Promise.all([j.request({account:m,command:"account_info"}),j.request({account:m,command:"account_lines"})]),Y=z.result.account_data.Balance,B=[F.from({chain:X.Ripple,fromBaseDecimal:$,value:Y})];for(let J of q.result.lines){let _=z5(J.currency,J.account);if(Number.parseFloat(J.balance)!==0)B.push(F.from({asset:_,asyncTokenLookup:!1,value:J.balance}))}return B}catch(z){if(h(z))return[F.from({chain:X.Ripple,value:0})];throw new Z({errorKey:"toolbox_ripple_get_balance_error",info:{address:m,error:z}})}},w=async()=>{let{baseDecimal:U}=K(X.Ripple),j=(await(await Q()).request({command:"fee"})).result.drops.open_ledger_fee;return F.from({chain:X.Ripple,fromBaseDecimal:U,value:j})};async function A(U){let m=U||await D(),$=await Q();try{return(await $.request({account:m,command:"account_lines"})).result.lines.map((z)=>({account:z.account,authorized:z.authorized??!1,balance:z.balance,currency:z.currency,freeze:z.freeze??!1,freezePeer:z.freeze_peer??!1,limit:z.limit,limitPeer:z.limit_peer,noRipple:z.no_ripple??!1,noRipplePeer:z.no_ripple_peer??!1,peerAuthorized:z.peer_authorized??!1,qualityIn:z.quality_in??0,qualityOut:z.quality_out??0}))}catch(j){if(h(j))return[];throw new Z({errorKey:"toolbox_ripple_get_trust_lines_error",info:{address:m,error:j}})}}async function c({address:U,currency:m,issuer:$}){let j=await A(U),z=N(m);return j.some((q)=>{return N(q.currency)===z&&q.account===$})}async function S({currency:U,issuer:m,limit:$,sender:j}){let z=j||await D();if(!R(m))throw new Z({errorKey:"core_transaction_invalid_recipient_address",info:{address:m}});let q=Number.parseFloat($);if(Number.isNaN(q)||q<0)throw new Z({errorKey:"toolbox_ripple_invalid_trust_line_limit",info:{limit:$}});let Y=await Q(),B={Account:z,LimitAmount:{currency:U,issuer:m,value:$},TransactionType:"TrustSet"};return Y.autofill(B)}async function d(U,m){let[$,j,z]=await Promise.all([U.request({account:m,command:"account_info"}),p(U),w()]),{Balance:q,OwnerCount:Y}=$.result.account_data,B=z.getBaseValue("bigint"),J=BigInt(q)-j.baseReserveDrops-BigInt(Y)*j.ownerReserveDrops-B;if(J<=0n)throw new Z({errorKey:"toolbox_sweep_amount_too_low",info:{asset:X.Ripple,balance:q,baseReserve:j.baseReserveDrops.toString(),fee:B.toString(),ownerCount:Y,ownerReserve:j.ownerReserveDrops.toString()}});let{baseDecimal:_}=K(X.Ripple),O=F.from({chain:X.Ripple,fromBaseDecimal:_,value:J.toString()});return{amount:await g(O),fee:B.toString()}}async function i(U,m){let $=u(U.toString());if(!$)throw new Z({errorKey:"toolbox_ripple_asset_not_supported",info:{asset:U.toString()}});let j=await Q(),z="0",q;while(!0){let Y=await j.request({account:m,command:"account_lines",peer:$.issuer,...q!==void 0&&{marker:q}}),B=Y.result.lines.find((_)=>_.account===$.issuer&&N(_.currency)===N($.currency));if(B){z=B.balance;break}let J=Y.result.marker;if(J===void 0||J===null)break;q=J}if(!Number.isFinite(Number(z))||Number(z)<=0)throw new Z({errorKey:"toolbox_sweep_amount_too_low",info:{asset:U.toString(),balance:z}});return{currency:$.currency,issuer:$.issuer,value:z}}async function C({assetValue:U,recipient:m,memo:$,sender:j,sweep:z,destinationTag:q,extendBySeconds:Y=150}){if(!R(m))throw new Z({errorKey:"core_transaction_invalid_recipient_address"});let B=j||await D();if(U.chain!==X.Ripple)throw new Z({errorKey:"toolbox_ripple_asset_not_supported",info:{asset:U.toString()}});let J=z&&U.isGasAsset?await d(await Q(),B):void 0,_=J?J.amount:z?await i(U,B):await g(U),O={Account:B,Amount:_,Destination:m,TransactionType:"Payment",...J&&{Fee:J.fee},...q!==void 0&&{DestinationTag:q}};if($)O.Memos=[{Memo:{MemoData:Buffer.from($).toString("hex")}}];let H=await(await Q()).autofill(O);if(H.LastLedgerSequence&&Y>0)H.LastLedgerSequence+=Math.ceil(Y/4);return H}async function k(U){let m=await v();if(!m)throw new Z({errorKey:"toolbox_ripple_signer_not_found"});return m.signTransaction(U)}async function L(U){let $=await(await Q()).submitAndWait(U),{result:j}=$;if(j.validated)return j.hash;let z=j.meta?.TransactionResult,q=T(z).with(E.tecNO_LINE,()=>"No trust line exists for this token").with(E.tecPATH_DRY,()=>"Payment path could not deliver funds").with(E.tecFROZEN,()=>"Token is frozen").otherwise(()=>{return});throw new Z({errorKey:"toolbox_ripple_broadcast_error",info:{chain:X.Ripple,...q?{reason:q}:{txResult:z}}})}let l=async(U)=>{try{let m=await k(U);return L(m.tx_blob)}catch(m){if(m instanceof Z)throw m;throw new Z({errorKey:"toolbox_ripple_broadcast_error",info:{chain:X.Ripple,error:m}})}};async function n({assetValue:U,memo:m,recipient:$,sweep:j}){let z=await v();if(!z)throw new Z({errorKey:"toolbox_ripple_signer_not_found"});let q=await z.getAddress(),Y=await C({assetValue:U,memo:m,recipient:$,sender:q,sweep:j}),B=await k(Y);return L(B.tx_blob)}async function t(U){let m=await v();if(!m)throw new Z({errorKey:"toolbox_ripple_signer_not_found"});let $=await m.getAddress(),j=await S({...U,sender:$}),z=await k(j);return L(z.tx_blob)}function a(){let U=W;if(W=null,U)U.then((m)=>{if(m?.isConnected())return m.disconnect();return}).catch((m)=>{console.warn("XRPL Cleanup failed silently:",m)})}return{broadcastTransaction:L,createSigner:x,createTransaction:C,disconnect:a,estimateTransactionFee:w,getAddress:D,getBalance:o,getTrustLines:A,hasTrustLine:c,setTrustLine:S,setTrustLineAndBroadcast:t,signAndBroadcastTransaction:l,signTransaction:k,transfer:n,validateAddress:R}}export{R as validateRippleAddress,u as parseXrplTokenIdentifier,b as normalizeCurrency,Y5 as isKnownToken,P as isHexCurrency,q5 as hexToCurrency,B5 as getXrplTokenInfo,D5 as getRippleToolbox,J5 as getKnownTokensByIssuer,z5 as formatXrplTokenIdentifier,N as currencyToHex,E as XRPL_TOKEN_ERROR_CODES,I as XRPL_KNOWN_TOKENS};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var d=Object.create;var{getPrototypeOf:o,defineProperty:F,getOwnPropertyNames:h,getOwnPropertyDescriptor:g}=Object,H=Object.prototype.hasOwnProperty;function I(l){return this[l]}var r,s,ul=(l,T,f)=>{var p=l!=null&&typeof l==="object";if(p){var O=T?r??=new WeakMap:s??=new WeakMap,y=O.get(l);if(y)return y}f=l!=null?d(o(l)):{};let x=T||!l||!l.__esModule?F(f,"default",{value:l,enumerable:!0}):f;for(let B of h(l))if(!H.call(x,B))F(x,B,{get:I.bind(l,B),enumerable:!0});if(p)O.set(l,x);return x},t=(l)=>{var T=(L??=new WeakMap).get(l),f;if(T)return T;if(T=F({},"__esModule",{value:!0}),l&&typeof l==="object"||typeof l==="function"){for(var p of h(l))if(!H.call(T,p))F(T,p,{get:I.bind(l,p),enumerable:!(f=g(l,p))||f.enumerable})}return L.set(l,T),T},L;var c=(l)=>l;function i(l,T){this[l]=c.bind(null,T)}var e=(l,T)=>{for(var f in T)F(l,f,{get:T[f],enumerable:!0,configurable:!0,set:i.bind(T,f)})};var _=(l,T)=>()=>(l&&(T=l(l=0)),T);function Sl(){function l(){let T=Date.now(),f=$||T;return $=f,T>$?T:f+1}return n+l().toString(36)}function V(l){return async function(f,p=!0){let O=await K.SwapKitApi.getChainBalance({address:f,chain:l,scamFilter:p}),{baseDecimal:y}=J.getChainConfig(l),x=O.map(({identifier:u,value:N,decimal:S})=>{return new J.AssetValue({decimal:S||y,identifier:u,value:N})});if(!x.some((u)=>u.isGasAsset))return[J.AssetValue.from({chain:l}),...x];return x}}var J,K,n,$=0;var m=_(()=>{J=require("@swapkit/helpers"),K=require("@swapkit/helpers/api"),n=typeof process<"u"&&process.pid?process.pid.toString(36):""});async function v(l){let T=G.AssetValue.from({address:l,chain:G.Chain.Solana});if(T.symbol!=="UNKNOWN")return{decimals:T.decimal||0,id:l,logoURI:T.getIconUrl(),name:T.symbol,symbol:T.ticker};let f=`https://lite-api.jup.ag/tokens/v2/search?query=${encodeURIComponent(l)}`;try{let p=await fetch(f);if(!p.ok)return null;let O=await p.json();if(!Array.isArray(O)||O.length===0)return null;return O.find((x)=>x.id===l)||null}catch{return null}}async function ll(l){let T=await w(),{PublicKey:f}=await import("@solana/web3.js"),{TOKEN_PROGRAM_ID:p}=await import("@solana/spl-token"),O=new f(l),{baseDecimal:y}=G.getChainConfig(G.Chain.Solana),x=await T.getBalance(O),B=[G.AssetValue.from({chain:G.Chain.Solana,fromBaseDecimal:y,value:x||0})],u=await T.getParsedTokenAccountsByOwner(O,{programId:p});for(let{account:N}of u.value){let S=N.data.parsed.info,z=S.mint,R=S.tokenAmount.amount;if(Number(R)===0)continue;let j=await v(z),q=j?.symbol||"UNKNOWN",W=j?.decimals||S.tokenAmount.decimals;B.push(G.AssetValue.from({asset:`${G.Chain.Solana}.${q}-${z}`,fromBaseDecimal:W,value:R}))}return B}function P(l){try{let T=new b.PublicKey(l);return b.PublicKey.isOnCurve(T.toBytes())}catch{return!1}}function Tl(l){let T=l&&"index"in l?l.index||0:0,f=G.derivationPathToString(l&&"derivationPath"in l&&l.derivationPath?l.derivationPath:G.updateDerivationPath(G.NetworkDerivationPath[G.Chain.Solana],{index:T})),p;async function O(){if(p)return p;return p=await Q.match(l).with({phrase:Q.P.string},({phrase:x})=>M({derivationPath:f,phrase:x})).with({signer:Q.P.any},({signer:x})=>x).otherwise(()=>{return}),p}async function y(){let x=await O();return x?.publicKey?a(x.publicKey):""}return{broadcastTransaction:X(w),createKeysForPath:M,createTransaction:A(w),createTransactionFromInstructions:Gl,estimateTransactionFee:fl(w),getAddress:y,getAddressFromPubKey:a,getBalance:V(G.Chain.Solana),getBalanceFromRPC:ll,getConnection:w,getPubkeyFromAddress:(x)=>new b.PublicKey(x),signAndBroadcastTransaction:async(x)=>{let B=await D(w,O)(x);return X(w)(B)},signTransaction:D(w,O),transfer:Ol(w,O),validateAddress:P}}function fl(l){return async({recipient:T,assetValue:f,memo:p,isProgramDerivedAddress:O,sender:y})=>{let x=await l(),B=await A(l)({assetValue:f,isProgramDerivedAddress:O,memo:p,recipient:T,sender:y}),u=await C(x,B),{baseDecimal:N}=G.getChainConfig(G.Chain.Solana);return G.AssetValue.from({chain:G.Chain.Solana,fromBaseDecimal:N,value:u})}}async function C(l,T){let f=await l.getFeeForMessage(T.compileMessage());if(f.value===null)throw new G.SwapKitError("toolbox_fee_estimation_failed","Could not estimate Solana fee.");return f.value}async function w(){let{Connection:l}=await import("@solana/web3.js"),T=await G.getRPCUrl(G.Chain.Solana);return new l(T,{commitment:"confirmed",fetchMiddleware:(f,p,O)=>{let y={};for(let[x,B]of Object.entries(p?.headers??{})){let u=x.toLowerCase();if(u!=="pragma"&&u!=="solana-client")y[x]=B}O(f,{...p,headers:y})}})}function pl(l){return async({assetValue:T,recipient:f,sender:p,isProgramDerivedAddress:O,sweep:y})=>{let x=await l(),B=new b.PublicKey(p);if(T.isGasAsset){let{Transaction:u,SystemProgram:N}=await import("@solana/web3.js");return new u().add(N.transfer({fromPubkey:B,lamports:y?0:T.getBaseValue("number"),toPubkey:new b.PublicKey(f)}))}if(T.address)return xl({amount:y?0:T.getBaseValue("number"),connection:x,decimals:T.decimal,from:B,isProgramDerivedAddress:O,recipient:f,sweep:y,tokenAddress:T.address});return}}async function xl({tokenAddress:l,recipient:T,from:f,connection:p,amount:O,decimals:y,isProgramDerivedAddress:x,sweep:B}){let{getAssociatedTokenAddress:u,getAccount:N,createAssociatedTokenAccountInstruction:S,createTransferCheckedInstruction:z}=await import("@solana/spl-token"),{Transaction:R}=await import("@solana/web3.js"),j=new R,q=new b.PublicKey(l),W=await u(q,f),U=new b.PublicKey(T),Y=await u(q,U,x),E=!1;try{await N(p,Y),E=!0}catch{}if(!E)j.add(S(f,Y,U,q));let Z=B?BigInt((await p.getTokenAccountBalance(W)).value.amount):O;if(B&&Z<=0n)throw new G.SwapKitError({errorKey:"toolbox_sweep_amount_too_low",info:{asset:l,balance:Z.toString()}});return j.add(z(W,q,Y,f,Z,y)),j}function A(l){return async({recipient:T,assetValue:f,memo:p,isProgramDerivedAddress:O,sender:y,sweep:x})=>{let{createMemoInstruction:B}=await import("@solana/spl-memo"),u=new b.PublicKey(y);if(!(O||P(T)))throw new G.SwapKitError("core_transaction_invalid_recipient_address");let N=await l(),S=await pl(l)({assetValue:f,isProgramDerivedAddress:O,recipient:T,sender:y,sweep:x});if(!S)throw new G.SwapKitError("core_transaction_invalid_sender_address");if(p)S.add(B(p));let z=await N.getLatestBlockhash();if(S.recentBlockhash=z.blockhash,S.feePayer=u,x&&f.isGasAsset){let[R,j,q]=await Promise.all([N.getBalance(u),C(N,S),N.getMinimumBalanceForRentExemption(0)]),W=R-j-q;if(W<=0)throw new G.SwapKitError({errorKey:"toolbox_sweep_amount_too_low",info:{balance:R,fee:j,rentReserve:q}});let{SystemProgram:U}=await import("@solana/web3.js");S.instructions[0]=U.transfer({fromPubkey:u,lamports:W,toPubkey:new b.PublicKey(T)})}return S}}async function Gl({instructions:l}){let{Transaction:T}=await import("@solana/web3.js"),f=new T().add(...l);if(!f)throw new G.SwapKitError("core_transaction_invalid_sender_address");return f}function Ol(l,T){return async({recipient:f,assetValue:p,memo:O,isProgramDerivedAddress:y,sweep:x})=>{let B=await T();if(!B)throw new G.SwapKitError("core_transaction_invalid_sender_address");let u=B.publicKey?.toString()??(await B.connect()).publicKey.toString(),N=await A(l)({assetValue:p,isProgramDerivedAddress:y,memo:O,recipient:f,sender:u,sweep:x});if("signTransaction"in B){let S=await B.signTransaction(N);return X(l)(S)}return N.sign(B),X(l)(N)}}function X(l){return async(T)=>{return(await l()).sendRawTransaction(T.serialize())}}function D(l,T){return async(f)=>{let p=await T();if(!p)throw new G.SwapKitError("toolbox_solana_no_signer");let{VersionedTransaction:O}=await import("@solana/web3.js");if(!(f instanceof O)){let x=await(await l()).getLatestBlockhash();f.recentBlockhash=x.blockhash,f.feePayer=p.publicKey||void 0}if("connect"in p)return await p.signTransaction(f);return f.sign([p]),f}}async function M({phrase:l,derivationPath:T=G.DerivationPath.SOL}){let{HDKey:f}=await import("micro-key-producer/slip10.js"),{mnemonicToSeedSync:p}=await import("@scure/bip39"),{Keypair:O}=await import("@solana/web3.js"),y=p(l),x=f.fromMasterSeed(y);return O.fromSeed(x.derive(T,!0).privateKey)}function a(l){return l.toString()}var b,G,Q;var k=_(()=>{m();b=require("@solana/web3.js"),G=require("@swapkit/helpers"),Q=require("ts-pattern")});var yl={};e(yl,{validateSolanaAddress:()=>P,getSolanaToolbox:()=>Tl,fetchTokenMetaData:()=>v,createKeysForPath:()=>M});module.exports=t(yl);var Bl=_(()=>{k()});Bl();
|
package/dist/src/solana/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{fa as w}from"../../chunk-nvfkjbyq.js";import{ga as z}from"../../chunk-xbdjxeqd.js";import{PublicKey as Q}from"@solana/web3.js";import{AssetValue as $,Chain as N,DerivationPath as h,derivationPathToString as v,getChainConfig as K,getRPCUrl as A,NetworkDerivationPath as k,SwapKitError as U,updateDerivationPath as C}from"@swapkit/helpers";import{match as u,P as E}from"ts-pattern";async function m(T){let x=$.from({address:T,chain:N.Solana});if(x.symbol!=="UNKNOWN")return{decimals:x.decimal||0,id:T,logoURI:x.getIconUrl(),name:x.symbol,symbol:x.ticker};let l=`https://lite-api.jup.ag/tokens/v2/search?query=${encodeURIComponent(T)}`;try{let f=await fetch(l);if(!f.ok)return null;let O=await f.json();if(!Array.isArray(O)||O.length===0)return null;return O.find((G)=>G.id===T)||null}catch{return null}}async function d(T){let x=await J(),{PublicKey:l}=await import("@solana/web3.js"),{TOKEN_PROGRAM_ID:f}=await import("@solana/spl-token"),O=new l(T),{baseDecimal:j}=K(N.Solana),G=await x.getBalance(O),R=[$.from({chain:N.Solana,fromBaseDecimal:j,value:G||0})],W=await x.getParsedTokenAccountsByOwner(O,{programId:f});for(let{account:q}of W.value){let y=q.data.parsed.info,Z=y.mint,X=y.tokenAmount.amount;if(Number(X)===0)continue;let B=await m(Z),F=B?.symbol||"UNKNOWN",Y=B?.decimals||y.tokenAmount.decimals;R.push($.from({asset:`${N.Solana}.${F}-${Z}`,fromBaseDecimal:Y,value:X}))}return R}function V(T){try{let x=new Q(T);return Q.isOnCurve(x.toBytes())}catch{return!1}}function n(T){let x=T&&"index"in T?T.index||0:0,l=v(T&&"derivationPath"in T&&T.derivationPath?T.derivationPath:C(k[N.Solana],{index:x})),f;async function O(){if(f)return f;return f=await u(T).with({phrase:E.string},({phrase:G})=>H({derivationPath:l,phrase:G})).with({signer:E.any},({signer:G})=>G).otherwise(()=>{return}),f}async function j(){let G=await O();return G?.publicKey?I(G.publicKey):""}return{broadcastTransaction:b(J),createKeysForPath:H,createTransaction:S(J),createTransactionFromInstructions:r,estimateTransactionFee:a(J),getAddress:j,getAddressFromPubKey:I,getBalance:w(N.Solana),getBalanceFromRPC:d,getConnection:J,getPubkeyFromAddress:(G)=>new Q(G),signAndBroadcastTransaction:async(G)=>{let R=await L(J,O)(G);return b(J)(R)},signTransaction:L(J,O),transfer:c(J,O),validateAddress:V}}function a(T){return async({recipient:x,assetValue:l,memo:f,isProgramDerivedAddress:O,sender:j})=>{let G=await T(),R=await S(T)({assetValue:l,isProgramDerivedAddress:O,memo:f,recipient:x,sender:j}),W=await D(G,R),{baseDecimal:q}=K(N.Solana);return $.from({chain:N.Solana,fromBaseDecimal:q,value:W})}}async function D(T,x){let l=await T.getFeeForMessage(x.compileMessage());if(l.value===null)throw new U("toolbox_fee_estimation_failed","Could not estimate Solana fee.");return l.value}async function J(){let{Connection:T}=await import("@solana/web3.js"),x=await A(N.Solana);return new T(x,{commitment:"confirmed",fetchMiddleware:(l,f,O)=>{let j={};for(let[G,R]of Object.entries(f?.headers??{})){let W=G.toLowerCase();if(W!=="pragma"&&W!=="solana-client")j[G]=R}O(l,{...f,headers:j})}})}function g(T){return async({assetValue:x,recipient:l,sender:f,isProgramDerivedAddress:O,sweep:j})=>{let G=await T(),R=new Q(f);if(x.isGasAsset){let{Transaction:W,SystemProgram:q}=await import("@solana/web3.js");return new W().add(q.transfer({fromPubkey:R,lamports:j?0:x.getBaseValue("number"),toPubkey:new Q(l)}))}if(x.address)return o({amount:j?0:x.getBaseValue("number"),connection:G,decimals:x.decimal,from:R,isProgramDerivedAddress:O,recipient:l,sweep:j,tokenAddress:x.address});return}}async function o({tokenAddress:T,recipient:x,from:l,connection:f,amount:O,decimals:j,isProgramDerivedAddress:G,sweep:R}){let{getAssociatedTokenAddress:W,getAccount:q,createAssociatedTokenAccountInstruction:y,createTransferCheckedInstruction:Z}=await import("@solana/spl-token"),{Transaction:X}=await import("@solana/web3.js"),B=new X,F=new Q(T),Y=await W(F,l),_=new Q(x),M=await W(F,_,G),p=!1;try{await q(f,M),p=!0}catch{}if(!p)B.add(y(l,M,_,F));let P=R?BigInt((await f.getTokenAccountBalance(Y)).value.amount):O;if(R&&P<=0n)throw new U({errorKey:"toolbox_sweep_amount_too_low",info:{asset:T,balance:P.toString()}});return B.add(Z(Y,F,M,l,P,j)),B}function S(T){return async({recipient:x,assetValue:l,memo:f,isProgramDerivedAddress:O,sender:j,sweep:G})=>{let{createMemoInstruction:R}=await import("@solana/spl-memo"),W=new Q(j);if(!(O||V(x)))throw new U("core_transaction_invalid_recipient_address");let q=await T(),y=await g(T)({assetValue:l,isProgramDerivedAddress:O,recipient:x,sender:j,sweep:G});if(!y)throw new U("core_transaction_invalid_sender_address");if(f)y.add(R(f));let Z=await q.getLatestBlockhash();if(y.recentBlockhash=Z.blockhash,y.feePayer=W,G&&l.isGasAsset){let[X,B,F]=await Promise.all([q.getBalance(W),D(q,y),q.getMinimumBalanceForRentExemption(0)]),Y=X-B-F;if(Y<=0)throw new U({errorKey:"toolbox_sweep_amount_too_low",info:{balance:X,fee:B,rentReserve:F}});let{SystemProgram:_}=await import("@solana/web3.js");y.instructions[0]=_.transfer({fromPubkey:W,lamports:Y,toPubkey:new Q(x)})}return y}}async function r({instructions:T}){let{Transaction:x}=await import("@solana/web3.js"),l=new x().add(...T);if(!l)throw new U("core_transaction_invalid_sender_address");return l}function c(T,x){return async({recipient:l,assetValue:f,memo:O,isProgramDerivedAddress:j,sweep:G})=>{let R=await x();if(!R)throw new U("core_transaction_invalid_sender_address");let W=R.publicKey?.toString()??(await R.connect()).publicKey.toString(),q=await S(T)({assetValue:f,isProgramDerivedAddress:j,memo:O,recipient:l,sender:W,sweep:G});if("signTransaction"in R){let y=await R.signTransaction(q);return b(T)(y)}return q.sign(R),b(T)(q)}}function b(T){return async(x)=>{return(await T()).sendRawTransaction(x.serialize())}}function L(T,x){return async(l)=>{let f=await x();if(!f)throw new U("toolbox_solana_no_signer");let{VersionedTransaction:O}=await import("@solana/web3.js");if(!(l instanceof O)){let G=await(await T()).getLatestBlockhash();l.recentBlockhash=G.blockhash,l.feePayer=f.publicKey||void 0}if("connect"in f)return await f.signTransaction(l);return l.sign([f]),l}}async function H({phrase:T,derivationPath:x=h.SOL}){let{HDKey:l}=await import("micro-key-producer/slip10.js"),{mnemonicToSeedSync:f}=await import("@scure/bip39"),{Keypair:O}=await import("@solana/web3.js"),j=f(T),G=l.fromMasterSeed(j);return O.fromSeed(G.derive(x,!0).privateKey)}function I(T){return T.toString()}export{V as validateSolanaAddress,n as getSolanaToolbox,m as fetchTokenMetaData,H as createKeysForPath};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var If=Object.create;var{getPrototypeOf:Jf,defineProperty:_,getOwnPropertyNames:o,getOwnPropertyDescriptor:Qf}=Object,l=Object.prototype.hasOwnProperty;function n(f){return this[f]}var Xf,Yf,Uf=(f,I,Y)=>{var j=f!=null&&typeof f==="object";if(j){var M=I?Xf??=new WeakMap:Yf??=new WeakMap,x=M.get(f);if(x)return x}Y=f!=null?If(Jf(f)):{};let $=I||!f||!f.__esModule?_(Y,"default",{value:f,enumerable:!0}):Y;for(let L of o(f))if(!l.call($,L))_($,L,{get:n.bind(f,L),enumerable:!0});if(j)M.set(f,$);return $},$f=(f)=>{var I=(u??=new WeakMap).get(f),Y;if(I)return I;if(I=_({},"__esModule",{value:!0}),f&&typeof f==="object"||typeof f==="function"){for(var j of o(f))if(!l.call(I,j))_(I,j,{get:n.bind(f,j),enumerable:!(Y=Qf(f,j))||Y.enumerable})}return u.set(f,I),I},u;var Mf=(f)=>f;function Wf(f,I){this[f]=Mf.bind(null,I)}var jf=(f,I)=>{for(var Y in I)_(f,Y,{get:I[Y],enumerable:!0,configurable:!0,set:Wf.bind(I,Y)})};var K=(f,I)=>()=>(f&&(I=f(f=0)),I);function Of(){function f(){let I=Date.now(),Y=v||I;return v=Y,I>v?I:Y+1}return xf+f().toString(36)}function c(f){return async function(Y,j=!0){let M=await i.SwapKitApi.getChainBalance({address:Y,chain:f,scamFilter:j}),{baseDecimal:x}=E.getChainConfig(f),$=M.map(({identifier:N,value:F,decimal:B})=>{return new E.AssetValue({decimal:B||x,identifier:N,value:F})});if(!$.some((N)=>N.isGasAsset))return[E.AssetValue.from({chain:f}),...$];return $}}var E,i,xf,v=0;var d=K(()=>{E=require("@swapkit/helpers"),i=require("@swapkit/helpers/api"),xf=typeof process<"u"&&process.pid?process.pid.toString(36):""});function R(f){if(!f)return!1;return/^0x[0-9a-fA-F]{1,64}$/.test(f)}async function C({phrase:f,derivationPath:I=z.DerivationPath.STRK}){let{HDKey:Y}=await import("@scure/bip32"),{mnemonicToSeedSync:j}=await import("@scure/bip39"),{ec:M,hash:x,encode:$,CallData:L}=await import("starknet"),N=j(f),B=Y.fromMasterSeed(N).derive(I);if(!B.privateKey)throw new z.SwapKitError("toolbox_starknet_no_signer");let H=$.addHexPrefix(Buffer.from(B.privateKey).toString("hex")),y=M.starkCurve.grindKey(H),O=$.addHexPrefix(y),T=M.starkCurve.getStarkKey(O),D=L.compile([T,0]);return{address:x.calculateContractAddressFromHash(T,P,D,0),privateKey:O,publicKey:T}}async function h({phrase:f,derivationPath:I=z.DerivationPath.STRK}){let{Account:Y,RpcProvider:j}=await import("starknet"),{privateKey:M,address:x}=await C({derivationPath:I,phrase:f}),$=await z.getRPCUrl(z.Chain.Starknet),L=new j({nodeUrl:$});return new Y({address:x,provider:L,signer:M})}function s(f){let I=z.Chain.Starknet,Y=f&&"index"in f?f.index||0:0,j=z.derivationPathToString(f&&"derivationPath"in f&&f.derivationPath?f.derivationPath:z.updateDerivationPath(z.NetworkDerivationPath[I],{index:Y})),M,x,$;async function L(){if(x)return x;if(M)return x=M.provider,x;let{RpcProvider:q}=await import("starknet"),G=await z.getRPCUrl(I);return x=new q({nodeUrl:G}),x}async function N(q){let G=await L(),J=q||await y();if(!J)return!1;try{return await G.getClassHashAt(J),!0}catch(Q){if(Q instanceof Error&&Q.message.includes("Contract not found"))return!1;let X=Q;if(X?.code===20||X?.code===19)return!1;throw Q}}async function F(){let{CallData:q,hash:G}=await import("starknet"),J=await L(),Q=await H();if(!Q)throw new z.SwapKitError("toolbox_starknet_no_signer");if(!$)throw new z.SwapKitError({errorKey:"toolbox_starknet_account_not_deployed",info:{message:"Cannot deploy account: public key not available. Use phrase-based wallet initialization."}});if(await N())return Q.address;let W=q.compile([$,0]);if(G.calculateContractAddressFromHash($,P,W,0).toLowerCase()!==Q.address.toLowerCase())throw new z.SwapKitError({errorKey:"toolbox_starknet_account_not_deployed",info:{message:"Address mismatch during deployment verification"}});let k={addressSalt:$,classHash:P,constructorCalldata:W},{transaction_hash:V}=await Q.deployAccount(k);return await J.waitForTransaction(V),V}async function B(){if(!await N()){if(!$)throw new z.SwapKitError({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 F()}}async function H(){if(M)return M;return M=await U.match(f).with({phrase:U.P.string},async({phrase:q})=>{let{Account:G,RpcProvider:J}=await import("starknet"),{privateKey:Q,address:X,publicKey:W}=await C({derivationPath:j,phrase:q});$=W;let Z=await z.getRPCUrl(z.Chain.Starknet),k=new J({nodeUrl:Z});return new G({address:X,provider:k,signer:Q})}).with({address:U.P.string,privateKey:U.P.string},async({privateKey:q,address:G})=>{let{Account:J}=await import("starknet"),Q=await L();return new J({address:G,provider:Q,signer:q})}).with({signer:U.P.instanceOf(Object)},({signer:q})=>q).otherwise(()=>{return}),M}async function y(){return(await H())?.address??""}async function O(q,G){let J=await L(),{uint256:Q,CallData:X}=await import("starknet"),[W="0",Z="0"]=await J.callContract({calldata:X.compile({account:q}),contractAddress:G,entrypoint:"balanceOf"});return Q.uint256ToBN({high:Z,low:W})}async function T(q){let{baseDecimal:G}=z.getChainConfig(I),J=[],Q=[w,t];for(let X of Q)try{let W=await O(q,X);U.match(X).with(w,()=>{J.push(z.AssetValue.from({chain:I,fromBaseDecimal:G,value:W}))}).with(t,()=>{if(W>0n)J.push(z.AssetValue.from({asset:`${I}.ETH-${X}`,fromBaseDecimal:G,value:W}))}).otherwise(()=>{})}catch{}return J}async function D(q){let G=await H();if(G&&(!q||G.address.toLowerCase()===q.toLowerCase()))return G;if(q){let{Account:J}=await import("starknet"),Q=await L();return new J({address:q,provider:Q,signer:"0x0"})}throw new z.SwapKitError({errorKey:"toolbox_starknet_fee_estimation_failed",info:{message:"Estimating fee needs a valid sender address or signer"}})}async function A(q,G){try{let J=await D(G),{overall_fee:Q}=await J.estimateInvokeFee(q);if(Q<=0n)throw new z.SwapKitError({errorKey:"toolbox_starknet_fee_estimation_failed",info:{message:"Sweep fee estimation returned a non-positive fee",sender:G}});return Q}catch(J){throw new z.SwapKitError({errorKey:"toolbox_starknet_fee_estimation_failed",info:{message:"Unable to estimate the sweep fee. Verify RPC availability and that the sender account is deployed.",sender:G}},J)}}async function p(q,G){let J=await S(q),Q=G.isGasAsset?J.find(({isGasAsset:X})=>X):J.find(({address:X})=>X?.toLowerCase()===G.address?.toLowerCase());if(Q)return Q.getBaseValue("bigint");if(G.isGasAsset)return O(q,w);if(G.address)return O(q,G.address);return 0n}async function b({recipient:q,assetValue:G,sender:J,sweep:Q}){let{CallData:X,uint256:W}=await import("starknet");if(!R(q))throw new z.SwapKitError("core_transaction_invalid_recipient_address",{address:q});let Z=G.isGasAsset?w:G.address;if(!Z)throw new z.SwapKitError("toolbox_starknet_invalid_address",{address:Z,assetValue:G});let k=G.getBaseValue("bigint");if(Q){let m=J??await y();if(!R(m))throw new z.SwapKitError("core_transaction_invalid_sender_address",{address:m});if(G.isGasAsset){let qf=[{calldata:X.compile([q,W.bnToUint256(1n)]),contractAddress:Z,entrypoint:"transfer"}],zf=await A(qf,m);k=await p(m,G)-zf}else k=await p(m,G);if(k<=0n)throw new z.SwapKitError({errorKey:"toolbox_sweep_amount_too_low",info:{amount:k.toString(),asset:G.toString()}})}let V=W.bnToUint256(k);return[{calldata:X.compile([q,V]),contractAddress:Z,entrypoint:"transfer"}]}async function a({recipient:q,assetValue:G,sender:J}){let{baseDecimal:Q}=z.getChainConfig(z.Chain.Starknet);try{let X=await b({assetValue:G,recipient:q}),Z=await(await D(J)).estimateInvokeFee(X);if(Z?.overall_fee)return z.AssetValue.from({chain:I,fromBaseDecimal:Q,value:Z.overall_fee})}catch(X){throw new z.SwapKitError("toolbox_starknet_fee_estimation_failed",X)}return z.AssetValue.from({chain:I,value:"0.00001"})}async function e({recipient:q,assetValue:G,memo:J,sweep:Q}){let X=await H();if(!X)throw new z.SwapKitError("toolbox_starknet_no_signer");await B();let W=await b({assetValue:G,memo:J,recipient:q,sender:X.address,sweep:Q});return(await X.execute(W)).transaction_hash}async function ff(q){let G=await H();if(!G)throw new z.SwapKitError("toolbox_starknet_no_signer");let J=await G.signMessage(q);return Array.isArray(J)?J:[J.r.toString(),J.s.toString()]}async function g(q){let G=await H();if(!G)throw new z.SwapKitError("toolbox_starknet_no_signer");return await B(),(await G.execute(q)).transaction_hash}function Gf(q){return g(q)}async function S(q,G=!0){try{return await c(I)(q,G)}catch{return T(q)}}return{broadcastTransaction:g,createKeysForPath:h,createTransaction:b,deployAccount:F,estimateTransactionFee:a,getAddress:y,getBalance:S,getProvider:L,isAccountDeployed:N,signAndBroadcastTransaction:Gf,signMessage:ff,transfer:e,validateAddress:R}}var z,U,w="0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d",t="0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7",P="0x01a736d6ed154502257f02b1ccdf4d9d1089f80811cd6acad48e6b6a9d1f2003";var r=K(()=>{d();z=require("@swapkit/helpers"),U=require("ts-pattern")});var Zf={};jf(Zf,{validateStarknetAddress:()=>R,starknetCreateKeysForPath:()=>h,getStarknetToolbox:()=>s,deriveStarknetKeys:()=>C});module.exports=$f(Zf);var Nf=K(()=>{r()});Nf();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{fa as o}from"../../chunk-nvfkjbyq.js";import{ga as j}from"../../chunk-xbdjxeqd.js";import{AssetValue as R,Chain as V,DerivationPath as d,derivationPathToString as e,getChainConfig as p,getRPCUrl as v,NetworkDerivationPath as ff,SwapKitError as Q,updateDerivationPath as Gf}from"@swapkit/helpers";import{match as u,P as m}from"ts-pattern";var D="0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d",l="0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7",C="0x01a736d6ed154502257f02b1ccdf4d9d1089f80811cd6acad48e6b6a9d1f2003";function K(X){if(!X)return!1;return/^0x[0-9a-fA-F]{1,64}$/.test(X)}async function P({phrase:X,derivationPath:$=d.STRK}){let{HDKey:U}=await import("@scure/bip32"),{mnemonicToSeedSync:N}=await import("@scure/bip39"),{ec:M,hash:L,encode:W,CallData:Z}=await import("starknet"),B=N(X),O=U.fromMasterSeed(B).derive($);if(!O.privateKey)throw new Q("toolbox_starknet_no_signer");let k=W.addHexPrefix(Buffer.from(O.privateKey).toString("hex")),F=M.starkCurve.grindKey(k),H=W.addHexPrefix(F),y=M.starkCurve.getStarkKey(H),_=Z.compile([y,0]);return{address:L.calculateContractAddressFromHash(y,C,_,0),privateKey:H,publicKey:y}}async function i({phrase:X,derivationPath:$=d.STRK}){let{Account:U,RpcProvider:N}=await import("starknet"),{privateKey:M,address:L}=await P({derivationPath:$,phrase:X}),W=await v(V.Starknet),Z=new N({nodeUrl:W});return new U({address:L,provider:Z,signer:M})}function qf(X){let $=V.Starknet,U=X&&"index"in X?X.index||0:0,N=e(X&&"derivationPath"in X&&X.derivationPath?X.derivationPath:Gf(ff[$],{index:U})),M,L,W;async function Z(){if(L)return L;if(M)return L=M.provider,L;let{RpcProvider:G}=await import("starknet"),f=await v($);return L=new G({nodeUrl:f}),L}async function B(G){let f=await Z(),q=G||await F();if(!q)return!1;try{return await f.getClassHashAt(q),!0}catch(z){if(z instanceof Error&&z.message.includes("Contract not found"))return!1;let I=z;if(I?.code===20||I?.code===19)return!1;throw z}}async function b(){let{CallData:G,hash:f}=await import("starknet"),q=await Z(),z=await k();if(!z)throw new Q("toolbox_starknet_no_signer");if(!W)throw new Q({errorKey:"toolbox_starknet_account_not_deployed",info:{message:"Cannot deploy account: public key not available. Use phrase-based wallet initialization."}});if(await B())return z.address;let J=G.compile([W,0]);if(f.calculateContractAddressFromHash(W,C,J,0).toLowerCase()!==z.address.toLowerCase())throw new Q({errorKey:"toolbox_starknet_account_not_deployed",info:{message:"Address mismatch during deployment verification"}});let x={addressSalt:W,classHash:C,constructorCalldata:J},{transaction_hash:E}=await z.deployAccount(x);return await q.waitForTransaction(E),E}async function O(){if(!await B()){if(!W)throw new Q({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 b()}}async function k(){if(M)return M;return M=await u(X).with({phrase:m.string},async({phrase:G})=>{let{Account:f,RpcProvider:q}=await import("starknet"),{privateKey:z,address:I,publicKey:J}=await P({derivationPath:N,phrase:G});W=J;let Y=await v(V.Starknet),x=new q({nodeUrl:Y});return new f({address:I,provider:x,signer:z})}).with({address:m.string,privateKey:m.string},async({privateKey:G,address:f})=>{let{Account:q}=await import("starknet"),z=await Z();return new q({address:f,provider:z,signer:G})}).with({signer:m.instanceOf(Object)},({signer:G})=>G).otherwise(()=>{return}),M}async function F(){return(await k())?.address??""}async function H(G,f){let q=await Z(),{uint256:z,CallData:I}=await import("starknet"),[J="0",Y="0"]=await q.callContract({calldata:I.compile({account:G}),contractAddress:f,entrypoint:"balanceOf"});return z.uint256ToBN({high:Y,low:J})}async function y(G){let{baseDecimal:f}=p($),q=[],z=[D,l];for(let I of z)try{let J=await H(G,I);u(I).with(D,()=>{q.push(R.from({chain:$,fromBaseDecimal:f,value:J}))}).with(l,()=>{if(J>0n)q.push(R.from({asset:`${$}.ETH-${I}`,fromBaseDecimal:f,value:J}))}).otherwise(()=>{})}catch{}return q}async function _(G){let f=await k();if(f&&(!G||f.address.toLowerCase()===G.toLowerCase()))return f;if(G){let{Account:q}=await import("starknet"),z=await Z();return new q({address:G,provider:z,signer:"0x0"})}throw new Q({errorKey:"toolbox_starknet_fee_estimation_failed",info:{message:"Estimating fee needs a valid sender address or signer"}})}async function h(G,f){try{let q=await _(f),{overall_fee:z}=await q.estimateInvokeFee(G);if(z<=0n)throw new Q({errorKey:"toolbox_starknet_fee_estimation_failed",info:{message:"Sweep fee estimation returned a non-positive fee",sender:f}});return z}catch(q){throw new Q({errorKey:"toolbox_starknet_fee_estimation_failed",info:{message:"Unable to estimate the sweep fee. Verify RPC availability and that the sender account is deployed.",sender:f}},q)}}async function A(G,f){let q=await g(G),z=f.isGasAsset?q.find(({isGasAsset:I})=>I):q.find(({address:I})=>I?.toLowerCase()===f.address?.toLowerCase());if(z)return z.getBaseValue("bigint");if(f.isGasAsset)return H(G,D);if(f.address)return H(G,f.address);return 0n}async function w({recipient:G,assetValue:f,sender:q,sweep:z}){let{CallData:I,uint256:J}=await import("starknet");if(!K(G))throw new Q("core_transaction_invalid_recipient_address",{address:G});let Y=f.isGasAsset?D:f.address;if(!Y)throw new Q("toolbox_starknet_invalid_address",{address:Y,assetValue:f});let x=f.getBaseValue("bigint");if(z){let T=q??await F();if(!K(T))throw new Q("core_transaction_invalid_sender_address",{address:T});if(f.isGasAsset){let r=[{calldata:I.compile([G,J.bnToUint256(1n)]),contractAddress:Y,entrypoint:"transfer"}],a=await h(r,T);x=await A(T,f)-a}else x=await A(T,f);if(x<=0n)throw new Q({errorKey:"toolbox_sweep_amount_too_low",info:{amount:x.toString(),asset:f.toString()}})}let E=J.bnToUint256(x);return[{calldata:I.compile([G,E]),contractAddress:Y,entrypoint:"transfer"}]}async function n({recipient:G,assetValue:f,sender:q}){let{baseDecimal:z}=p(V.Starknet);try{let I=await w({assetValue:f,recipient:G}),Y=await(await _(q)).estimateInvokeFee(I);if(Y?.overall_fee)return R.from({chain:$,fromBaseDecimal:z,value:Y.overall_fee})}catch(I){throw new Q("toolbox_starknet_fee_estimation_failed",I)}return R.from({chain:$,value:"0.00001"})}async function c({recipient:G,assetValue:f,memo:q,sweep:z}){let I=await k();if(!I)throw new Q("toolbox_starknet_no_signer");await O();let J=await w({assetValue:f,memo:q,recipient:G,sender:I.address,sweep:z});return(await I.execute(J)).transaction_hash}async function t(G){let f=await k();if(!f)throw new Q("toolbox_starknet_no_signer");let q=await f.signMessage(G);return Array.isArray(q)?q:[q.r.toString(),q.s.toString()]}async function S(G){let f=await k();if(!f)throw new Q("toolbox_starknet_no_signer");return await O(),(await f.execute(G)).transaction_hash}function s(G){return S(G)}async function g(G,f=!0){try{return await o($)(G,f)}catch{return y(G)}}return{broadcastTransaction:S,createKeysForPath:i,createTransaction:w,deployAccount:b,estimateTransactionFee:n,getAddress:F,getBalance:g,getProvider:Z,isAccountDeployed:B,signAndBroadcastTransaction:s,signMessage:t,transfer:c,validateAddress:K}}export{K as validateStarknetAddress,i as starknetCreateKeysForPath,qf as getStarknetToolbox,P as deriveStarknetKeys};
|