@swapkit/toolboxes 4.25.0 → 4.26.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- var JP=Object.create;var{getPrototypeOf:QP,defineProperty:w,getOwnPropertyNames:p,getOwnPropertyDescriptor:XP}=Object,d=Object.prototype.hasOwnProperty;function l(P){return this[P]}var YP,ZP,yP=(P,q,Q)=>{var W=P!=null&&typeof P==="object";if(W){var D=q?YP??=new WeakMap:ZP??=new WeakMap,F=D.get(P);if(F)return F}Q=P!=null?JP(QP(P)):{};let M=q||!P||!P.__esModule?w(Q,"default",{value:P,enumerable:!0}):Q;for(let _ of p(P))if(!d.call(M,_))w(M,_,{get:l.bind(P,_),enumerable:!0});if(W)D.set(P,M);return M},$P=(P)=>{var q=(m??=new WeakMap).get(P),Q;if(q)return q;if(q=w({},"__esModule",{value:!0}),P&&typeof P==="object"||typeof P==="function"){for(var W of p(P))if(!d.call(q,W))w(q,W,{get:l.bind(P,W),enumerable:!(Q=XP(P,W))||Q.enumerable})}return m.set(P,q),q},m;var MP=(P)=>P;function WP(P,q){this[P]=MP.bind(null,q)}var FP=(P,q)=>{for(var Q in q)w(P,Q,{get:q[Q],enumerable:!0,configurable:!0,set:WP.bind(q,Q)})};var u=(P,q)=>()=>(P&&(q=P(P=0)),q);async function c(P){if(T&&Date.now()-T.timestamp<DP)return T.value;let Q=(await P.ledgers().order("desc").limit(1).call()).records[0]?.base_reserve_in_stroops;if(Q===void 0)throw new j.SwapKitError({errorKey:"toolbox_stellar_balance_error",info:{reason:"base_reserve_unavailable"}});return T={timestamp:Date.now(),value:Q},Q}function A(P){return j.AssetValue.from({chain:j.Chain.Stellar,value:P}).getBaseValue("bigint")}function fP(P){let{baseDecimal:q}=j.getChainConfig(j.Chain.Stellar);return j.AssetValue.from({chain:j.Chain.Stellar,fromBaseDecimal:q,value:P}).getValue("string")}function n({balance:P,baseReserveInStroops:q,numSponsored:Q,numSponsoring:W,sellingLiabilities:D,subentryCount:F}){let M=A(P),_=A(D),K=o+F+W-Q,N=BigInt(K)*BigInt(q),C=M-N-_;return C>0n?C:0n}function _P({account:P,assetValue:q,baseReserveInStroops:Q,fee:W}){let D=P.balances.find((_)=>_.asset_type==="native"),M=(D?n({balance:D.balance,baseReserveInStroops:Q,numSponsored:P.num_sponsored,numSponsoring:P.num_sponsoring,sellingLiabilities:D.selling_liabilities,subentryCount:P.subentry_count}):0n)-BigInt(W);if(M<=0n)throw new j.SwapKitError({errorKey:"toolbox_sweep_amount_too_low",info:{asset:q.toString(),reason:"spendable balance does not cover the transaction fee"}});return M}function NP({baseReserveInStroops:P,sweepAmountInStroops:q}){if(q===void 0||P===void 0)return;let Q=BigInt(o)*BigInt(P);if(q<Q)throw new j.SwapKitError({errorKey:"toolbox_sweep_amount_too_low",info:{amountInStroops:q,minimumStartingBalanceInStroops:Q,reason:"starting balance is below the Stellar account minimum"}})}function zP({account:P,assetCode:q,assetValue:Q,issuer:W,sweep:D}){if(!D)return Q.getValue("string");let F=P.balances.find((M)=>("asset_code"in M)&&M.asset_code===q&&M.asset_issuer===W)?.balance??"0";if(A(F)<=0n)throw new j.SwapKitError({errorKey:"toolbox_sweep_amount_too_low",info:{asset:Q.toString(),balance:F,reason:"trust-line balance is not positive"}});return F}function UP(P){if(!P)return;if(new TextEncoder().encode(P).length>28)throw new j.SwapKitError("helpers_invalid_memo_type")}function R(P){if(!P||typeof P!=="string"||!P.startsWith("G")||P.length!==56)return!1;return LP.test(P)}function t(P){if(typeof P!=="object"||P===null)return;let q="response"in P?P.response:void 0;return typeof q?.status==="number"?q.status:void 0}function OP(P){return t(P)===504}function KP(P){return P.hash?.().toString("hex")}function EP(P){return[...new Set([P,...j.SKConfig.get("rpcUrls")[j.Chain.Stellar]])].filter(Boolean)}async function r(P){if(!R(P))return!1;try{let{StrKey:q}=await import("@stellar/stellar-sdk");return q.isValidEd25519PublicKey(P)}catch{return!1}}async function i(P){let{address:q,ticker:Q}=P,W=q?await r(q):!1;if(P.chain!==j.Chain.Stellar||P.isGasAsset||!xP.test(Q)||!q||!W)throw new j.SwapKitError({errorKey:"helpers_invalid_asset_identifier",info:{identifier:P.toString()}});return{assetCode:Q,issuer:q}}function a(P={}){let q,Q=P.derivationPath||j.NetworkDerivationPath[j.Chain.Stellar],W=j.derivationPathToString(Q.slice(0,3));async function D({phrase:G,path:J}){let{HDKey:Y}=await import("micro-key-producer/slip10.js"),{mnemonicToSeedSync:X}=await import("@scure/bip39"),{Keypair:$}=await import("@stellar/stellar-sdk"),Z=X(G),x=Y.fromMasterSeed(Z).derive(J,!0);return $.fromRawEd25519Seed(Buffer.from(x.privateKey))}async function F(){if(q)return q;let G=I.match(P).with({phrase:I.P.string},({phrase:J})=>J).otherwise(()=>{return});if(!G)throw new j.SwapKitError("toolbox_stellar_no_signer");return q=await D({path:W,phrase:G}),q}async function M(G){let{Horizon:J}=await import("@stellar/stellar-sdk"),Y=G||await j.getRPCUrl(j.Chain.Stellar);return new J.Server(Y)}async function _(G,J){for(let Y of J)try{return(await(await M(Y)).transactions().transaction(G).call()).hash||G}catch{}return}async function K(G,J){let Y=await j.getRPCUrl(j.Chain.Stellar),X=EP(Y),$=KP(G),Z;for(let L of X)try{let x=await M(L),{hash:f}=await x.submitTransaction(G);return f}catch(x){if(Z=x,!OP(x))break;let f=$?await _($,X):void 0;if(f)return f}throw new j.SwapKitError(J,Z)}async function N(){try{return(await F()).publicKey()}catch{return""}}async function C(G){let J=G||await N();if(!J)throw new j.SwapKitError("toolbox_stellar_account_not_found");let Y=await M(),[X,$]=await Promise.allSettled([Y.loadAccount(J),c(Y)]);if(X.status==="rejected"){let Z=X.reason;if(t(Z)===404)return[j.AssetValue.from({chain:j.Chain.Stellar,value:0})];throw Z}if($.status==="rejected")throw $.reason;return X.value.balances.map((Z)=>{if(Z.asset_type==="native"){let f=n({balance:Z.balance,baseReserveInStroops:$.value,numSponsored:X.value.num_sponsored,numSponsoring:X.value.num_sponsoring,sellingLiabilities:Z.selling_liabilities,subentryCount:X.value.subentry_count}),{baseDecimal:E}=j.getChainConfig(j.Chain.Stellar);return j.AssetValue.from({chain:j.Chain.Stellar,fromBaseDecimal:E,value:f})}let L="asset_code"in Z?Z.asset_code:"",x="asset_issuer"in Z?Z.asset_issuer:"";return j.AssetValue.from({asset:`${j.Chain.Stellar}.${L}-${x}`,asyncTokenLookup:!1,value:Z.balance})})}async function V({recipient:G,assetValue:J,memo:Y,sender:X,sweep:$}){if(UP(Y),!await r(G))throw new j.SwapKitError("core_transaction_invalid_recipient_address");let L=X||await N();if(!L)throw new j.SwapKitError("toolbox_stellar_no_signer");let{Asset:x,Memo:f,Networks:E,Operation:z,TransactionBuilder:h}=await import("@stellar/stellar-sdk"),U=await M(),k=await U.fetchBaseFee(),B=await U.loadAccount(L),g=$&&J.isGasAsset?await c(U):void 0,H=new h(B,{fee:String(k),networkPassphrase:E.PUBLIC});if(J.isGasAsset){let O=$&&g!==void 0?_P({account:B,assetValue:J,baseReserveInStroops:g,fee:k}):void 0,y=O===void 0?J.getValue("string"):fP(O);try{await U.loadAccount(G),H.addOperation(z.payment({amount:y,asset:x.native(),destination:G}))}catch{NP({baseReserveInStroops:g,sweepAmountInStroops:O}),H.addOperation(z.createAccount({destination:G,startingBalance:y}))}}else{let{assetCode:O,issuer:y}=await i(J),GP=zP({account:B,assetCode:O,assetValue:J,issuer:y,sweep:$});H.addOperation(z.payment({amount:GP,asset:new x(O,y),destination:G}))}if(Y)H.addMemo(f.text(Y));return H.setTimeout(30).build()}async function S({assetValue:G,limit:J,sender:Y}){let X=Y||await N();if(!X)throw new j.SwapKitError("toolbox_stellar_no_signer");let{Asset:$,Networks:Z,Operation:L,TransactionBuilder:x}=await import("@stellar/stellar-sdk"),{assetCode:f,issuer:E}=await i(G),z=await M(),[h,U]=await Promise.all([z.fetchBaseFee(),z.loadAccount(X)]),k=new $(f,E),B=J!==void 0?L.changeTrust({asset:k,limit:J}):L.changeTrust({asset:k});return new x(U,{fee:String(h),networkPassphrase:Z.PUBLIC}).addOperation(B).setTimeout(30).build()}async function v(G){let{TransactionBuilder:J,Networks:Y}=await import("@stellar/stellar-sdk"),X=await F(),$=J.fromXDR(G.toXDR(),Y.PUBLIC);return $.sign(X),$}function b(G){return K(G,"toolbox_stellar_broadcast_error")}async function e({recipient:G,assetValue:J,memo:Y,sweep:X}){let $=await F(),Z=$.publicKey(),L=await V({assetValue:J,memo:Y,recipient:G,sender:Z,sweep:X});return L.sign($),K(L,"toolbox_stellar_transaction_failed")}async function PP({assetValue:G,limit:J}){let Y=await F(),X=await S({assetValue:G,limit:J,sender:Y.publicKey()});return X.sign(Y),K(X,"toolbox_stellar_transaction_failed")}async function jP(G){let J=await v(G);return b(J)}async function qP(){let{baseDecimal:G}=j.getChainConfig(j.Chain.Stellar);try{let X=(await(await M()).feeStats()).fee_charged.p50;return j.AssetValue.from({chain:j.Chain.Stellar,fromBaseDecimal:G,value:X})}catch{return j.AssetValue.from({chain:j.Chain.Stellar,fromBaseDecimal:G,value:"100"})}}return{broadcastTransaction:b,createTransaction:V,createTrustline:PP,createTrustlineTransaction:S,estimateTransactionFee:qP,getAddress:N,getBalance:C,signAndBroadcastTransaction:jP,signTransaction:v,transfer:e,validateAddress:R}}var j,I,LP,xP,o=2,DP=600000,T;var s=u(()=>{j=require("@swapkit/helpers"),I=require("ts-pattern"),LP=/^G[A-Z2-7]{55}$/,xP=/^[A-Za-z0-9]{1,12}$/});var kP={};FP(kP,{validateStellarAddress:()=>R,getStellarToolbox:()=>a});module.exports=$P(kP);var BP=u(()=>{s()});BP();
1
+ var QP=Object.create;var{getPrototypeOf:XP,defineProperty:w,getOwnPropertyNames:d,getOwnPropertyDescriptor:YP}=Object,l=Object.prototype.hasOwnProperty;function u(P){return this[P]}var ZP,$P,wP=(P,q,Q)=>{var W=P!=null&&typeof P==="object";if(W){var D=q?ZP??=new WeakMap:$P??=new WeakMap,F=D.get(P);if(F)return F}Q=P!=null?QP(XP(P)):{};let M=q||!P||!P.__esModule?w(Q,"default",{value:P,enumerable:!0}):Q;for(let _ of d(P))if(!l.call(M,_))w(M,_,{get:u.bind(P,_),enumerable:!0});if(W)D.set(P,M);return M},MP=(P)=>{var q=(p??=new WeakMap).get(P),Q;if(q)return q;if(q=w({},"__esModule",{value:!0}),P&&typeof P==="object"||typeof P==="function"){for(var W of d(P))if(!l.call(q,W))w(q,W,{get:u.bind(P,W),enumerable:!(Q=YP(P,W))||Q.enumerable})}return p.set(P,q),q},p;var WP=(P)=>P;function FP(P,q){this[P]=WP.bind(null,q)}var LP=(P,q)=>{for(var Q in q)w(P,Q,{get:q[Q],enumerable:!0,configurable:!0,set:FP.bind(q,Q)})};var c=(P,q)=>()=>(P&&(q=P(P=0)),q);async function i(P){if(T&&Date.now()-T.timestamp<fP)return T.value;let Q=(await P.ledgers().order("desc").limit(1).call()).records[0]?.base_reserve_in_stroops;if(Q===void 0)throw new j.SwapKitError({errorKey:"toolbox_stellar_balance_error",info:{reason:"base_reserve_unavailable"}});return T={timestamp:Date.now(),value:Q},Q}function A(P){return j.AssetValue.from({chain:j.Chain.Stellar,value:P}).getBaseValue("bigint")}function _P(P){let{baseDecimal:q}=j.getChainConfig(j.Chain.Stellar);return j.AssetValue.from({chain:j.Chain.Stellar,fromBaseDecimal:q,value:P}).getValue("string")}function t({balance:P,baseReserveInStroops:q,numSponsored:Q,numSponsoring:W,sellingLiabilities:D,subentryCount:F}){let M=A(P),_=A(D),K=n+F+W-Q,N=BigInt(K)*BigInt(q),C=M-N-_;return C>0n?C:0n}function NP({account:P,assetValue:q,baseReserveInStroops:Q,fee:W}){let D=P.balances.find((_)=>_.asset_type==="native"),M=(D?t({balance:D.balance,baseReserveInStroops:Q,numSponsored:P.num_sponsored,numSponsoring:P.num_sponsoring,sellingLiabilities:D.selling_liabilities,subentryCount:P.subentry_count}):0n)-BigInt(W);if(M<=0n)throw new j.SwapKitError({errorKey:"toolbox_sweep_amount_too_low",info:{asset:q.toString(),reason:"spendable balance does not cover the transaction fee"}});return M}function UP({baseReserveInStroops:P,sweepAmountInStroops:q}){if(q===void 0||P===void 0)return;let Q=BigInt(n)*BigInt(P);if(q<Q)throw new j.SwapKitError({errorKey:"toolbox_sweep_amount_too_low",info:{amountInStroops:q,minimumStartingBalanceInStroops:Q,reason:"starting balance is below the Stellar account minimum"}})}function zP({account:P,assetCode:q,assetValue:Q,issuer:W,sweep:D}){if(!D)return Q.getValue("string");let F=P.balances.find((M)=>("asset_code"in M)&&M.asset_code===q&&M.asset_issuer===W)?.balance??"0";if(A(F)<=0n)throw new j.SwapKitError({errorKey:"toolbox_sweep_amount_too_low",info:{asset:Q.toString(),balance:F,reason:"trust-line balance is not positive"}});return F}function OP(P){if(!P)return;if(new TextEncoder().encode(P).length>28)throw new j.SwapKitError("helpers_invalid_memo_type")}function R(P){if(!P||typeof P!=="string"||!P.startsWith("G")||P.length!==56)return!1;return xP.test(P)}function S(P){if(typeof P!=="object"||P===null)return;let q="response"in P?P.response:void 0;return typeof q?.status==="number"?q.status:void 0}function KP(P){return S(P)===504}function EP(P){return P.hash?.().toString("hex")}function kP(P){return[...new Set([P,...j.SKConfig.get("rpcUrls")[j.Chain.Stellar]])].filter(Boolean)}async function r(P){if(!R(P))return!1;try{let{StrKey:q}=await import("@stellar/stellar-sdk");return q.isValidEd25519PublicKey(P)}catch{return!1}}async function o(P){let{address:q,ticker:Q}=P,W=q?await r(q):!1;if(P.chain!==j.Chain.Stellar||P.isGasAsset||!DP.test(Q)||!q||!W)throw new j.SwapKitError({errorKey:"helpers_invalid_asset_identifier",info:{identifier:P.toString()}});return{assetCode:Q,issuer:q}}function a(P={}){let q,Q=P.derivationPath||j.NetworkDerivationPath[j.Chain.Stellar],W=j.derivationPathToString(Q.slice(0,3));async function D({phrase:J,path:G}){let{HDKey:Z}=await import("micro-key-producer/slip10.js"),{mnemonicToSeedSync:X}=await import("@scure/bip39"),{Keypair:Y}=await import("@stellar/stellar-sdk"),$=X(J),x=Z.fromMasterSeed($).derive(G,!0);return Y.fromRawEd25519Seed(Buffer.from(x.privateKey))}async function F(){if(q)return q;let J=I.match(P).with({phrase:I.P.string},({phrase:G})=>G).otherwise(()=>{return});if(!J)throw new j.SwapKitError("toolbox_stellar_no_signer");return q=await D({path:W,phrase:J}),q}async function M(J){let{Horizon:G}=await import("@stellar/stellar-sdk"),Z=J||await j.getRPCUrl(j.Chain.Stellar);return new G.Server(Z)}async function _(J,G){for(let Z of G)try{return(await(await M(Z)).transactions().transaction(J).call()).hash||J}catch{}return}async function K(J,G){let Z=await j.getRPCUrl(j.Chain.Stellar),X=kP(Z),Y=EP(J),$;for(let L of X)try{let x=await M(L),{hash:f}=await x.submitTransaction(J);return f}catch(x){if($=x,!KP(x))break;let f=Y?await _(Y,X):void 0;if(f)return f}throw new j.SwapKitError(G,$)}async function N(){try{return(await F()).publicKey()}catch{return""}}async function C(J){let G=J||await N();if(!G)throw new j.SwapKitError("toolbox_stellar_account_not_found");let Z=await M(),[X,Y]=await Promise.allSettled([Z.loadAccount(G),i(Z)]);if(X.status==="rejected"){let $=X.reason;if(S($)===404)return[j.AssetValue.from({chain:j.Chain.Stellar,value:0})];throw $}if(Y.status==="rejected")throw Y.reason;return X.value.balances.map(($)=>{if($.asset_type==="native"){let f=t({balance:$.balance,baseReserveInStroops:Y.value,numSponsored:X.value.num_sponsored,numSponsoring:X.value.num_sponsoring,sellingLiabilities:$.selling_liabilities,subentryCount:X.value.subentry_count}),{baseDecimal:E}=j.getChainConfig(j.Chain.Stellar);return j.AssetValue.from({chain:j.Chain.Stellar,fromBaseDecimal:E,value:f})}let L="asset_code"in $?$.asset_code:"",x="asset_issuer"in $?$.asset_issuer:"";return j.AssetValue.from({asset:`${j.Chain.Stellar}.${L}-${x}`,asyncTokenLookup:!1,value:$.balance})})}async function e({address:J,assetValue:G}){if(G.chain!==j.Chain.Stellar)throw new j.SwapKitError({errorKey:"toolbox_stellar_trustline_asset_invalid",info:{asset:G.toString()}});if(G.isGasAsset)return!0;if(!G.address)throw new j.SwapKitError({errorKey:"toolbox_stellar_trustline_asset_invalid",info:{asset:G.toString(),reason:"missing issuer"}});let Z=await M(),X;try{X=await Z.loadAccount(J)}catch(Y){if(S(Y)===404)return!1;throw Y}return X.balances.some((Y)=>("asset_code"in Y)&&Y.asset_code===G.ticker&&Y.asset_issuer===G.address)}async function v({recipient:J,assetValue:G,memo:Z,sender:X,sweep:Y}){if(OP(Z),!await r(J))throw new j.SwapKitError("core_transaction_invalid_recipient_address");let L=X||await N();if(!L)throw new j.SwapKitError("toolbox_stellar_no_signer");let{Asset:x,Memo:f,Networks:E,Operation:U,TransactionBuilder:h}=await import("@stellar/stellar-sdk"),z=await M(),k=await z.fetchBaseFee(),B=await z.loadAccount(L),g=Y&&G.isGasAsset?await i(z):void 0,H=new h(B,{fee:String(k),networkPassphrase:E.PUBLIC});if(G.isGasAsset){let O=Y&&g!==void 0?NP({account:B,assetValue:G,baseReserveInStroops:g,fee:k}):void 0,y=O===void 0?G.getValue("string"):_P(O);try{await z.loadAccount(J),H.addOperation(U.payment({amount:y,asset:x.native(),destination:J}))}catch{UP({baseReserveInStroops:g,sweepAmountInStroops:O}),H.addOperation(U.createAccount({destination:J,startingBalance:y}))}}else{let{assetCode:O,issuer:y}=await o(G),JP=zP({account:B,assetCode:O,assetValue:G,issuer:y,sweep:Y});H.addOperation(U.payment({amount:JP,asset:new x(O,y),destination:J}))}if(Z)H.addMemo(f.text(Z));return H.setTimeout(30).build()}async function V({assetValue:J,limit:G,sender:Z}){let X=Z||await N();if(!X)throw new j.SwapKitError("toolbox_stellar_no_signer");let{Asset:Y,Networks:$,Operation:L,TransactionBuilder:x}=await import("@stellar/stellar-sdk"),{assetCode:f,issuer:E}=await o(J),U=await M(),[h,z]=await Promise.all([U.fetchBaseFee(),U.loadAccount(X)]),k=new Y(f,E),B=G!==void 0?L.changeTrust({asset:k,limit:G}):L.changeTrust({asset:k});return new x(z,{fee:String(h),networkPassphrase:$.PUBLIC}).addOperation(B).setTimeout(30).build()}async function b(J){let{TransactionBuilder:G,Networks:Z}=await import("@stellar/stellar-sdk"),X=await F(),Y=G.fromXDR(J.toXDR(),Z.PUBLIC);return Y.sign(X),Y}function m(J){return K(J,"toolbox_stellar_broadcast_error")}async function PP({recipient:J,assetValue:G,memo:Z,sweep:X}){let Y=await F(),$=Y.publicKey(),L=await v({assetValue:G,memo:Z,recipient:J,sender:$,sweep:X});return L.sign(Y),K(L,"toolbox_stellar_transaction_failed")}async function jP({assetValue:J,limit:G}){let Z=await F(),X=await V({assetValue:J,limit:G,sender:Z.publicKey()});return X.sign(Z),K(X,"toolbox_stellar_transaction_failed")}async function qP(J){let G=await b(J);return m(G)}async function GP(){let{baseDecimal:J}=j.getChainConfig(j.Chain.Stellar);try{let X=(await(await M()).feeStats()).fee_charged.p50;return j.AssetValue.from({chain:j.Chain.Stellar,fromBaseDecimal:J,value:X})}catch{return j.AssetValue.from({chain:j.Chain.Stellar,fromBaseDecimal:J,value:"100"})}}return{broadcastTransaction:m,createTransaction:v,createTrustline:jP,createTrustlineTransaction:V,estimateTransactionFee:GP,getAddress:N,getBalance:C,hasTrustline:e,signAndBroadcastTransaction:qP,signTransaction:b,transfer:PP,validateAddress:R}}var j,I,xP,DP,n=2,fP=600000,T;var s=c(()=>{j=require("@swapkit/helpers"),I=require("ts-pattern"),xP=/^G[A-Z2-7]{55}$/,DP=/^[A-Za-z0-9]{1,12}$/});var BP={};LP(BP,{validateStellarAddress:()=>R,getStellarToolbox:()=>a});module.exports=MP(BP);var HP=c(()=>{s()});HP();
@@ -1 +1 @@
1
- import{ga as N}from"../../chunk-xbdjxeqd.js";import{AssetValue as z,Chain as M,derivationPathToString as PP,getChainConfig as A,getRPCUrl as d,NetworkDerivationPath as jP,SKConfig as qP,SwapKitError as L}from"@swapkit/helpers";import{match as GP,P as JP}from"ts-pattern";var QP=/^G[A-Z2-7]{55}$/,XP=/^[A-Za-z0-9]{1,12}$/,c=2,YP=600000,R;async function l(P){if(R&&Date.now()-R.timestamp<YP)return R.value;let Z=(await P.ledgers().order("desc").limit(1).call()).records[0]?.base_reserve_in_stroops;if(Z===void 0)throw new L({errorKey:"toolbox_stellar_balance_error",info:{reason:"base_reserve_unavailable"}});return R={timestamp:Date.now(),value:Z},Z}function V(P){return z.from({chain:M.Stellar,value:P}).getBaseValue("bigint")}function ZP(P){let{baseDecimal:G}=A(M.Stellar);return z.from({chain:M.Stellar,fromBaseDecimal:G,value:P}).getValue("string")}function i({balance:P,baseReserveInStroops:G,numSponsored:Z,numSponsoring:f,sellingLiabilities:_,subentryCount:x}){let $=V(P),k=V(_),B=c+x+f-Z,U=BigInt(B)*BigInt(G),I=$-U-k;return I>0n?I:0n}function $P({account:P,assetValue:G,baseReserveInStroops:Z,fee:f}){let _=P.balances.find((k)=>k.asset_type==="native"),$=(_?i({balance:_.balance,baseReserveInStroops:Z,numSponsored:P.num_sponsored,numSponsoring:P.num_sponsoring,sellingLiabilities:_.selling_liabilities,subentryCount:P.subentry_count}):0n)-BigInt(f);if($<=0n)throw new L({errorKey:"toolbox_sweep_amount_too_low",info:{asset:G.toString(),reason:"spendable balance does not cover the transaction fee"}});return $}function MP({baseReserveInStroops:P,sweepAmountInStroops:G}){if(G===void 0||P===void 0)return;let Z=BigInt(c)*BigInt(P);if(G<Z)throw new L({errorKey:"toolbox_sweep_amount_too_low",info:{amountInStroops:G,minimumStartingBalanceInStroops:Z,reason:"starting balance is below the Stellar account minimum"}})}function WP({account:P,assetCode:G,assetValue:Z,issuer:f,sweep:_}){if(!_)return Z.getValue("string");let x=P.balances.find(($)=>("asset_code"in $)&&$.asset_code===G&&$.asset_issuer===f)?.balance??"0";if(V(x)<=0n)throw new L({errorKey:"toolbox_sweep_amount_too_low",info:{asset:Z.toString(),balance:x,reason:"trust-line balance is not positive"}});return x}function FP(P){if(!P)return;if(new TextEncoder().encode(P).length>28)throw new L("helpers_invalid_memo_type")}function S(P){if(!P||typeof P!=="string"||!P.startsWith("G")||P.length!==56)return!1;return QP.test(P)}function o(P){if(typeof P!=="object"||P===null)return;let G="response"in P?P.response:void 0;return typeof G?.status==="number"?G.status:void 0}function LP(P){return o(P)===504}function xP(P){return P.hash?.().toString("hex")}function DP(P){return[...new Set([P,...qP.get("rpcUrls")[M.Stellar]])].filter(Boolean)}async function n(P){if(!S(P))return!1;try{let{StrKey:G}=await import("@stellar/stellar-sdk");return G.isValidEd25519PublicKey(P)}catch{return!1}}async function u(P){let{address:G,ticker:Z}=P,f=G?await n(G):!1;if(P.chain!==M.Stellar||P.isGasAsset||!XP.test(Z)||!G||!f)throw new L({errorKey:"helpers_invalid_asset_identifier",info:{identifier:P.toString()}});return{assetCode:Z,issuer:G}}function fP(P={}){let G,Z=P.derivationPath||jP[M.Stellar],f=PP(Z.slice(0,3));async function _({phrase:j,path:q}){let{HDKey:Q}=await import("micro-key-producer/slip10.js"),{mnemonicToSeedSync:J}=await import("@scure/bip39"),{Keypair:Y}=await import("@stellar/stellar-sdk"),X=J(j),F=Q.fromMasterSeed(X).derive(q,!0);return Y.fromRawEd25519Seed(Buffer.from(F.privateKey))}async function x(){if(G)return G;let j=GP(P).with({phrase:JP.string},({phrase:q})=>q).otherwise(()=>{return});if(!j)throw new L("toolbox_stellar_no_signer");return G=await _({path:f,phrase:j}),G}async function $(j){let{Horizon:q}=await import("@stellar/stellar-sdk"),Q=j||await d(M.Stellar);return new q.Server(Q)}async function k(j,q){for(let Q of q)try{return(await(await $(Q)).transactions().transaction(j).call()).hash||j}catch{}return}async function B(j,q){let Q=await d(M.Stellar),J=DP(Q),Y=xP(j),X;for(let W of J)try{let F=await $(W),{hash:D}=await F.submitTransaction(j);return D}catch(F){if(X=F,!LP(F))break;let D=Y?await k(Y,J):void 0;if(D)return D}throw new L(q,X)}async function U(){try{return(await x()).publicKey()}catch{return""}}async function I(j){let q=j||await U();if(!q)throw new L("toolbox_stellar_account_not_found");let Q=await $(),[J,Y]=await Promise.allSettled([Q.loadAccount(q),l(Q)]);if(J.status==="rejected"){let X=J.reason;if(o(X)===404)return[z.from({chain:M.Stellar,value:0})];throw X}if(Y.status==="rejected")throw Y.reason;return J.value.balances.map((X)=>{if(X.asset_type==="native"){let D=i({balance:X.balance,baseReserveInStroops:Y.value,numSponsored:J.value.num_sponsored,numSponsoring:J.value.num_sponsoring,sellingLiabilities:X.selling_liabilities,subentryCount:J.value.subentry_count}),{baseDecimal:H}=A(M.Stellar);return z.from({chain:M.Stellar,fromBaseDecimal:H,value:D})}let W="asset_code"in X?X.asset_code:"",F="asset_issuer"in X?X.asset_issuer:"";return z.from({asset:`${M.Stellar}.${W}-${F}`,asyncTokenLookup:!1,value:X.balance})})}async function v({recipient:j,assetValue:q,memo:Q,sender:J,sweep:Y}){if(FP(Q),!await n(j))throw new L("core_transaction_invalid_recipient_address");let W=J||await U();if(!W)throw new L("toolbox_stellar_no_signer");let{Asset:F,Memo:D,Networks:H,Operation:O,TransactionBuilder:h}=await import("@stellar/stellar-sdk"),K=await $(),y=await K.fetchBaseFee(),w=await K.loadAccount(W),g=Y&&q.isGasAsset?await l(K):void 0,C=new h(w,{fee:String(y),networkPassphrase:H.PUBLIC});if(q.isGasAsset){let E=Y&&g!==void 0?$P({account:w,assetValue:q,baseReserveInStroops:g,fee:y}):void 0,T=E===void 0?q.getValue("string"):ZP(E);try{await K.loadAccount(j),C.addOperation(O.payment({amount:T,asset:F.native(),destination:j}))}catch{MP({baseReserveInStroops:g,sweepAmountInStroops:E}),C.addOperation(O.createAccount({destination:j,startingBalance:T}))}}else{let{assetCode:E,issuer:T}=await u(q),e=WP({account:w,assetCode:E,assetValue:q,issuer:T,sweep:Y});C.addOperation(O.payment({amount:e,asset:new F(E,T),destination:j}))}if(Q)C.addMemo(D.text(Q));return C.setTimeout(30).build()}async function b({assetValue:j,limit:q,sender:Q}){let J=Q||await U();if(!J)throw new L("toolbox_stellar_no_signer");let{Asset:Y,Networks:X,Operation:W,TransactionBuilder:F}=await import("@stellar/stellar-sdk"),{assetCode:D,issuer:H}=await u(j),O=await $(),[h,K]=await Promise.all([O.fetchBaseFee(),O.loadAccount(J)]),y=new Y(D,H),w=q!==void 0?W.changeTrust({asset:y,limit:q}):W.changeTrust({asset:y});return new F(K,{fee:String(h),networkPassphrase:X.PUBLIC}).addOperation(w).setTimeout(30).build()}async function m(j){let{TransactionBuilder:q,Networks:Q}=await import("@stellar/stellar-sdk"),J=await x(),Y=q.fromXDR(j.toXDR(),Q.PUBLIC);return Y.sign(J),Y}function p(j){return B(j,"toolbox_stellar_broadcast_error")}async function t({recipient:j,assetValue:q,memo:Q,sweep:J}){let Y=await x(),X=Y.publicKey(),W=await v({assetValue:q,memo:Q,recipient:j,sender:X,sweep:J});return W.sign(Y),B(W,"toolbox_stellar_transaction_failed")}async function r({assetValue:j,limit:q}){let Q=await x(),J=await b({assetValue:j,limit:q,sender:Q.publicKey()});return J.sign(Q),B(J,"toolbox_stellar_transaction_failed")}async function a(j){let q=await m(j);return p(q)}async function s(){let{baseDecimal:j}=A(M.Stellar);try{let J=(await(await $()).feeStats()).fee_charged.p50;return z.from({chain:M.Stellar,fromBaseDecimal:j,value:J})}catch{return z.from({chain:M.Stellar,fromBaseDecimal:j,value:"100"})}}return{broadcastTransaction:p,createTransaction:v,createTrustline:r,createTrustlineTransaction:b,estimateTransactionFee:s,getAddress:U,getBalance:I,signAndBroadcastTransaction:a,signTransaction:m,transfer:t,validateAddress:S}}export{S as validateStellarAddress,fP as getStellarToolbox};
1
+ import{ga as N}from"../../chunk-xbdjxeqd.js";import{AssetValue as U,Chain as M,derivationPathToString as jP,getChainConfig as A,getRPCUrl as l,NetworkDerivationPath as qP,SKConfig as GP,SwapKitError as W}from"@swapkit/helpers";import{match as JP,P as QP}from"ts-pattern";var XP=/^G[A-Z2-7]{55}$/,YP=/^[A-Za-z0-9]{1,12}$/,i=2,ZP=600000,R;async function u(P){if(R&&Date.now()-R.timestamp<ZP)return R.value;let Z=(await P.ledgers().order("desc").limit(1).call()).records[0]?.base_reserve_in_stroops;if(Z===void 0)throw new W({errorKey:"toolbox_stellar_balance_error",info:{reason:"base_reserve_unavailable"}});return R={timestamp:Date.now(),value:Z},Z}function S(P){return U.from({chain:M.Stellar,value:P}).getBaseValue("bigint")}function $P(P){let{baseDecimal:J}=A(M.Stellar);return U.from({chain:M.Stellar,fromBaseDecimal:J,value:P}).getValue("string")}function o({balance:P,baseReserveInStroops:J,numSponsored:Z,numSponsoring:f,sellingLiabilities:_,subentryCount:x}){let $=S(P),k=S(_),B=i+x+f-Z,z=BigInt(B)*BigInt(J),I=$-z-k;return I>0n?I:0n}function MP({account:P,assetValue:J,baseReserveInStroops:Z,fee:f}){let _=P.balances.find((k)=>k.asset_type==="native"),$=(_?o({balance:_.balance,baseReserveInStroops:Z,numSponsored:P.num_sponsored,numSponsoring:P.num_sponsoring,sellingLiabilities:_.selling_liabilities,subentryCount:P.subentry_count}):0n)-BigInt(f);if($<=0n)throw new W({errorKey:"toolbox_sweep_amount_too_low",info:{asset:J.toString(),reason:"spendable balance does not cover the transaction fee"}});return $}function WP({baseReserveInStroops:P,sweepAmountInStroops:J}){if(J===void 0||P===void 0)return;let Z=BigInt(i)*BigInt(P);if(J<Z)throw new W({errorKey:"toolbox_sweep_amount_too_low",info:{amountInStroops:J,minimumStartingBalanceInStroops:Z,reason:"starting balance is below the Stellar account minimum"}})}function FP({account:P,assetCode:J,assetValue:Z,issuer:f,sweep:_}){if(!_)return Z.getValue("string");let x=P.balances.find(($)=>("asset_code"in $)&&$.asset_code===J&&$.asset_issuer===f)?.balance??"0";if(S(x)<=0n)throw new W({errorKey:"toolbox_sweep_amount_too_low",info:{asset:Z.toString(),balance:x,reason:"trust-line balance is not positive"}});return x}function LP(P){if(!P)return;if(new TextEncoder().encode(P).length>28)throw new W("helpers_invalid_memo_type")}function V(P){if(!P||typeof P!=="string"||!P.startsWith("G")||P.length!==56)return!1;return XP.test(P)}function v(P){if(typeof P!=="object"||P===null)return;let J="response"in P?P.response:void 0;return typeof J?.status==="number"?J.status:void 0}function xP(P){return v(P)===504}function DP(P){return P.hash?.().toString("hex")}function fP(P){return[...new Set([P,...GP.get("rpcUrls")[M.Stellar]])].filter(Boolean)}async function n(P){if(!V(P))return!1;try{let{StrKey:J}=await import("@stellar/stellar-sdk");return J.isValidEd25519PublicKey(P)}catch{return!1}}async function c(P){let{address:J,ticker:Z}=P,f=J?await n(J):!1;if(P.chain!==M.Stellar||P.isGasAsset||!YP.test(Z)||!J||!f)throw new W({errorKey:"helpers_invalid_asset_identifier",info:{identifier:P.toString()}});return{assetCode:Z,issuer:J}}function _P(P={}){let J,Z=P.derivationPath||qP[M.Stellar],f=jP(Z.slice(0,3));async function _({phrase:q,path:j}){let{HDKey:X}=await import("micro-key-producer/slip10.js"),{mnemonicToSeedSync:G}=await import("@scure/bip39"),{Keypair:Q}=await import("@stellar/stellar-sdk"),Y=G(q),L=X.fromMasterSeed(Y).derive(j,!0);return Q.fromRawEd25519Seed(Buffer.from(L.privateKey))}async function x(){if(J)return J;let q=JP(P).with({phrase:QP.string},({phrase:j})=>j).otherwise(()=>{return});if(!q)throw new W("toolbox_stellar_no_signer");return J=await _({path:f,phrase:q}),J}async function $(q){let{Horizon:j}=await import("@stellar/stellar-sdk"),X=q||await l(M.Stellar);return new j.Server(X)}async function k(q,j){for(let X of j)try{return(await(await $(X)).transactions().transaction(q).call()).hash||q}catch{}return}async function B(q,j){let X=await l(M.Stellar),G=fP(X),Q=DP(q),Y;for(let F of G)try{let L=await $(F),{hash:D}=await L.submitTransaction(q);return D}catch(L){if(Y=L,!xP(L))break;let D=Q?await k(Q,G):void 0;if(D)return D}throw new W(j,Y)}async function z(){try{return(await x()).publicKey()}catch{return""}}async function I(q){let j=q||await z();if(!j)throw new W("toolbox_stellar_account_not_found");let X=await $(),[G,Q]=await Promise.allSettled([X.loadAccount(j),u(X)]);if(G.status==="rejected"){let Y=G.reason;if(v(Y)===404)return[U.from({chain:M.Stellar,value:0})];throw Y}if(Q.status==="rejected")throw Q.reason;return G.value.balances.map((Y)=>{if(Y.asset_type==="native"){let D=o({balance:Y.balance,baseReserveInStroops:Q.value,numSponsored:G.value.num_sponsored,numSponsoring:G.value.num_sponsoring,sellingLiabilities:Y.selling_liabilities,subentryCount:G.value.subentry_count}),{baseDecimal:H}=A(M.Stellar);return U.from({chain:M.Stellar,fromBaseDecimal:H,value:D})}let F="asset_code"in Y?Y.asset_code:"",L="asset_issuer"in Y?Y.asset_issuer:"";return U.from({asset:`${M.Stellar}.${F}-${L}`,asyncTokenLookup:!1,value:Y.balance})})}async function t({address:q,assetValue:j}){if(j.chain!==M.Stellar)throw new W({errorKey:"toolbox_stellar_trustline_asset_invalid",info:{asset:j.toString()}});if(j.isGasAsset)return!0;if(!j.address)throw new W({errorKey:"toolbox_stellar_trustline_asset_invalid",info:{asset:j.toString(),reason:"missing issuer"}});let X=await $(),G;try{G=await X.loadAccount(q)}catch(Q){if(v(Q)===404)return!1;throw Q}return G.balances.some((Q)=>("asset_code"in Q)&&Q.asset_code===j.ticker&&Q.asset_issuer===j.address)}async function b({recipient:q,assetValue:j,memo:X,sender:G,sweep:Q}){if(LP(X),!await n(q))throw new W("core_transaction_invalid_recipient_address");let F=G||await z();if(!F)throw new W("toolbox_stellar_no_signer");let{Asset:L,Memo:D,Networks:H,Operation:O,TransactionBuilder:h}=await import("@stellar/stellar-sdk"),K=await $(),y=await K.fetchBaseFee(),w=await K.loadAccount(F),g=Q&&j.isGasAsset?await u(K):void 0,C=new h(w,{fee:String(y),networkPassphrase:H.PUBLIC});if(j.isGasAsset){let E=Q&&g!==void 0?MP({account:w,assetValue:j,baseReserveInStroops:g,fee:y}):void 0,T=E===void 0?j.getValue("string"):$P(E);try{await K.loadAccount(q),C.addOperation(O.payment({amount:T,asset:L.native(),destination:q}))}catch{WP({baseReserveInStroops:g,sweepAmountInStroops:E}),C.addOperation(O.createAccount({destination:q,startingBalance:T}))}}else{let{assetCode:E,issuer:T}=await c(j),PP=FP({account:w,assetCode:E,assetValue:j,issuer:T,sweep:Q});C.addOperation(O.payment({amount:PP,asset:new L(E,T),destination:q}))}if(X)C.addMemo(D.text(X));return C.setTimeout(30).build()}async function m({assetValue:q,limit:j,sender:X}){let G=X||await z();if(!G)throw new W("toolbox_stellar_no_signer");let{Asset:Q,Networks:Y,Operation:F,TransactionBuilder:L}=await import("@stellar/stellar-sdk"),{assetCode:D,issuer:H}=await c(q),O=await $(),[h,K]=await Promise.all([O.fetchBaseFee(),O.loadAccount(G)]),y=new Q(D,H),w=j!==void 0?F.changeTrust({asset:y,limit:j}):F.changeTrust({asset:y});return new L(K,{fee:String(h),networkPassphrase:Y.PUBLIC}).addOperation(w).setTimeout(30).build()}async function p(q){let{TransactionBuilder:j,Networks:X}=await import("@stellar/stellar-sdk"),G=await x(),Q=j.fromXDR(q.toXDR(),X.PUBLIC);return Q.sign(G),Q}function d(q){return B(q,"toolbox_stellar_broadcast_error")}async function r({recipient:q,assetValue:j,memo:X,sweep:G}){let Q=await x(),Y=Q.publicKey(),F=await b({assetValue:j,memo:X,recipient:q,sender:Y,sweep:G});return F.sign(Q),B(F,"toolbox_stellar_transaction_failed")}async function a({assetValue:q,limit:j}){let X=await x(),G=await m({assetValue:q,limit:j,sender:X.publicKey()});return G.sign(X),B(G,"toolbox_stellar_transaction_failed")}async function s(q){let j=await p(q);return d(j)}async function e(){let{baseDecimal:q}=A(M.Stellar);try{let G=(await(await $()).feeStats()).fee_charged.p50;return U.from({chain:M.Stellar,fromBaseDecimal:q,value:G})}catch{return U.from({chain:M.Stellar,fromBaseDecimal:q,value:"100"})}}return{broadcastTransaction:d,createTransaction:b,createTrustline:a,createTrustlineTransaction:m,estimateTransactionFee:e,getAddress:z,getBalance:I,hasTrustline:t,signAndBroadcastTransaction:s,signTransaction:p,transfer:r,validateAddress:V}}export{V as validateStellarAddress,_P as getStellarToolbox};
@@ -7,18 +7,22 @@ export declare function getStellarToolbox(params?: StellarToolboxParams): {
7
7
  hash?: () => Buffer;
8
8
  toXDR: () => string;
9
9
  }) => Promise<string>;
