@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.75 kB
JavaScript
import{buildTradeOverrides as t,isETHAddress as e}from"../utils/index.js";import{Logger as r}from"../../common/logger/index.js";const o=new r("Composer.ts");class a{_contracts;constructor(t){this._contracts=t}tradeByTargetAmount(e,r,a,n,c,s){o.debug("tradeByTargetAmount called",arguments);const u=t(e,a,!0,c,s);return o.debug("tradeByTargetAmount overrides",u),this._contracts.carbonController.tradeByTargetAmount.populateTransaction(e,r,a,BigInt(n),BigInt(c),u)}tradeBySourceAmount(e,r,a,n,c,s){o.debug("tradeBySourceAmount called",arguments);const u=t(e,a,!1,-1,s);return o.debug("tradeBySourceAmount overrides",u),this._contracts.carbonController.tradeBySourceAmount.populateTransaction(e,r,a,BigInt(n),BigInt(c),u)}createStrategy(t,r,a,n,c){o.debug("createStrategy called",arguments);const s={...c};return e(t)?s.value=a.y:e(r)&&(s.value=n.y),o.debug("createStrategy overrides",s),this._contracts.carbonController.createStrategy.populateTransaction(t,r,[a,n],s)}batchCreateStrategies(t,r){o.debug("batchCreateStrategies called",arguments);const a={...r};let n=0n;for(const r of t)e(r.token0)?n+=r.order0.y:e(r.token1)&&(n+=r.order1.y);return n>0n&&(a.value=n),o.debug("batchCreateStrategies overrides",a),this._contracts.carbonBatcher.batchCreate.populateTransaction(t.map((t=>({tokens:[t.token0,t.token1],orders:[t.order0,t.order1]}))),a)}deleteStrategy(t){return this._contracts.carbonController.deleteStrategy.populateTransaction(t)}updateStrategy(t,r,a,n,c,s){const u={...s};if(e(r)&&c[0].y>n[0].y){const t=c[0].y-n[0].y;u.value=t}else if(e(a)&&c[1].y>n[1].y){const t=c[1].y-n[1].y;u.value=t}return o.debug("updateStrategy overrides",u),this._contracts.carbonController.updateStrategy.populateTransaction(t,n,c,u)}}export{a as default};