@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.59 kB
JavaScript
import{a as N}from"./chunk-PVDL4RY5.js";import{a as V}from"./chunk-FY6ZPIUE.js";import{a as B}from"./chunk-UVYLJEJI.js";import{a as M}from"./chunk-UNJM26ZS.js";import{a as g}from"./chunk-56KNXZU2.js";import{a as S}from"./chunk-P5DITO6J.js";import{a as F,b as G,c as _}from"./chunk-2SSURZ7Z.js";import{c as y,d as v}from"./chunk-QXTSQDB3.js";import{a as k,b as f,f as x}from"./chunk-5W737WN4.js";x();import{useRef as X,useState as H}from"react";var fn=({getSwapRoute:A,tolerancePercentage:h})=>{let[a,T]=H({firstAmount:"",secondAmount:""}),[l,C]=H(),I=X(),D=X(),L=N(a.secondToken),j=V({swapRoute:l,firstToken:a.firstToken,firstAmount:a.firstAmount,secondToken:a.secondToken,secondAmount:a.secondAmount}),q=n=>{var b,P;if(!n){C(void 0);return}let{swapType:o,tokenInID:s,tokenOutID:t,amountIn:m,pairs:u,smartSwap:e}=n,c=(b=e==null?void 0:e.amountOut)!=null?b:n.amountOut,d=(P=e==null?void 0:e.tokensPriceDeviationPercent)!=null?P:n.tokensPriceDeviationPercent;C(f(k({},n),{tokensPriceDeviationPercent:d}));let i=o===0,r=i?c:m,W=B({identifier:i?t:s,pairs:u}),U=S({amount:r,decimals:W}),Y=i&&Boolean(a.firstAmount),Z=!i&&Boolean(a.secondAmount);if(I.current){let p=B({identifier:n.tokenInID,pairs:u}),$=B({identifier:n.tokenOutID,pairs:u}),R=S({amount:n.amountIn,decimals:p}),nn=S({amount:n.amountOut,decimals:$}),on=R,tn=nn;T(en=>f(k({},en),{firstAmount:on,secondAmount:tn})),I.current=!1}else T(p=>f(k({},p),{firstAmount:Z?U:p.firstAmount,secondAmount:Y?U:p.secondAmount}))},E=n=>{I.current||T(o=>{var u,e,c;let s=(u=o.firstToken)==null?void 0:u.value,t=(e=o.secondToken)==null?void 0:e.value;if(s!=null&&t!=null){D.current="first";let d=(c=o.firstToken)==null?void 0:c.token.decimals,i=v(n)?y(n,d):"";A({amountIn:i,tokenInID:s,tokenOutID:t,tolerancePercentage:h})}return f(k({},o),{firstAmount:n,secondAmount:Boolean(n)?o.secondAmount:""})})},w=n=>{I.current||T(o=>{var u,e,c;let s=(u=o.firstToken)==null?void 0:u.value,t=(e=o.secondToken)==null?void 0:e.value;if(s!=null&&t!=null){D.current="second";let d=(c=o.secondToken)==null?void 0:c.token.decimals,i=v(n)?y(n,d):"";A({amountOut:i,tokenInID:s,tokenOutID:t,tolerancePercentage:h})}return f(k({},o),{secondAmount:n,firstAmount:Boolean(n)?o.firstAmount:""})})},z=n=>{I.current||T(o=>{var u,e,c;let s=n==null?void 0:n.value,t=(u=o.secondToken)==null?void 0:u.value;if(s!=null&&t!=null){let d=(l==null?void 0:l.swapType)===0,{amountIn:i,amountOut:r}=g({activeRoute:l,newToken:n==null?void 0:n.token,needsParsing:d,firstToken:(e=o.firstToken)==null?void 0:e.token,secondToken:(c=o.secondToken)==null?void 0:c.token});A({amountIn:i,amountOut:r,tokenInID:s,tokenOutID:t,tolerancePercentage:h})}return f(k({},o),{firstToken:n})})},J=n=>{I.current||(T(o=>{var u,e,c;let s=n==null?void 0:n.value,t=(u=o.firstToken)==null?void 0:u.value;if(t!=null&&s!=null){let d=(l==null?void 0:l.swapType)===1,{amountIn:i,amountOut:r}=g({activeRoute:l,newToken:n==null?void 0:n.token,needsParsing:d,firstToken:(e=o.firstToken)==null?void 0:e.token,secondToken:(c=o.secondToken)==null?void 0:c.token});A({amountIn:i,amountOut:r,tokenInID:t,tokenOutID:s,tolerancePercentage:h})}return f(k({},o),{secondToken:n})}),!L&&a.firstAmount&&E(a.firstAmount))},K=()=>{T(n=>{var c,d,i,r,O;let o=(c=n.firstToken)==null?void 0:c.value,s=(d=n.secondToken)==null?void 0:d.value,t=(r=(i=n.firstToken)==null?void 0:i.token.balance)!=null?r:"0",m=o===_?M(t):t;if(!(o!=null&&s!=null))return n;let e=S({amount:m,decimals:(O=n.firstToken)==null?void 0:O.token.decimals});return A({amountIn:m,tokenInID:o,tokenOutID:s,tolerancePercentage:h}),f(k({},n),{firstAmount:e})})},Q=()=>{T(n=>{let o=n.secondAmount,s=n.firstAmount,t=n.secondToken,m=n.firstToken,u=t==null?void 0:t.value,e=m==null?void 0:m.value;if(!(u!=null&&e!=null))return n;I.current=D.current!==void 0&&o!==""&&s!=="";let d=D.current==="first"&&s!=="",i=D.current==="second"&&o!=="";if(d){D.current="second";let r=m==null?void 0:m.token.decimals,O=y(s,r);A({amountOut:O,tokenInID:u,tokenOutID:e,tolerancePercentage:h})}if(i){D.current="first";let r=t==null?void 0:t.token.decimals,O=y(o,r);A({amountIn:O,tokenInID:u,tokenOutID:e,tolerancePercentage:h})}return{firstAmount:o,secondAmount:s,firstToken:t,secondToken:m}})};return{firstToken:a.firstToken,firstAmount:a.firstAmount,secondToken:a.secondToken,secondAmount:a.secondAmount,activeRoute:l,inputAmountsUsdValue:j,handleOnChangeFirstAmount:E,handleOnChangeSecondAmount:w,handleOnChangeFirstSelect:z,handleOnChangeSecondSelect:J,handleOnChangeSwapRoute:q,handleOnFirstMaxBtnChange:K,handleSwitchTokens:Q}};export{fn as a};
//# sourceMappingURL=chunk-S3VG623E.js.map