@swapkit/toolboxes 4.23.1 → 4.25.0
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 +28 -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/aleo/index.cjs +1 -0
- package/dist/src/aleo/index.js +1 -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/aleo/helpers.d.ts +62 -0
- package/dist/types/aleo/index.d.ts +3 -0
- package/dist/types/aleo/toolbox.d.ts +40 -0
- package/dist/types/aleo/types.d.ts +32 -0
- 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/index.d.ts +4 -0
- 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/types.d.ts +2 -0
- package/dist/types/utxo/hdWallet.d.ts +1 -1
- 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 +9 -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 W,Chain as o,CosmosChains as x,EVMChains as c,FeeOption as k,SwapKitError as v,UTXOChains as b}from"@swapkit/helpers";async function E(){let{match:l}=await import("ts-pattern"),{validateAleoAddress:r}=await import("./aleo/index.js"),{validateAptosAddress:i}=await import("./aptos/index.js"),{validateEVMAddress:e}=await import("./evm/index.js"),{validateCardanoAddress:a}=await import("./cardano/index.js"),{getCosmosAddressValidator:s}=await import("./cosmos/index.js"),{validateHyperCoreAddress:T}=await import("./hypercore/index.js"),{validateSolanaAddress:p}=await import("./solana/index.js"),{validateStarknetAddress:C}=await import("./starknet/index.js"),{validateSuiAddress:h}=await import("./sui/index.js"),{validateTonAddress:u}=await import("./ton/index.js"),{getUTXOAddressValidator:d}=await import("./utxo/index.js"),{validateNearAddress:f}=await import("./near/index.js"),{validateRadixAddress:g}=await import("./radix/index.js"),{validateRippleAddress:w}=await import("./ripple/index.js"),{validateTronAddress:S}=await import("./tron/index.js"),{validateStellarAddress:P}=await import("./stellar/index.js");return function({address:n,chain:A}){return l(A).with(...c,()=>e(n)).with(...b,(m)=>{return d(m)(n)}).with(...x,(m)=>{return s(m)(n)}).with(o.Aleo,()=>r(n)).with(o.Aptos,()=>i(n)).with(o.Radix,()=>g(n)).with(o.Hype,()=>T(n)).with(o.Near,()=>f(n)).with(o.Ripple,()=>w(n)).with(o.Solana,()=>p(n)).with(o.Stellar,()=>P(n)).with(o.Starknet,()=>C(n)).with(o.Sui,()=>h(n)).with(o.Ton,()=>u(n)).with(o.Tron,()=>S(n)).with(o.Cardano,()=>a(n)).otherwise(()=>!1)}}function H(l){return async function(i){let{match:e}=await import("ts-pattern");return e(l).returnType().with(...c,async(a)=>{let s=await y(a),T=await s.createTransaction(i),p="feeOptionKey"in i?i.feeOptionKey:k.Fast;return s.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.Aleo,async()=>{let{getAleoToolbox:a}=await import("./aleo/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()=>W.from({chain:l}))}}async function y(l,r){let{match:i}=await import("ts-pattern");return i(l).returnType().with(...c,async()=>{let{getEvmToolboxAsync:e}=await import("../chunk-ap5mzmjf.js");return await e(l,r)}).with(...b,async()=>{let{getUtxoToolbox:e}=await import("./utxo/index.js");return e(l,r)}).with(...x,async()=>{let{getCosmosToolbox:e}=await import("./cosmos/index.js");return e(l,r)}).with(o.Aleo,async()=>{let{getAleoToolbox:e}=await import("./aleo/index.js");return e(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 v("toolbox_not_supported",{chain:l})})}export{y as getToolbox,H as getFeeEstimator,E 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:UE,getOwnPropertyDescriptor:nE}=Object,jE=Object.prototype.hasOwnProperty;function zE(O){return this[O]}var oE,iE,MO=(O,_,T)=>{var M=O!=null&&typeof O==="object";if(M){var Q=_?oE??=new WeakMap:iE??=new WeakMap,$=Q.get(O);if($)return $}T=O!=null?pE(dE(O)):{};let Z=_||!O||!O.__esModule?b(T,"default",{value:O,enumerable:!0}):T;for(let J of UE(O))if(!jE.call(Z,J))b(Z,J,{get:zE.bind(O,J),enumerable:!0});if(M)Q.set(O,Z);return Z},cE=(O)=>{var _=(JE??=new WeakMap).get(O),T;if(_)return _;if(_=b({},"__esModule",{value:!0}),O&&typeof O==="object"||typeof O==="function"){for(var M of UE(O))if(!jE.call(_,M))b(_,M,{get:zE.bind(O,M),enumerable:!(T=nE(O,M))||T.enumerable})}return JE.set(O,_),_},JE;var tE=(O)=>O;function sE(O,_){this[O]=tE.bind(null,_)}var rE=(O,_)=>{for(var T in _)b(O,T,{get:_[T],enumerable:!0,configurable:!0,set:sE.bind(_,T)})};var G=(O,_)=>()=>(O&&(_=O(O=0)),_);function y(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:_}=await import("@near-js/crypto"),T=O.index||0,M=O.derivationPath?g.derivationPathToString(O.derivationPath.slice(0,3)):`m/44'/397'/${T}'`,{parseSeedPhrase:Q}=await import("near-seed-phrase"),{secretKey:$}=Q(O.phrase,M),Z=_.fromString($);return FE(Z)}async function t(O){let{KeyPair:_}=await import("@near-js/crypto"),T=_.fromString(O);return FE(T)}async function FE(O){let{KeyPairSigner:_}=await import("@near-js/signers");class T extends _{#E;constructor(M){super(M);this.#E=M}getAddress(){let M=this.#E.getPublicKey(),Q=Buffer.from(M.data).toString("hex");return Promise.resolve(Q)}}return new T(O)}async function d(O,_){let M=(await O.query({account_id:_,finality:"final",request_type:"view_access_key_list"})).keys.find((J)=>J.access_key.permission==="FullAccess");if(!M)throw new g.SwapKitError("toolbox_near_no_public_key_found");let{PublicKey:Q}=await import("@near-js/crypto"),$=Q.fromString(M.public_key);return{nonce:M.access_key.nonce||0,publicKey:$}}var g;var s=G(()=>{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 NE(O){return"customEstimator"in O}function CE(O){let _=0;for(let T of O)switch(T.enum){case"transfer":_+=Number(X.SIMPLE_TRANSFER);break;case"functionCall":_+=Number(X.CONTRACT_CALL);break;case"createAccount":_+=Number(X.ACCOUNT_CREATION);break;case"deployContract":_+=Number(X.CONTRACT_DEPLOYMENT);break;case"addKey":_+=Number(X.ACCESS_KEY_ADDITION);break;case"deleteKey":_+=Number(X.ACCESS_KEY_DELETION);break;case"stake":_+=Number(X.STAKE);break;default:_+=Number(X.CONTRACT_CALL)}return _.toString()}function _E(O){if(O==="ft_transfer"||O==="ft_transfer_call")return X.TOKEN_TRANSFER;if(O==="storage_deposit")return X.STORAGE_DEPOSIT;return X.CONTRACT_CALL}function aE(O){return(BigInt(O)*BigInt(1000000000000)).toString()}function eE(O){return(BigInt(O)/BigInt(1000000000000)).toString()}var X;var xE=G(()=>{X={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 LE({account:O,contractId:_,viewMethods:T,changeMethods:M}){let{Contract:Q}=await import("@near-js/accounts");return new Q(O,_,{changeMethods:M,useLocalViewExecution:!0,viewMethods:T})}function QO(){function O(){let _=Date.now(),T=TE||_;return TE=T,_>TE?_:T+1}return EO+O().toString(36)}function AE(O){return async function(T,M=!0){let Q=await IE.SwapKitApi.getChainBalance({address:T,chain:O,scamFilter:M}),{baseDecimal:$}=K.getChainConfig(O),Z=Q.map(({identifier:z,value:S,decimal:P})=>{return new K.AssetValue({decimal:P||$,identifier:z,value:S})});if(!Z.some((z)=>z.isGasAsset))return[K.AssetValue.from({chain:O}),...Z];return Z}}var K,IE,EO,TE=0;var wE=G(()=>{K=require("@swapkit/helpers"),IE=require("@swapkit/helpers/api"),EO=typeof process<"u"&&process.pid?process.pid.toString(36):""});function xO(O){let _;async function T(){if(_)return _;return _=await D.match(O).with({phrase:D.P.string},async(E)=>{return await p(E)}).with({signer:D.P.any},({signer:E})=>E).otherwise(()=>{return}),_}async function M(){let{JsonRpcProvider:E}=await import("@near-js/providers"),N=await R.getRPCUrl(R.Chain.Near);return new E({url:N})}async function Q(E){let{Account:N}=await import("@near-js/accounts"),C=await M(),x=await T(),L=E||await $();return new N(L,C,x)}async function $(){let E=await T();if(!E)throw new R.SwapKitError("toolbox_near_no_signer");return await E.getAddress()}async function Z(E,N){return(N||await M()).callFunction(E.contractId,"storage_balance_of",{account_id:E.accountId},{finality:"final"})}async function J(E,N){try{let C=await N.callFunction(E,"storage_balance_bounds",{},{finality:"final"});return C?.min?BigInt(C.min):HE}catch{return HE}}function z(E){return(E*(ME+_O)+ME-1n)/ME}function S(E,N){return BigInt(E)*BigInt(N.runtime_config.storage_amount_per_byte)}function P(E,N){if(E<=0n)throw new R.SwapKitError({errorKey:"toolbox_sweep_amount_too_low",info:N});return E}async function n(E){return await(E||await M()).experimental_protocolConfig({finality:"final"})}async function kE(E,N,C){let L=await(C||await M()).callFunction(E,"ft_balance_of",{account_id:N},{finality:"final"});return BigInt(L||"0")}async function VE(E){if(!await T())throw new R.SwapKitError("toolbox_near_no_signer");let{assetValue:C,recipient:x,memo:L,sweep:Y}=E,f=await $(),B=await YE({assetValue:C,memo:L,recipient:x,sender:f,sweep:Y});return XE(B)}async function bE({assetValue:E,attachedDeposit:N,memo:C,provider:x,recipient:L,sender:Y,sweep:f}){let B=E.address;if(!B)throw new R.SwapKitError("toolbox_near_missing_contract_address");let W=await Z({accountId:L,contractId:B},x),q=W?0n:await J(B,x),U=W?NO:OO,I=BigInt(N||"1"),A=E.getBaseValue("bigint");if(f){let[w,H,k,u]=await Promise.all([kE(B,Y,x),x.viewAccount(Y,{finality:"final"}),n(x),c(x)]);A=P(w,{asset:E.toString(),balance:w.toString()});let v=S(H.storage_usage,k),V=H.amount-v,l=q,qE=(U+(W?0n:GE))*z(u)+l+I;if(V<qE)throw new R.SwapKitError("toolbox_sweep_amount_too_low",{asset:E.toString(),availableNear:V.toString(),reason:"Insufficient NEAR to cover token transfer gas and storage deposit",requiredNear:qE.toString()})}let j=[];if(!W)j.push(await h({args:{account_id:L},attachedDeposit:q.toString(),gas:GE.toString(),methodName:"storage_deposit"}));return j.push(await h({args:{amount:A.toString(),memo:C||null,receiver_id:L},attachedDeposit:I.toString(),gas:U.toString(),methodName:"ft_transfer"})),BE({actions:j,receiverId:B,sender:Y})}async function yE({assetValue:E,attachedDeposit:N,memo:C,provider:x,recipient:L,sender:Y,sweep:f}){let{publicKey:B,nonce:W}=await d(x,Y),q=E.getBaseValue("bigint");if(f){let[k,u]=await Promise.all([x.viewAccount(Y,{finality:"final"}),n(x)]),v=await ZE({assetValue:E,memo:C,recipient:L,sweep:f},u),V=S(k.storage_usage,u),l=0n;if(C&&N){let $E=await c(x);l=CO*z($E)+BigInt(N)}q=P(k.amount-v.getBaseValue("bigint")-V-l,{asset:E.toString(),balance:k.amount.toString(),fee:v.getBaseValue("bigint").toString(),storageStakeReserve:V.toString()})}let{actionCreators:U,createTransaction:I}=await import("@near-js/transactions"),{baseDecode:A}=await import("@near-js/utils"),j=[U.transfer(q)];if(C&&N)j.push(U.functionCall("memo",{memo:C},BigInt("250000000000000"),BigInt(N)));let w=await x.block({finality:"final"}),H=A(w.header.hash);return I(Y,B,L,W+1,j,H)}async function YE({recipient:E,assetValue:N,memo:C,attachedDeposit:x,sender:L,functionCall:Y,sweep:f}){if(!y(E))throw new R.SwapKitError("toolbox_near_invalid_address",{recipient:E});if(!y(L))throw new R.SwapKitError("toolbox_near_invalid_address",{sender:L});if(Y)return fE({...Y,sender:L});if(f&&!await T())throw new R.SwapKitError("toolbox_near_no_signer");let B=await M(),W={assetValue:N,attachedDeposit:x,memo:C,provider:B,recipient:E,sender:L,sweep:f};return N.isGasAsset?yE(W):bE(W)}function KE(E){let N=E.encode();return Buffer.from(N).toString("base64")}async function fE({args:E,attachedDeposit:N,contractId:C,gas:x,methodName:L,sender:Y}){let f=await h({args:E,attachedDeposit:N,gas:x,methodName:L});return BE({actions:[f],receiverId:C,sender:Y})}async function BE({actions:E,receiverId:N,sender:C}){let x=await M(),{publicKey:L,nonce:Y}=await d(x,C),{createTransaction:f}=await import("@near-js/transactions"),{baseDecode:B}=await import("@near-js/utils"),W=await x.block({finality:"final"}),q=B(W.header.hash);return f(C,L,N,Y+1,E,q)}async function h(E){let{actionCreators:N}=await import("@near-js/transactions");return N.functionCall(E.methodName,Buffer.from(JSON.stringify(E.args)),BigInt(E.gas),BigInt(E.attachedDeposit))}async function QE(E){let N=await T();if(!N)throw new R.SwapKitError("toolbox_near_no_signer");await SE(E);let[C,x]=await N.signTransaction(E);return x}async function SE(E){let N=E.publicKey;if(N.toString?.().startsWith("ed25519:")||N.toString?.().startsWith("secp256k1:"))return;let{KeyType:C,PublicKey:x}=await import("@near-js/crypto"),L=N.data||N.ed25519Key?.data,Y=N.secp256k1Key?.data;if(L){E.publicKey=new x({data:Uint8Array.from(L),keyType:C.ED25519});return}if(Y)E.publicKey=new x({data:Uint8Array.from(Y),keyType:C.SECP256K1})}function o(E){if(typeof E==="string")return E;if(Array.isArray(E))return E.map(o).find(Boolean);if(!(E&&typeof E==="object"))return;let N=E;return N.transaction?.hash||N.transaction_outcome?.id}function i(E){return E instanceof Error?E.message:String(E)}async function WE(E){let C=await(await M()).sendTransaction(E),x=o(C);if(!x)throw new R.SwapKitError("toolbox_near_transfer_failed",{result:C});return x}async function XE(E){let N=await T();if(!N)throw new R.SwapKitError("toolbox_near_no_signer");let C;try{C=await QE(E)}catch(x){let L;try{L=N.signAndSendTransaction?await N.signAndSendTransaction({actions:E.actions,receiverId:E.receiverId,signerId:E.signerId}):await N.signAndSendTransactions?.({transactions:[E]})}catch(f){throw new R.SwapKitError({errorKey:"toolbox_near_sign_transaction_failed",info:{directSignError:i(x),signAndSendError:i(f)}},f)}let Y=o(L);if(Y)return Y;throw x}return WE(C)}async function ZE(E,N){let C=await T();if("assetValue"in E){if(E.sweep&&!C)throw new R.SwapKitError("toolbox_near_no_signer");try{let[L,Y]=await Promise.all([c(),N?Promise.resolve(N):n()]),{runtime_config:f}=Y,{execution:B,send_sir:W}=f.transaction_costs.action_receipt_creation_config,{execution:q,send_sir:U}=f.transaction_costs.action_creation_config.transfer_cost,I=BigInt(U)+BigInt(q),A=BigInt(W)+BigInt(B),j=I+A,w=E.sweep?z(L):L,H=j*w;return R.AssetValue.from({chain:R.Chain.Near,value:H})}catch(L){throw new R.SwapKitError({errorKey:"toolbox_fee_estimation_failed",info:{chain:R.Chain.Near,message:i(L)}},L)}}let x=C?await Q():void 0;return m(E,x)}async function c(E){let C=await(E||await M()).gasPrice(null);return BigInt(C.gas_price)}async function PE(E,N,C){if(!await T())throw new R.SwapKitError("toolbox_near_no_signer");let L=await Q(),{formatNearAmount:Y}=await import("@near-js/utils"),{PublicKey:f}=await import("@near-js/crypto"),B=Y(C)||"0";return(await L.createAccount(E,f.fromString(N),BigInt(B))).transaction.hash}async function hE(E){let N=await T();try{if(!N)throw new R.SwapKitError("toolbox_near_no_signer");let{actionCreators:C}=await import("@near-js/transactions"),{contractId:x,methodName:L,args:Y,deposit:f}=E,B=await Q(),W=await m({args:Y||{},contractId:x,methodName:L}),q=C.functionCall(L,Y||{},W.getBaseValue("bigint"),BigInt(f||"1"));return(await B.signAndSendTransaction({actions:[q],receiverId:x})).transaction_outcome.id}catch(C){throw new R.SwapKitError("toolbox_near_transfer_failed",{error:C})}}async function mE(E){let N=await Q();return LE({account:N,changeMethods:E.changeMethods,contractId:E.contractId,viewMethods:E.viewMethods})}async function uE(E){if(!await T())throw new R.SwapKitError("toolbox_near_no_signer");if(E.actions.length===0)throw new R.SwapKitError("toolbox_near_empty_batch");return(await(await Q()).signAndSendTransaction({actions:E.actions,receiverId:E.receiverId})).transaction.hash}async function m(E,N){let C=await D.match(E).when(r,()=>X.SIMPLE_TRANSFER).when(a,(L)=>_E(L.methodName)).when(e,(L)=>CE(L.actions)).when(EE,()=>X.ACCOUNT_CREATION).when(OE,()=>X.CONTRACT_DEPLOYMENT).when(NE,(L)=>{if(!N)throw new R.SwapKitError("toolbox_near_no_account");return L.customEstimator(N)}).otherwise(()=>{throw new R.SwapKitError("toolbox_near_invalid_gas_params")}),x=BigInt(C)*BigInt(1000000000000);return R.AssetValue.from({chain:R.Chain.Near,value:x})}function vE(E,N){return console.warn("NEAR toolbox: estimateGas is deprecated, use estimateGasLimit instead"),m(E,N)}async function lE(){let E=await M();try{return(await E.gasPrice(null)).gas_price||"100000000"}catch{return"100000000"}}async function gE(){let E=await T();return E?(await E.getPublicKey()).toString():""}return{broadcastTransaction:WE,callFunction:hE,createAction:h,createContract:mE,createContractFunctionCall:fE,createSubAccount:PE,createTransaction:YE,estimateGas:vE,estimateGasLimit:m,estimateTransactionFee:ZE,executeBatchTransaction:uE,getAddress:$,getBalance:AE(R.Chain.Near),getGasPrice:lE,getNearProvider:M,getPublicKey:gE,getSignerFromPhrase:p,getSignerFromPrivateKey:t,serializeTransaction:KE,signAndBroadcastTransaction:XE,signTransaction:QE,transfer:VE,validateAddress:y}}var R,D,HE=1250000000000000000000n,GE=150000000000000n,OO=150000000000000n,NO=250000000000000n,CO=250000000000000n,_O=500n,ME=10000n;var RE=G(()=>{wE();s();xE();R=require("@swapkit/helpers"),D=require("ts-pattern")});var DE=G(()=>{RE()});var LO={};rE(LO,{validateNearAddress:()=>y,tgasToGas:()=>aE,isSimpleTransfer:()=>r,isCustomEstimator:()=>NE,isContractDeployment:()=>OE,isContractCall:()=>a,isBatchTransaction:()=>e,isAccountCreation:()=>EE,getNearToolbox:()=>xO,getNearSignerFromPrivateKey:()=>t,getNearSignerFromPhrase:()=>p,getFullAccessPublicKey:()=>d,getContractMethodGas:()=>_E,gasToTGas:()=>eE,estimateBatchGas:()=>CE,createNearContract:()=>LE,GAS_COSTS:()=>X});module.exports=cE(LO);var TO=G(()=>{s();xE();RE();DE()});TO();
|
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 qE}from"../../chunk-nvfkjbyq.js";import{ga as X}from"../../chunk-xbdjxeqd.js";import{derivationPathToString as VE,SwapKitError as bE}from"@swapkit/helpers";function y(x){return x.length>=2&&x.length<=64&&/^(([a-z\d]+[-_])*[a-z\d]+\.)*([a-z\d]+[-_])*[a-z\d]+$/.test(x)}async function l(x){let{KeyPair:M}=await import("@near-js/crypto"),R=x.index||0,T=x.derivationPath?VE(x.derivationPath.slice(0,3)):`m/44'/397'/${R}'`,{parseSeedPhrase:J}=await import("near-seed-phrase"),{secretKey:z}=J(x.phrase,T),w=M.fromString(z);return NE(w)}async function OE(x){let{KeyPair:M}=await import("@near-js/crypto"),R=M.fromString(x);return NE(R)}async function NE(x){let{KeyPairSigner:M}=await import("@near-js/signers");class R extends M{#E;constructor(T){super(T);this.#E=T}getAddress(){let T=this.#E.getPublicKey(),J=Buffer.from(T.data).toString("hex");return Promise.resolve(J)}}return new R(x)}async function g(x,M){let T=(await x.query({account_id:M,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:J}=await import("@near-js/crypto"),z=J.fromString(T.public_key);return{nonce:T.access_key.nonce||0,publicKey:z}}var $={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 _E(x){return"recipient"in x&&"amount"in x&&!("contractId"in x)}function CE(x){return"contractId"in x&&"methodName"in x}function xE(x){return"actions"in x}function LE(x){return"newAccountId"in x}function ME(x){return"contractCode"in x}function RE(x){return"customEstimator"in x}function TE(x){let M=0;for(let R of x)switch(R.enum){case"transfer":M+=Number($.SIMPLE_TRANSFER);break;case"functionCall":M+=Number($.CONTRACT_CALL);break;case"createAccount":M+=Number($.ACCOUNT_CREATION);break;case"deployContract":M+=Number($.CONTRACT_DEPLOYMENT);break;case"addKey":M+=Number($.ACCESS_KEY_ADDITION);break;case"deleteKey":M+=Number($.ACCESS_KEY_DELETION);break;case"stake":M+=Number($.STAKE);break;default:M+=Number($.CONTRACT_CALL)}return M.toString()}function YE(x){if(x==="ft_transfer"||x==="ft_transfer_call")return $.TOKEN_TRANSFER;if(x==="storage_deposit")return $.STORAGE_DEPOSIT;return $.CONTRACT_CALL}function uE(x){return(BigInt(x)*BigInt(1000000000000)).toString()}function lE(x){return(BigInt(x)/BigInt(1000000000000)).toString()}async function QE({account:x,contractId:M,viewMethods:R,changeMethods:T}){let{Contract:J}=await import("@near-js/accounts");return new J(x,M,{changeMethods:T,useLocalViewExecution:!0,viewMethods:R})}import{AssetValue as WE,Chain as G,getRPCUrl as KE,SwapKitError as Q}from"@swapkit/helpers";import{match as XE,P as ZE}from"ts-pattern";var $E=1250000000000000000000n,JE=150000000000000n,yE=150000000000000n,SE=250000000000000n,PE=250000000000000n,hE=500n,p=10000n;function tE(x){let M;async function R(){if(M)return M;return M=await XE(x).with({phrase:ZE.string},async(E)=>{return await l(E)}).with({signer:ZE.any},({signer:E})=>E).otherwise(()=>{return}),M}async function T(){let{JsonRpcProvider:E}=await import("@near-js/providers"),O=await KE(G.Near);return new E({url:O})}async function J(E){let{Account:O}=await import("@near-js/accounts"),N=await T(),_=await R(),C=E||await z();return new O(C,N,_)}async function z(){let E=await R();if(!E)throw new Q("toolbox_near_no_signer");return await E.getAddress()}async function w(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 N=await O.callFunction(E,"storage_balance_bounds",{},{finality:"final"});return N?.min?BigInt(N.min):$E}catch{return $E}}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 n(E,O){if(E<=0n)throw new Q({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,N){let C=await(N||await T()).callFunction(E,"ft_balance_of",{account_id:O},{finality:"final"});return BigInt(C||"0")}async function jE(E){if(!await R())throw new Q("toolbox_near_no_signer");let{assetValue:N,recipient:_,memo:C,sweep:L}=E,Y=await z(),W=await o({assetValue:N,memo:C,recipient:_,sender:Y,sweep:L});return r(W)}async function zE({assetValue:E,attachedDeposit:O,memo:N,provider:_,recipient:C,sender:L,sweep:Y}){let W=E.address;if(!W)throw new Q("toolbox_near_missing_contract_address");let Z=await w({accountId:C,contractId:W},_),q=Z?0n:await S(W,_),U=Z?SE:yE,B=BigInt(O||"1"),F=E.getBaseValue("bigint");if(Y){let[I,f,H,V]=await Promise.all([UE(W,L,_),_.viewAccount(L,{finality:"final"}),h(_),u(_)]);F=n(I,{asset:E.toString(),balance:I.toString()});let b=d(f.storage_usage,H),A=f.amount-b,K=q,EE=(U+(Z?0n:JE))*P(V)+K+B;if(A<EE)throw new Q("toolbox_sweep_amount_too_low",{asset:E.toString(),availableNear:A.toString(),reason:"Insufficient NEAR to cover token transfer gas and storage deposit",requiredNear:EE.toString()})}let j=[];if(!Z)j.push(await k({args:{account_id:C},attachedDeposit:q.toString(),gas:JE.toString(),methodName:"storage_deposit"}));return j.push(await k({args:{amount:F.toString(),memo:N||null,receiver_id:C},attachedDeposit:B.toString(),gas:U.toString(),methodName:"ft_transfer"})),c({actions:j,receiverId:W,sender:L})}async function BE({assetValue:E,attachedDeposit:O,memo:N,provider:_,recipient:C,sender:L,sweep:Y}){let{publicKey:W,nonce:Z}=await g(_,L),q=E.getBaseValue("bigint");if(Y){let[H,V]=await Promise.all([_.viewAccount(L,{finality:"final"}),h(_)]),b=await a({assetValue:E,memo:N,recipient:C,sweep:Y},V),A=d(H.storage_usage,V),K=0n;if(N&&O){let e=await u(_);K=PE*P(e)+BigInt(O)}q=n(H.amount-b.getBaseValue("bigint")-A-K,{asset:E.toString(),balance:H.amount.toString(),fee:b.getBaseValue("bigint").toString(),storageStakeReserve:A.toString()})}let{actionCreators:U,createTransaction:B}=await import("@near-js/transactions"),{baseDecode:F}=await import("@near-js/utils"),j=[U.transfer(q)];if(N&&O)j.push(U.functionCall("memo",{memo:N},BigInt("250000000000000"),BigInt(O)));let I=await _.block({finality:"final"}),f=F(I.header.hash);return B(L,W,C,Z+1,j,f)}async function o({recipient:E,assetValue:O,memo:N,attachedDeposit:_,sender:C,functionCall:L,sweep:Y}){if(!y(E))throw new Q("toolbox_near_invalid_address",{recipient:E});if(!y(C))throw new Q("toolbox_near_invalid_address",{sender:C});if(L)return i({...L,sender:C});if(Y&&!await R())throw new Q("toolbox_near_no_signer");let W=await T(),Z={assetValue:O,attachedDeposit:_,memo:N,provider:W,recipient:E,sender:C,sweep:Y};return O.isGasAsset?BE(Z):zE(Z)}function FE(E){let O=E.encode();return Buffer.from(O).toString("base64")}async function i({args:E,attachedDeposit:O,contractId:N,gas:_,methodName:C,sender:L}){let Y=await k({args:E,attachedDeposit:O,gas:_,methodName:C});return c({actions:[Y],receiverId:N,sender:L})}async function c({actions:E,receiverId:O,sender:N}){let _=await T(),{publicKey:C,nonce:L}=await g(_,N),{createTransaction:Y}=await import("@near-js/transactions"),{baseDecode:W}=await import("@near-js/utils"),Z=await _.block({finality:"final"}),q=W(Z.header.hash);return Y(N,C,O,L+1,E,q)}async function k(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 R();if(!O)throw new Q("toolbox_near_no_signer");await IE(E);let[N,_]=await O.signTransaction(E);return _}async function IE(E){let O=E.publicKey;if(O.toString?.().startsWith("ed25519:")||O.toString?.().startsWith("secp256k1:"))return;let{KeyType:N,PublicKey:_}=await import("@near-js/crypto"),C=O.data||O.ed25519Key?.data,L=O.secp256k1Key?.data;if(C){E.publicKey=new _({data:Uint8Array.from(C),keyType:N.ED25519});return}if(L)E.publicKey=new _({data:Uint8Array.from(L),keyType:N.SECP256K1})}function m(E){if(typeof E==="string")return E;if(Array.isArray(E))return E.map(m).find(Boolean);if(!(E&&typeof E==="object"))return;let O=E;return O.transaction?.hash||O.transaction_outcome?.id}function v(E){return E instanceof Error?E.message:String(E)}async function t(E){let N=await(await T()).sendTransaction(E),_=m(N);if(!_)throw new Q("toolbox_near_transfer_failed",{result:N});return _}async function r(E){let O=await R();if(!O)throw new Q("toolbox_near_no_signer");let N;try{N=await s(E)}catch(_){let C;try{C=O.signAndSendTransaction?await O.signAndSendTransaction({actions:E.actions,receiverId:E.receiverId,signerId:E.signerId}):await O.signAndSendTransactions?.({transactions:[E]})}catch(Y){throw new Q({errorKey:"toolbox_near_sign_transaction_failed",info:{directSignError:v(_),signAndSendError:v(Y)}},Y)}let L=m(C);if(L)return L;throw _}return t(N)}async function a(E,O){let N=await R();if("assetValue"in E){if(E.sweep&&!N)throw new Q("toolbox_near_no_signer");try{let[C,L]=await Promise.all([u(),O?Promise.resolve(O):h()]),{runtime_config:Y}=L,{execution:W,send_sir:Z}=Y.transaction_costs.action_receipt_creation_config,{execution:q,send_sir:U}=Y.transaction_costs.action_creation_config.transfer_cost,B=BigInt(U)+BigInt(q),F=BigInt(Z)+BigInt(W),j=B+F,I=E.sweep?P(C):C,f=j*I;return WE.from({chain:G.Near,value:f})}catch(C){throw new Q({errorKey:"toolbox_fee_estimation_failed",info:{chain:G.Near,message:v(C)}},C)}}let _=N?await J():void 0;return D(E,_)}async function u(E){let N=await(E||await T()).gasPrice(null);return BigInt(N.gas_price)}async function fE(E,O,N){if(!await R())throw new Q("toolbox_near_no_signer");let C=await J(),{formatNearAmount:L}=await import("@near-js/utils"),{PublicKey:Y}=await import("@near-js/crypto"),W=L(N)||"0";return(await C.createAccount(E,Y.fromString(O),BigInt(W))).transaction.hash}async function HE(E){let O=await R();try{if(!O)throw new Q("toolbox_near_no_signer");let{actionCreators:N}=await import("@near-js/transactions"),{contractId:_,methodName:C,args:L,deposit:Y}=E,W=await J(),Z=await D({args:L||{},contractId:_,methodName:C}),q=N.functionCall(C,L||{},Z.getBaseValue("bigint"),BigInt(Y||"1"));return(await W.signAndSendTransaction({actions:[q],receiverId:_})).transaction_outcome.id}catch(N){throw new Q("toolbox_near_transfer_failed",{error:N})}}async function AE(E){let O=await J();return QE({account:O,changeMethods:E.changeMethods,contractId:E.contractId,viewMethods:E.viewMethods})}async function GE(E){if(!await R())throw new Q("toolbox_near_no_signer");if(E.actions.length===0)throw new Q("toolbox_near_empty_batch");return(await(await J()).signAndSendTransaction({actions:E.actions,receiverId:E.receiverId})).transaction.hash}async function D(E,O){let N=await XE(E).when(_E,()=>$.SIMPLE_TRANSFER).when(CE,(C)=>YE(C.methodName)).when(xE,(C)=>TE(C.actions)).when(LE,()=>$.ACCOUNT_CREATION).when(ME,()=>$.CONTRACT_DEPLOYMENT).when(RE,(C)=>{if(!O)throw new Q("toolbox_near_no_account");return C.customEstimator(O)}).otherwise(()=>{throw new Q("toolbox_near_invalid_gas_params")}),_=BigInt(N)*BigInt(1000000000000);return WE.from({chain:G.Near,value:_})}function wE(E,O){return console.warn("NEAR toolbox: estimateGas is deprecated, use estimateGasLimit instead"),D(E,O)}async function kE(){let E=await T();try{return(await E.gasPrice(null)).gas_price||"100000000"}catch{return"100000000"}}async function DE(){let E=await R();return E?(await E.getPublicKey()).toString():""}return{broadcastTransaction:t,callFunction:HE,createAction:k,createContract:AE,createContractFunctionCall:i,createSubAccount:fE,createTransaction:o,estimateGas:wE,estimateGasLimit:D,estimateTransactionFee:a,executeBatchTransaction:GE,getAddress:z,getBalance:qE(G.Near),getGasPrice:kE,getNearProvider:T,getPublicKey:DE,getSignerFromPhrase:l,getSignerFromPrivateKey:OE,serializeTransaction:FE,signAndBroadcastTransaction:r,signTransaction:s,transfer:jE,validateAddress:y}}export{y as validateNearAddress,uE as tgasToGas,_E as isSimpleTransfer,RE as isCustomEstimator,ME as isContractDeployment,CE as isContractCall,xE as isBatchTransaction,LE as isAccountCreation,tE as getNearToolbox,OE as getNearSignerFromPrivateKey,l as getNearSignerFromPhrase,g as getFullAccessPublicKey,YE as getContractMethodGas,lE as gasToTGas,TE as estimateBatchGas,QE as createNearContract,$ 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,W5,k5=(f,U,q)=>{var Z=f!=null&&typeof f==="object";if(Z){var B=U?q5??=new WeakMap:W5??=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(Z)B.set(f,D);return D},Z5=(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 Z of u(f))if(!p.call(U,Z))k(U,Z,{get:o.bind(f,Z),enumerable:!(q=j5(f,Z))||q.enumerable})}return x.set(f,U),U},x;var v5=(f)=>f;function B5(f,U){this[f]=v5.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`,Z=Buffer.from(q,"hex").toString("utf8");if(/^[\x20-\x7E]+$/.test(Z))return Z}catch{}return f.toUpperCase()}function F(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=F(f),Z=E.find((B)=>F(B.currency)===q&&B.issuer===U);if(Z)return Z;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=F(f);return E.some((Z)=>F(Z.currency)===q&&Z.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:()=>F,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=Z5(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:Z})=>Z.fromMnemonic(f)),U};return{getAddress:async()=>(await q()).address,signTransaction:async(Z)=>(await q()).sign(Z)}}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 b.match(f).with({phrase:b.P.string},({phrase:m})=>n(m)).with({signer:b.P.any},({signer:m})=>m).otherwise(()=>{return}),U}let Z;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(Z){let m=await Z.catch(()=>null);if(m?.isConnected())return m}return Z=B(),Z}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),W=await X();try{let[$,v]=await Promise.all([W.request({account:z,command:"account_info"}),W.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 v.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),W=(await(await X()).request({command:"fee"})).result.drops.open_ledger_fee;return G.AssetValue.from({chain:G.Chain.Ripple,fromBaseDecimal:m,value:W})};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(W){if(i(W))return[];throw new G.SwapKitError({errorKey:"toolbox_ripple_get_trust_lines_error",info:{address:z,error:W}})}}async function s({address:m,currency:z,issuer:j}){let W=await V(m),$=N(z);return W.some((v)=>{return N(v.currency)===$&&v.account===j})}async function h({currency:m,issuer:z,limit:j,sender:W}){let $=W||await Q();if(!L(z))throw new G.SwapKitError({errorKey:"core_transaction_invalid_recipient_address",info:{address:z}});let v=Number.parseFloat(j);if(Number.isNaN(v)||v<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,W,$]=await Promise.all([m.request({account:z,command:"account_info"}),D(m),T()]),{Balance:v,OwnerCount:M}=j.result.account_data,J=$.getBaseValue("bigint"),Y=BigInt(v)-W.baseReserveDrops-BigInt(M)*W.ownerReserveDrops-J;if(Y<=0n)throw new G.SwapKitError({errorKey:"toolbox_sweep_amount_too_low",info:{asset:G.Chain.Ripple,balance:v,baseReserve:W.baseReserveDrops.toString(),fee:J.toString(),ownerCount:M,ownerReserve:W.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 W=await X(),$="0",v;while(!0){let M=await W.request({account:z,command:"account_lines",peer:j.issuer,...v!==void 0&&{marker:v}}),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;v=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:W,sweep:$,destinationTag:v,extendBySeconds:M=150}){if(!L(z))throw new G.SwapKitError({errorKey:"core_transaction_invalid_recipient_address"});let J=W||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},...v!==void 0&&{DestinationTag:v}};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:W}=j;if(W.validated)return W.hash;let $=W.meta?.TransactionResult,v=b.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,...v?{reason:v}:{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:W}){let $=await q();if(!$)throw new G.SwapKitError({errorKey:"toolbox_ripple_signer_not_found"});let v=await $.getAddress(),M=await g({assetValue:m,memo:z,recipient:j,sender:v,sweep:W}),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(),W=await h({...m,sender:j}),$=await O(W);return R($.tx_blob)}function G5(){let m=Z;if(Z=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,b,_5,y;var F5=S(()=>{I();G=require("@swapkit/helpers"),w=require("ripple-address-codec"),b=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"}});F5();
|
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 b,Chain as X,getChainConfig as K,getRPCUrl as f5,SwapKitError as v}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 W=Buffer.from(f.padEnd(3,"\x00")).toString("hex");return`00${"0".repeat(22)}${W}${"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 W=Buffer.from(G,"hex").toString("ascii").replace(/\0/g,"");if(/^[A-Za-z0-9?!@#$%^&*<>(){}[\]|]+$/.test(W)&&W.length>0)return W}catch{}return f.toUpperCase()}try{let G=f.replace(/0+$/,""),W=G.length%2===0?G:`${G}0`,Z=Buffer.from(W,"hex").toString("utf8");if(/^[\x20-\x7E]+$/.test(Z))return Z}catch{}return f.toUpperCase()}function F(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 W=F(f),Z=I.find((M)=>F(M.currency)===W&&M.issuer===G);if(Z)return Z;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 W=F(f);return I.some((Z)=>F(Z.currency)===W&&Z.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:W}=await import("xrpl");return W(f.getValue("string"))}let G=u(f.toString());if(!G)throw new v({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,W=()=>{return G??=import("xrpl").then(({Wallet:Z})=>Z.fromMnemonic(f)),G};return{getAddress:async()=>(await W()).address,signTransaction:async(Z)=>(await W()).sign(Z)}}function R(f){return U5(f)||m5(f)}function D5(f={}){let G;async function W(){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 Z;async function M(){let U=await f5(X.Ripple);if(!U)throw new v({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(Z){let U=await Z.catch(()=>null);if(U?.isConnected())return U}return Z=M(),Z}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 v({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 W();if(!U)throw new v({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=[b.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(b.from({asset:_,asyncTokenLookup:!1,value:J.balance}))}return B}catch(z){if(h(z))return[b.from({chain:X.Ripple,value:0})];throw new v({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 b.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 v({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 v({errorKey:"core_transaction_invalid_recipient_address",info:{address:m}});let q=Number.parseFloat($);if(Number.isNaN(q)||q<0)throw new v({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 v({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=b.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 v({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 v({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 v({errorKey:"core_transaction_invalid_recipient_address"});let B=j||await D();if(U.chain!==X.Ripple)throw new v({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 W();if(!m)throw new v({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 v({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 v)throw m;throw new v({errorKey:"toolbox_ripple_broadcast_error",info:{chain:X.Ripple,error:m}})}};async function n({assetValue:U,memo:m,recipient:$,sweep:j}){let z=await W();if(!z)throw new v({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 W();if(!m)throw new v({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=Z;if(Z=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,F 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};
|