10
- createTransaction: ({ recipient, assetValue, memo, sender, sweep }: StellarCreateTransactionParams) => Promise<import("@stellar/stellar-sdk").Transaction<import("@stellar/stellar-sdk").Memo<import("@stellar/stellar-sdk").MemoType>, import("@stellar/stellar-sdk").Operation[]>>;
10
+ createTransaction: ({ recipient, assetValue, memo, sender, sweep }: StellarCreateTransactionParams) => Promise<import("@stellar/stellar-sdk").Transaction>;
11
11
  createTrustline: ({ assetValue, limit }: StellarTrustlineParams) => Promise<string>;
12
- createTrustlineTransaction: ({ assetValue, limit, sender }: StellarCreateTrustlineTransactionParams) => Promise<import("@stellar/stellar-sdk").Transaction<import("@stellar/stellar-sdk").Memo<import("@stellar/stellar-sdk").MemoType>, import("@stellar/stellar-sdk").Operation[]>>;
12
+ createTrustlineTransaction: ({ assetValue, limit, sender }: StellarCreateTrustlineTransactionParams) => Promise<import("@stellar/stellar-sdk").Transaction>;
13
13
  estimateTransactionFee: () => Promise<AssetValue>;
14
14
  getAddress: () => Promise<string>;
15
15
  getBalance: (checkAddress?: string) => Promise<AssetValue[]>;
