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.04 kB
import{Decimal as t,ONE as n}from"../../../utils/numerics/index.js";import{decodeOrder as e,decodeFloat as r}from"../../../utils/encoders/index.js";const i=t.ln("1.0001"),o=1;function c(t,n){const e=t.ln().div(i);return n?e.ceil().toNumber():e.floor().toNumber()}function u(t){return 0n===t.A?(1/0).toString():(t.z*n/r(t.A)).toString()}function s(n,e){const r=n.sqrt().mul(new t(2).pow(96));return e?r.ceil().toString():r.floor().toString()}function l(n,r){const i=e(n),o=new t(i.lowestRate),l=new t(i.highestRate),d=new t(i.marginalRate);if(!r)return{tickUpper:c(l,!0),tickLower:c(o,!1),liquidity:u(n),sqrtPriceX96:s(d,!1)};const k=new t(1).div(l),f=new t(1).div(o),p=new t(1).div(d);return{tickUpper:c(f,!0),tickLower:c(k,!1),liquidity:u(n),sqrtPriceX96:s(p,!0)}}function d(t){const n=BigInt(t.token0)<BigInt(t.token1);return{pool:{xAxisToken:n?t.token0:t.token1,yAxisToken:n?t.token1:t.token0,tickSpacing:o},sellOrder:l(t.order0,n),buyOrder:l(t.order1,!n)}}function k(t){return t.map(d)}export{k as batchCastToUniV3,d as castToUniV3};