@multiversx/sdk-dapp-swap
Version:
A library to hold the main logic for swapping between tokens on the MultiversX blockchain
3 lines (2 loc) • 3.94 kB
JavaScript
import{a as q}from"./chunk-656XSZ7E.js";import{a as $}from"./chunk-4JI5FETV.js";import{a as ee}from"./chunk-WTUHK4OC.js";import{a as Y,b as Z}from"./chunk-DMQHSXUK.js";import{a as te}from"./chunk-4QLYE4WV.js";import{a as O}from"./chunk-QVRESOVQ.js";import{a as K}from"./chunk-CNQSRSUD.js";import{a as X,b as J,f as v}from"./chunk-2SSURZ7Z.js";import{b as y}from"./chunk-4XMIBGR3.js";import{a as G,c as H,f as c}from"./chunk-5W737WN4.js";c();import{useCallback as ue,useEffect as oe}from"react";import{useQuery as me}from"@apollo/client";c();c();import{useEffect as ie,useMemo as M,useRef as se,useState as N}from"react";import pe from"bignumber.js";var ke=({wrappedEgld:o,isPollingEnabled:t=!1,pollingIntervalMiliseconds:l=2e3})=>{var z,_;let{client:n,isAuthenticated:w}=y();if(!n)throw new Error("Swap GraphQL client not initialized");let[e,T]=N(),[f,s]=N(),[x,g]=N(),u=se(),m=M(()=>K({firstTokenId:e==null?void 0:e.tokenInID,secondTokenId:e==null?void 0:e.tokenOutID,wrappedEgld:o}),[e,o]),P=M(()=>m==="wrap"?$:m==="unwrap"?q:w?Y:Z,[w,m]),V=M(()=>{if(!e)return!0;let{amountIn:i,amountOut:p}=e;return!Boolean(i!=null?i:p)},[e]),{data:r,error:a,refetch:k,isRefetching:D,isLoading:S,isError:U}=L({query:P,queryOptions:{skip:V,client:n,variables:e},isPollingEnabled:t,pollingIntervalMiliseconds:l}),d=()=>{var i,p,b;if(!e){s(void 0),g(O({serviceError:a==null?void 0:a.message}));return}switch(m){case"wrap":case"unwrap":let h=r==null?void 0:r.wrapEgld,I=r==null?void 0:r.unwrapEgld,Q=h!=null?h:I,A=e.amountIn?0:1,R=(i=e.amountIn)!=null?i:e.amountOut,ae={amountIn:R!=null?R:"0",tokenInID:e.tokenInID,tokenInPriceUSD:(p=o==null?void 0:o.price)!=null?p:"0",tokenInExchangeRateDenom:"1",maxPriceDeviationPercent:0,tokensPriceDeviationPercent:0,amountOut:R!=null?R:"0",tokenOutID:e.tokenOutID,tokenOutPriceUSD:(b=o==null?void 0:o.price)!=null?b:"0",tokenOutExchangeRateDenom:"1",fees:[],swapType:A,tokenRoute:[],pricesImpact:[],intermediaryAmounts:[],pairs:[],transactions:Q?[Q]:[],smartSwap:null};g(void 0),s(ae);break;default:let E=r==null?void 0:r.swap,j=O({serviceError:a==null?void 0:a.message,lossPercentage:new pe(E==null?void 0:E.maxPriceDeviationPercent).times(100).toString(10)});g(j),s(j?void 0:E)}},B=({amountIn:i,amountOut:p,tokenInID:b,tokenOutID:h,tolerancePercentage:I=1})=>{if(!i&&!p){T(void 0);return}let Q=I<0||I>100?1:I,A={wrappingAmount:i!=null?i:p,amountIn:i,amountOut:p,tokenInID:b,tokenOutID:h,tolerance:Q/100};T(A),u.current=A};ie(d,[r,a,e]);let ne=Boolean((S||D)&&((z=u.current)==null?void 0:z.amountIn)),re=Boolean((S||D)&&((_=u.current)==null?void 0:_.amountOut));return{refetch:k,getSwapRoute:B,swapRoute:f,swapActionType:m,swapRouteError:x,isAmountInLoading:re,isAmountOutLoading:ne,isSwapRouteError:U,isSwapRouteLoading:S,transactions:f==null?void 0:f.transactions,previousFetchVariables:u}};c();import{useMemo as ce}from"react";var Le=({isPollingEnabled:o,pollingIntervalMiliseconds:t=3e4})=>{let{client:l}=y(),{data:n}=L({isPollingEnabled:o,pollingIntervalMiliseconds:t,queryOptions:{variables:{},client:l},query:ee});return ce(()=>n==null?void 0:n.factory.maintenance,[n==null?void 0:n.factory.maintenance])};var L=({query:o,queryOptions:t,refetchTrigger:l,isPollingEnabled:n=!1,pollingIntervalMiliseconds:w=2e3,isRefetchEnabled:e=!1})=>{let T=te(),{client:f}=y(),d=me(o,G({client:f,notifyOnNetworkStatusChange:!0,fetchPolicy:"no-cache",nextFetchPolicy:"no-cache"},t)),{error:s,loading:x,previousData:g,data:u=g,refetch:m,stopPolling:P,startPolling:V}=d,r=H(d,["error","loading","previousData","data","refetch","stopPolling","startPolling"]),a=ue(()=>{P(),T&&n&&!s&&!(t!=null&&t.skip)&&V(w)},[s,T,n,t==null?void 0:t.skip,t==null?void 0:t.variables]),k=()=>{m(),a()};oe(()=>(a(),()=>{P()}),[a]),oe(()=>{!e||l===0||(k(),a())},[l,e]);let D=u==null&&x,S=Boolean(s);return G({data:u,error:s,isError:S,isLoading:D,isRefetching:x,refetch:k},r)};export{L as a,ke as b,Le as c};
//# sourceMappingURL=chunk-OPX7BPU5.js.map