UNPKG

@multiversx/sdk-dapp-swap

Version:

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

3 lines (2 loc) 4.38 kB
import{a as G}from"./chunk-5QXLQT2J.js";import{a as _}from"./chunk-FLQPRAKY.js";import{a as g}from"./chunk-EZBHHWQT.js";import{a as B}from"./chunk-WS2LARLU.js";import{a as y}from"./chunk-7LJPFJPD.js";import{a as x}from"./chunk-3Q5R7RXH.js";import{a as v,b,c as w}from"./chunk-SJLSRRAM.js";import{c as S,d as F}from"./chunk-QLHUKGNV.js";import{a as T,b as A,f as U}from"./chunk-DKQLHRWP.js";U();import{useRef as M,useState as N}from"react";var dn=({getSwapRoute:h,tolerancePercentage:I})=>{let[a,k]=N({firstAmount:"",secondAmount:""}),[r,C]=N(),p=M(),D=M(),V=_(a.secondToken),X=G({swapRoute:r,firstToken:a.firstToken,firstAmount:a.firstAmount,secondToken:a.secondToken,secondAmount:a.secondAmount}),H=n=>{if(!n){C(void 0);return}let{swapType:o,tokenInID:s,tokenOutID:t,amountIn:m,amountOut:c,pairs:e}=n;C(n);let u=o===0,i=u?c:m,l=B({identifier:u?t:s,pairs:e}),f=y({amount:i,decimals:l}),K=u&&Boolean(a.firstAmount),P=!u&&Boolean(a.secondAmount);if(p.current){let O=B({identifier:n.tokenInID,pairs:e}),Q=B({identifier:n.tokenOutID,pairs:e}),W=y({amount:n.amountIn,decimals:O}),Y=y({amount:n.amountOut,decimals:Q}),Z=W,$=Y;k(R=>A(T({},R),{firstAmount:Z,secondAmount:$})),p.current=!1}else k(O=>A(T({},O),{firstAmount:P?f:O.firstAmount,secondAmount:K?f:O.secondAmount}))},E=n=>{p.current||k(o=>{var c,e,u;let s=(c=o.firstToken)==null?void 0:c.value,t=(e=o.secondToken)==null?void 0:e.value;if(s!=null&&t!=null){D.current="first";let i=(u=o.firstToken)==null?void 0:u.token.decimals,d=F(n)?S(n,i):"";h({amountIn:d,tokenInID:s,tokenOutID:t,tolerancePercentage:I})}return A(T({},o),{firstAmount:n,secondAmount:Boolean(n)?o.secondAmount:""})})},L=n=>{p.current||k(o=>{var c,e,u;let s=(c=o.firstToken)==null?void 0:c.value,t=(e=o.secondToken)==null?void 0:e.value;if(s!=null&&t!=null){D.current="second";let i=(u=o.secondToken)==null?void 0:u.token.decimals,d=F(n)?S(n,i):"";h({amountOut:d,tokenInID:s,tokenOutID:t,tolerancePercentage:I})}return A(T({},o),{secondAmount:n,firstAmount:Boolean(n)?o.firstAmount:""})})},j=n=>{p.current||k(o=>{var c,e,u;let s=n==null?void 0:n.value,t=(c=o.secondToken)==null?void 0:c.value;if(s!=null&&t!=null){let i=(r==null?void 0:r.swapType)===0,{amountIn:d,amountOut:l}=g({activeRoute:r,newToken:n==null?void 0:n.token,needsParsing:i,firstToken:(e=o.firstToken)==null?void 0:e.token,secondToken:(u=o.secondToken)==null?void 0:u.token});h({amountIn:d,amountOut:l,tokenInID:s,tokenOutID:t,tolerancePercentage:I})}return A(T({},o),{firstToken:n})})},q=n=>{p.current||(k(o=>{var c,e,u;let s=n==null?void 0:n.value,t=(c=o.firstToken)==null?void 0:c.value;if(t!=null&&s!=null){let i=(r==null?void 0:r.swapType)===1,{amountIn:d,amountOut:l}=g({activeRoute:r,newToken:n==null?void 0:n.token,needsParsing:i,firstToken:(e=o.firstToken)==null?void 0:e.token,secondToken:(u=o.secondToken)==null?void 0:u.token});h({amountIn:d,amountOut:l,tokenInID:t,tokenOutID:s,tolerancePercentage:I})}return A(T({},o),{secondToken:n})}),!V&&a.firstAmount&&E(a.firstAmount))},z=()=>{k(n=>{var u,i,d,l,f;let o=(u=n.firstToken)==null?void 0:u.value,s=(i=n.secondToken)==null?void 0:i.value,t=(l=(d=n.firstToken)==null?void 0:d.token.balance)!=null?l:"0",m=o===w?x(t):t;if(!(o!=null&&s!=null))return n;let e=y({amount:m,decimals:(f=n.firstToken)==null?void 0:f.token.decimals});return h({amountIn:m,tokenInID:o,tokenOutID:s,tolerancePercentage:I}),A(T({},n),{firstAmount:e})})},J=()=>{k(n=>{let o=n.secondAmount,s=n.firstAmount,t=n.secondToken,m=n.firstToken,c=t==null?void 0:t.value,e=m==null?void 0:m.value;if(!(c!=null&&e!=null))return n;p.current=D.current!==void 0&&o!==""&&s!=="";let i=D.current==="first"&&s!=="",d=D.current==="second"&&o!=="";if(i){D.current="second";let l=m==null?void 0:m.token.decimals,f=S(s,l);h({amountOut:f,tokenInID:c,tokenOutID:e,tolerancePercentage:I})}if(d){D.current="first";let l=t==null?void 0:t.token.decimals,f=S(o,l);h({amountIn:f,tokenInID:c,tokenOutID:e,tolerancePercentage:I})}return{firstAmount:o,secondAmount:s,firstToken:t,secondToken:m}})};return{firstToken:a.firstToken,firstAmount:a.firstAmount,secondToken:a.secondToken,secondAmount:a.secondAmount,activeRoute:r,inputAmountsUsdValue:X,handleOnChangeFirstAmount:E,handleOnChangeSecondAmount:L,handleOnChangeFirstSelect:j,handleOnChangeSecondSelect:q,handleOnChangeSwapRoute:H,handleOnFirstMaxBtnChange:z,handleSwitchTokens:J}};export{dn as a}; //# sourceMappingURL=chunk-NQMS3YXB.js.map