UNPKG

@bancor/carbon-sdk

Version:

The SDK is a READ-ONLY tool, intended to facilitate working with Carbon contracts. It's a convenient wrapper around our matching algorithm, allowing programs and users get a ready to use transaction data that will allow them to manage strategies and fulfi

2 lines (1 loc) 1.15 kB
import{ONE as r,BigNumberMax as t}from"../../utils/numerics/index.js";import{decodeFloat as e}from"../../utils/encoders/index.js";import{BigNumber as n}from"@ethersproject/bignumber";const o=n.from(r),u=n.from(2).pow(128).sub(1),s=n.from(2).pow(256).sub(1);function i(r,t){if(r.gte(0)&&r.lte(t))return r;throw null}const c=r=>i(r,u),d=(r,t)=>i(r.add(t),s),m=(r,t)=>i(r.mul(t),s),f=(r,t,e)=>i(r.mul(t).div(e),s),l=(r,t,e)=>i(r.mul(t).add(e).sub(1).div(e),s),a=(r,e,n,u,c)=>{if(u.eq(0))return l(r,m(o,o),m(c,c));const a=m(n,o),p=d(m(e,u),m(n,c)),b=(v=p,h=m(r,u),i(v.sub(h),s));var v,h;const y=l(a,a,s),j=l(p,b,s),w=t(y,j),x=l(a,a,w),g=f(p,b,w);return l(r,x,g)},p=(r,u)=>{const i=r,a=u.y,p=u.z,b=e(u.A),v=e(u.B);try{return c(((r,e,n,u,i)=>{if(u.eq(0))return f(r,m(i,i),m(o,o));const c=m(n,o),a=d(m(e,u),m(n,i)),p=m(a,r),b=l(c,c,s),v=l(p,u,s),h=t(b,v),y=l(c,c,h),j=l(p,u,h);return y.add(j).lte(s)?f(a,p.div(h),y.add(j)):a.div(d(u,l(c,c,p)))})(i,a,p,b,v))}catch{return n.from(0)}},b=(r,t)=>{const n=r,o=t.y,s=t.z,i=e(t.A),d=e(t.B);try{return c(a(n,o,s,i,d))}catch{return u}};export{b as getEncodedTradeSourceAmount,p as getEncodedTradeTargetAmount};