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) 974 B
import{BigNumberMax as n,ONE as r}from"../../utils/numerics/index.js";import{decodeFloat as t}from"../../utils/encoders/index.js";const e=r,o=2n**128n-1n,c=2n**256n-1n;function u(n,r){if(n>=0n&&n<=r)return n;throw null}const s=n=>u(n,o),i=(n,r)=>u(n+r,c),f=(n,r)=>u(n*r,c),m=(n,r,t)=>u(n*r/t,c),l=(n,r,t)=>u((n*r+t-1n)/t,c),y=(r,t,o,s,y)=>{if(0n===s)return l(r,f(e,e),f(y,y));const a=f(o,e),d=i(f(t,s),f(o,y)),h=(p=d,x=f(r,s),u(p-x,c));var p,x;const j=l(a,a,c),z=l(d,h,c),A=n(j,z),B=l(a,a,A),v=m(d,h,A);return l(r,B,v)},a=(r,o)=>{const u=r,y=o.y,a=o.z,d=t(o.A),h=t(o.B);try{return s(((r,t,o,u,s)=>{if(0n===u)return m(r,f(s,s),f(e,e));const y=f(o,e),a=i(f(t,u),f(o,s)),d=f(a,r),h=l(y,y,c),p=l(d,u,c),x=n(h,p),j=l(y,y,x),z=l(d,u,x);return j+z<=c?m(a,d/x,j+z):a/i(u,l(y,y,d))})(u,y,a,d,h))}catch{return 0n}},d=(n,r)=>{const e=n,c=r.y,u=r.z,i=t(r.A),f=t(r.B);try{return s(y(e,c,u,i,f))}catch{return o}};export{d as getEncodedTradeSourceAmount,a as getEncodedTradeTargetAmount};