@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) • 4.21 kB
JavaScript
import{multicall as t,isETHAddress as r}from"../utils/index.js";import{Logger as e}from"../../common/logger/index.js";const n=new e("Reader.ts");function a(t){return{id:t[0],token0:t[2][0],token1:t[2][1],order0:{y:t[3][0][0],z:t[3][0][1],A:t[3][0][2],B:t[3][0][3]},order1:{y:t[3][1][0],z:t[3][1][1],A:t[3][1][2],B:t[3][1][3]}}}class o{_contracts;constructor(t){this._contracts=t}_multicall(r,e){return t(r,this._contracts.multicall,e)}async strategy(t){return a(await this._contracts.carbonController.strategy(t))}async strategies(t){const r=await this._multicall(t.map((t=>({contractAddress:this._contracts.carbonController.address,interface:this._contracts.carbonController.interface,methodName:"strategy",methodParameters:[t]}))));return r&&0!==r.length?r.map((t=>a(t[0]))):[]}pairs(){return this._contracts.carbonController.pairs()}async strategiesByPair(t,r){return(await this._contracts.carbonController.strategiesByPair(t,r,0,0)).map((t=>a(t)))}async strategiesByPairs(t){const r=await this._multicall(t.map((t=>({contractAddress:this._contracts.carbonController.address,interface:this._contracts.carbonController.interface,methodName:"strategiesByPair",methodParameters:[t[0],t[1],0,0]}))));return r&&0!==r.length?(console.debug("results",r),r.map(((r,e)=>{const n=r[0];return{pair:t[e],strategies:n.map((t=>a(t)))}}))):[]}async tokensByOwner(t){return t?this._contracts.voucher.tokensByOwner(t,0,0):[]}tradingFeePPM(){return this._contracts.carbonController.tradingFeePPM()}onTradingFeePPMUpdated(t){return this._contracts.carbonController.on("TradingFeePPMUpdated",(function(r,e){n.debug("TradingFeePPMUpdated fired with",arguments),t(r,e)}))}pairTradingFeePPM(t,r){return this._contracts.carbonController.pairTradingFeePPM(t,r)}async pairsTradingFeePPM(t){const r=await this._multicall(t.map((t=>({contractAddress:this._contracts.carbonController.address,interface:this._contracts.carbonController.interface,methodName:"pairTradingFeePPM",methodParameters:[t[0],t[1]]}))));return r&&0!==r.length?r.map(((r,e)=>[t[e][0],t[e][1],r[0]])):[]}onPairTradingFeePPMUpdated(t){return this._contracts.carbonController.on("PairTradingFeePPMUpdated",(function(r,e,a,o){n.debug("PairTradingFeePPMUpdated fired with",arguments),t(r,e,a,o)}))}getDecimalsByAddress=async t=>r(t)?18:this._contracts.token(t).decimals();_getFilteredStrategies=async(t,r,e)=>{const n=this._contracts.carbonController.filters[t](null,null,null,null,null),a=await this._contracts.carbonController.queryFilter(n,r,e);if(0===a.length)return[];return a.map((t=>{const r=t.args;return{id:r.id,token0:r.token0,token1:r.token1,order0:{y:r.order0.y,z:r.order0.z,A:r.order0.A,B:r.order0.B},order1:{y:r.order1.y,z:r.order1.z,A:r.order1.A,B:r.order1.B}}}))};async getLatestStrategyCreatedStrategies(t,r){return this._getFilteredStrategies("StrategyCreated",t,r)}async getLatestStrategyUpdatedStrategies(t,r){return this._getFilteredStrategies("StrategyUpdated",t,r)}async getLatestStrategyDeletedStrategies(t,r){return this._getFilteredStrategies("StrategyDeleted",t,r)}getLatestTokensTradedTrades=async(t,r)=>{const e=this._contracts.carbonController.filters.TokensTraded(null,null,null,null,null,null,null),n=await this._contracts.carbonController.queryFilter(e,t,r);if(0===n.length)return[];return n.map((t=>{const r=t.args;return{sourceToken:r.sourceToken,targetToken:r.targetToken,sourceAmount:r.sourceAmount.toString(),targetAmount:r.targetAmount.toString(),trader:r.trader,tradingFeeAmount:r.tradingFeeAmount.toString(),byTargetAmount:r.byTargetAmount}}))};async getLatestTradingFeeUpdates(t,r){const e=this._contracts.carbonController.filters.TradingFeePPMUpdated(null,null),n=await this._contracts.carbonController.queryFilter(e,t,r);if(0===n.length)return[];return n.map((t=>t.args.newFeePPM))}async getLatestPairTradingFeeUpdates(t,r){const e=this._contracts.carbonController.filters.PairTradingFeePPMUpdated(null,null,null,null),n=await this._contracts.carbonController.queryFilter(e,t,r);if(0===n.length)return[];return n.map((t=>{const r=t.args;return[r.token0,r.token1,r.newFeePPM]}))}getBlockNumber=async()=>this._contracts.provider.getBlockNumber();getBlock=async t=>this._contracts.provider.getBlock(t)}export{o as default};