UNPKG

@multiversx/sdk-dapp-swap

Version:

A library to hold the main logic for swapping between tokens on the MultiversX blockchain

10 lines (9 loc) 7.58 kB
import{a as we}from"./chunk-X7BCFK3Q.js";import{a as fe,b as le}from"./chunk-26PTVGNW.js";import{a as Te,b as me,c as ye,d as de}from"./chunk-3IT3NWQO.js";import{a as ge}from"./chunk-6BHXHMTG.js";import{a as Ee}from"./chunk-CRMU4NHG.js";import{a as Se}from"./chunk-5GOKZ5VF.js";import{a as ke}from"./chunk-SSSNGBCQ.js";import{a as Y}from"./chunk-RR47LRUI.js";import{b as L}from"./chunk-H2CUEYMD.js";import{a as ee}from"./chunk-QALQHYAN.js";import{a as te}from"./chunk-5EYDTQF7.js";import{a as J}from"./chunk-2PVM5PPJ.js";import{a as pe}from"./chunk-6JP5DR3R.js";import{a as ie,b as ce,f as ue}from"./chunk-SJLSRRAM.js";import{a as O,b as q,c as ae,f as d}from"./chunk-DKQLHRWP.js";d();import{gql as Ke}from"@apollo/client";d();d();import{useMemo as Ae,useState as re}from"react";var Le=0,De=500,Oe=!0,xe=!1,Ue=[],tt=t=>{var I;let{client:l,isAuthenticated:s}=L();if(!l)throw new Error("Swap GraphQL client not initialized");let T=(I=t==null?void 0:t.pricePolling)!=null?I:xe,[r,m]=re([]),[g,E]=re(),[x,R]=re(),{tokenPrices:c}=Z({isPollingEnabled:T}),w=n=>{if(!n)return;let{tokens:f,wrappingInfo:y,userTokens:k,factory:h}=n;h&&R(h);let S=y&&y.length?y[0].wrappedToken:void 0;if(E(S),!f){m([]);return}let v=f.map(o=>{var b,P;let i=k==null?void 0:k.find(({identifier:A})=>A===o.identifier);return q(O({},o),{balance:(b=i==null?void 0:i.balance)!=null?b:"0",valueUSD:(P=i==null?void 0:i.valueUSD)!=null?P:"0"})}),M=J({tokens:v,wrappedEgld:S});m(M)},{isError:U,isLoading:F,execute:a}=Y({query:s?ye:Te,queryOptions:{client:l,onCompleted:w}}),p=n=>{var y,k,h,S;let f={limit:(y=n==null?void 0:n.limit)!=null?y:De,offset:(k=n==null?void 0:n.offset)!=null?k:Le,identifiers:(h=n==null?void 0:n.identifiers)!=null?h:Ue,enabledSwaps:(S=n==null?void 0:n.enabledSwaps)!=null?S:Oe};a({variables:f})},C=Ae(()=>r.map(n=>{var y;let f=(y=c==null?void 0:c.find(({identifier:k})=>k===n.identifier))==null?void 0:y.price;return q(O({},n),{price:f!=null?f:n.price})}),[r,c]);return{swapConfig:x,wrappedEgld:g,isTokensError:U,isTokensLoading:F,tokens:C,getTokens:p,refetch:a}};d();import{useEffect as _e,useMemo as ne,useRef as Ce,useState as oe}from"react";d();import{useCallback as Fe,useEffect as be}from"react";import{useQuery as Qe}from"@apollo/client";var j=({query:t,queryOptions:l,refetchTrigger:s,isPollingEnabled:T=!1,isRefetchEnabled:r=!1})=>{let m=ke(),{client:g}=L(),f=Qe(t,O({client:g,notifyOnNetworkStatusChange:!0,fetchPolicy:"no-cache",nextFetchPolicy:"no-cache"},l)),{error:E,loading:x,previousData:R,data:c=R,refetch:w,stopPolling:U,startPolling:F}=f,a=ae(f,["error","loading","previousData","data","refetch","stopPolling","startPolling"]),p=Fe(()=>{m&&T&&!E?F(6e3):U()},[m,T,E,l]);be(()=>(p(),()=>{U()}),[p]),be(()=>{!r||s===0||(w(),p())},[s,r]);let C=c==null&&x,I=Boolean(E);return O({data:I?void 0:c,error:E,isError:I,isLoading:C,isRefetching:x,refetch:w},a)};var ht=({wrappedEgld:t,isPollingEnabled:l=!1})=>{var v,M;let{client:s,isAuthenticated:T}=L();if(!s)throw new Error("Swap GraphQL client not initialized");let[r,m]=oe(),[g,E]=oe(),[x,R]=oe(),c=Ce(),w=ne(()=>pe({firstTokenId:r==null?void 0:r.tokenInID,secondTokenId:r==null?void 0:r.tokenOutID,wrappedEgld:t}),[r,t]),U=ne(()=>w==="wrap"?ge:w==="unwrap"?Ee:T?fe:le,[T,w]),F=ne(()=>{if(!r)return!0;let{amountIn:o,amountOut:i}=r;return!Boolean(o!=null?o:i)},[r]),{data:a,error:p,refetch:C,isRefetching:I,isLoading:n,isError:f}=j({query:U,queryOptions:{skip:F,client:s,variables:r},isPollingEnabled:l}),y=()=>{var o,i,b;if(!r){E(void 0),R(te(p==null?void 0:p.message));return}switch(w){case"wrap":case"unwrap":let P=a==null?void 0:a.wrapEgld,A=a==null?void 0:a.unwrapEgld,N=P!=null?P:A,e=r.amountIn?0:1,u=(o=r.amountIn)!=null?o:r.amountOut,Q={amountIn:u!=null?u:"0",tokenInID:r.tokenInID,tokenInPriceUSD:(i=t==null?void 0:t.price)!=null?i:"0",tokenInExchangeRateDenom:"1",maxPriceDeviationPercent:0,tokensPriceDeviationPercent:0,amountOut:u!=null?u:"0",tokenOutID:r.tokenOutID,tokenOutPriceUSD:(b=t==null?void 0:t.price)!=null?b:"0",tokenOutExchangeRateDenom:"1",fees:[],swapType:e,tokenRoute:[],pricesImpact:[],intermediaryAmounts:[],pairs:[],transactions:N?[N]:[]};R(void 0),E(Q);break;default:let D=a==null?void 0:a.swap,G=te(p==null?void 0:p.message);R(G),E(G?void 0:D)}},k=({amountIn:o,amountOut:i,tokenInID:b,tokenOutID:P,tolerancePercentage:A=1})=>{if(!o&&!i){m(void 0);return}let N=A<0||A>100?1:A,e={wrappingAmount:o!=null?o:i,amountIn:o,amountOut:i,tokenInID:b,tokenOutID:P,tolerance:N/100};m(e),c.current=e};_e(y,[a,p,r]);let h=Boolean((n||I)&&((v=c.current)==null?void 0:v.amountIn)),S=Boolean((n||I)&&((M=c.current)==null?void 0:M.amountOut));return{refetch:C,getSwapRoute:k,swapRoute:g,swapActionType:w,swapRouteError:x,isAmountInLoading:S,isAmountOutLoading:h,isSwapRouteError:f,isSwapRouteLoading:n,transactions:g==null?void 0:g.transactions,previousFetchVariables:c}};d();import{useEffect as he,useMemo as Ne,useRef as Ge,useState as _}from"react";var We=0,ve=500,Me=!0,Ve=!1,Be=[],qe={first:20,after:""},ze="",Ft=t=>{var A,N;let l=Ge(!0),{client:s,isAuthenticated:T}=L();if(!s)throw new Error("Swap GraphQL client not initialized");let r=(A=t==null?void 0:t.pricePolling)!=null?A:Ve,m=t==null?void 0:t.searchInput,[g,E]=_({first:20,after:""}),[x,R]=_(!0),[c,w]=_(),[U,F]=_(new Set),[a,p]=_([]),[C,I]=_(),[n,f]=_(),[y,k]=_(),h=!1,{tokenPrices:S}=Z({isPollingEnabled:r}),v=e=>{var se;if(!e)return;let{wrappingInfo:u,userTokens:Q,factory:D,filteredTokens:G}=e,{edges:W,pageInfo:V,pageData:B}=G;k(B==null?void 0:B.count),D&&f(D);let X=u&&u.length?u[0].wrappedToken:void 0;if(I(X),!W)return;w((se=W[W.length-1])==null?void 0:se.cursor);let Re=W.map($=>q(O({},$.node),{balance:"0",valueUSD:"0"})),Ie=ee(Re,Q),Pe=J({tokens:Ie,wrappedEgld:X});p($=>ee($,Pe)),!(V!=null&&V.hasNextPage)&&!h?R(!1):h=!1},{isError:M,isLoading:o,execute:i}=Y({query:T?de:me,queryOptions:{client:s,onCompleted:v}}),b=(e,u)=>{var D,G,W,V,B,X;let Q={limit:(D=e==null?void 0:e.limit)!=null?D:ve,offset:(G=e==null?void 0:e.offset)!=null?G:We,identifiers:(W=e==null?void 0:e.identifiers)!=null?W:Be,enabledSwaps:(V=e==null?void 0:e.enabledSwaps)!=null?V:Me,pagination:(B=e==null?void 0:e.pagination)!=null?B:qe,searchInput:(X=e==null?void 0:e.searchInput)!=null?X:ze};i({variables:Q}),u&&(h=!0)},P=Ne(()=>a.map(e=>{var Q;let u=(Q=S==null?void 0:S.find(({identifier:D})=>D===e.identifier))==null?void 0:Q.price;return q(O({},e),{price:u!=null?u:e.price})}),[a,S]);return he(()=>{if(l.current){l.current=!1;return}E({first:20,after:""}),F(new Set),R(!0),b({pagination:{first:20,after:""},searchInput:m})},[m]),he(()=>{g.after&&(F(e=>new Set(e).add(g.after)),b({pagination:g,searchInput:m}))},[g]),Se({tokens:a,hasMore:x,isLoading:o!=null?o:!1,observerId:(N=t==null?void 0:t.observerId)!=null?N:"",loadedCursors:U,currentCursor:c!=null?c:"",setPagination:E}),{swapConfig:n,wrappedEgld:C,isTokensError:M,isTokensLoading:o,tokens:P,totalTokensCount:y,getTokens:b,refetch:i}};d();import{useMemo as He}from"react";var vt=t=>{let{client:l}=L(),{data:s}=j({isPollingEnabled:t,queryOptions:{variables:{},client:l},query:we});return He(()=>s==null?void 0:s.factory.maintenance,[s==null?void 0:s.factory.maintenance])};var Z=({skip:t=!1,isPollingEnabled:l=!1})=>{let s=Ke` query swapPackageTokenPrices { tokens(enabledSwaps: true) { price identifier } } `,{data:T,isError:r,isLoading:m}=j({isPollingEnabled:l,query:s,queryOptions:{skip:t}});return{tokenPrices:T==null?void 0:T.tokens,isTokenPricesError:r,isTokenPricesLoading:m}};export{Z as a,tt as b,j as c,ht as d,Ft as e,vt as f}; //# sourceMappingURL=chunk-BUX6RU3I.js.map