16
+ hasTrustline: ({ address, assetValue }: {
17
+ address: string;
18
+ assetValue: AssetValue;
19
+ }) => Promise<boolean>;
16
20
  signAndBroadcastTransaction: (transaction: {
17
21
  toXDR: () => string;
18
22
  }) => Promise<string>;
19
23
  signTransaction: (transaction: {
20
24
  toXDR: () => string;
21
- }) => Promise<import("@stellar/stellar-sdk").Transaction<import("@stellar/stellar-sdk").Memo<import("@stellar/stellar-sdk").MemoType>, import("@stellar/stellar-sdk").Operation[]> | import("@stellar/stellar-sdk").FeeBumpTransaction>;
25
+ }) => Promise<import("@stellar/stellar-sdk").Transaction | import("@stellar/stellar-sdk").FeeBumpTransaction>;
22
26
  transfer: ({ recipient, assetValue, memo, sweep }: StellarTransferParams) => Promise<string>;
23
27
  validateAddress: typeof validateStellarAddress;
24
28
  };
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "dependencies": { "@swapkit/helpers": "4.18.0", "@swapkit/utxo-signer": "2.2.3" },
2
+ "dependencies": { "@swapkit/helpers": "4.19.1", "@swapkit/utxo-signer": "2.2.3" },
3
3
  "description": "SwapKit - Toolboxes",
