UNPKG

@bcswaper/apis

Version:

bcswaper apis

1 lines 1.92 kB
import{conerr}from"../utils";import{PositionSide}from"../context";import{convertOrderSide,convertOrderStatus,convertOrderType}from"./okxContext";export class AccountHandler{constructor(t="ETH-USDT",e){this.accountInfo={account:"",subaccount:0,equity:0,balance:0,positions:[],asset:0},this.symbol=t,this.clientCallBackFuncs=e}async resolveAccount(t,e){if(0===e?.length)return;const n=e[0];this.accountInfo.account=t,this.accountInfo.equity=n.totalEq,this.accountInfo.balance=n.adjEq,this.accountInfo.asset=n.isoEq,this.clientCallBackFuncs.accountFunc&&await this.clientCallBackFuncs.accountFunc(this.accountInfo)}async resolvePostitions(t,e){if(0===e?.length)return;const n=e[0];if(n.instId!==this.symbol)return void conerr("some thing wrong with the symbol: ",n.instId);const c=[],i={symbol:this.symbol,side:this.getPositionSide(n.posSide),size:Number(n.pos)};c.push(i),this.accountInfo.positions=c,this.clientCallBackFuncs.positionFunc&&await this.clientCallBackFuncs.positionFunc(c)}async resolveOrder(t,e){if(0===e?.length)return;const n=e[0],c={id:n.ordId,account:t,subaccountId:"",clientId:Number(n.clOrdId),side:convertOrderSide(n.side),size:Number(n.sz),ticker:n.instId,price:Number(n.px),type:convertOrderType(n.ordType),reduceOnly:Boolean(n.reduceOnly),status:convertOrderStatus(n.state),orderFlags:n.tag,totalFilled:Number(n.accFillSz),fee:Number(n.fee),filledPrice:Number(n.fillPx),clientMetadata:n.tag,updatedAt:n.uTime};this.clientCallBackFuncs.orderFunc&&await this.clientCallBackFuncs.orderFunc(c)}async resolveFill(t,e){if(0===e?.length)return;const n=e[0],c={id:n.tradeId,account:t,orderId:n.ordId,side:convertOrderSide(n.side),size:Number(n.fillSz),ticker:n.instId,price:Number(n.fillPx)};this.clientCallBackFuncs.fillFunc&&await this.clientCallBackFuncs.fillFunc(c)}getAccountInfo(){return this.accountInfo}getPositionSide(t){return"long"===t?PositionSide.LONG:"short"===t?PositionSide.SHORT:null}}