4
4
  "devDependencies": {
5
5
  "@aptos-labs/ts-sdk": "7.0.1",
@@ -34,7 +34,7 @@
34
34
  "@solana/spl-memo": "0.2.5",
35
35
  "@solana/spl-token": "0.4.14",
36
36
  "@solana/web3.js": "1.98.4",
37
- "@stellar/stellar-sdk": "15.1.0",
37
+ "@stellar/stellar-sdk": "16.1.0",
38
38
  "@stricahq/bip32ed25519": "1.1.2",
39
39
  "@stricahq/cbors": "1.0.4",
40
40
  "@stricahq/typhonjs": "3.1.0",
@@ -177,7 +177,7 @@
177
177
  "@solana/spl-memo": "0.2.5",
178
178
  "@solana/spl-token": "0.4.14",
179
179
  "@solana/web3.js": "1.98.4",
180
- "@stellar/stellar-sdk": "15.1.0",
180
+ "@stellar/stellar-sdk": "16.1.0",
181
181
  "@stricahq/bip32ed25519": "1.1.2",
182
182
  "@stricahq/cbors": "1.0.4",
183
183
  "@stricahq/typhonjs": "3.1.0",
@@ -205,5 +205,5 @@
205
205
  "type-check:go": "tsgo"
206
206
  },
207
207
  "type": "module",
208
- "version": "4.25.0"
208
+ "version": "4.26.1"
209
209
  }