UNPKG

@bcswaper/apis

Version:

bcswaper apis

155 lines (154 loc) 4.14 kB
import { AccountInfo, CallBackFuncs, IsoString, PositionSide } from "../context"; import { OrderSide, OrderType } from "@dydxprotocol/v4-client-js"; /** * Handles and processes account-related data and updates, including orders, * positions, and collateral for a given symbol and asset. */ export declare class AccountHandler { private readonly symbol; private readonly asset; private perpetualPositions; private assetPosition; private orders; private fills; private transfers; private clientCallBackFuncs; private accountInfo; constructor(symbol: string | undefined, asset: string | undefined, clientCallBackFuncs: CallBackFuncs); /** * Initializes indexer client for fetching account data. */ private postConstruct; initialize(obj: any): Promise<void>; update(obj: any): Promise<void>; private calculatePositions; private calculateAsset; private calculateOrders; private calculateFills; getAccountInfo(): AccountInfo; private defaultPerpetualPositionsProperties; private defaultAssetPositionProperties; private defaultOrderProperties; private defaultFillProperties; private defaultTransferProperties; } export interface PerpetualPositionSubaccountMessageContents { address: string; subaccountNumber: number; positionId: string; market: string; side: PositionSide; status: PerpetualPositionStatus; size: string; maxSize: string; netFunding: string; entryPrice: string; exitPrice?: string; sumOpen: string; sumClose: string; realizedPnl?: string; unrealizedPnl?: string; } export declare enum PerpetualPositionStatus { OPEN = "OPEN", CLOSED = "CLOSED", LIQUIDATED = "LIQUIDATED" } export interface AssetPositionSubaccountMessageContents { address: string; subaccountNumber: number; positionId: string; assetId: string; symbol: string; side: PositionSide; size: string; } export interface OrderSubaccountMessageContents { id: string; subaccountId: string; clientId: string; clobPairId: string; side: OrderSide; size: string; ticker: string; price: string; type: OrderType; timeInForce: APITimeInForce; postOnly: boolean; reduceOnly: boolean; status: APIOrderStatus; orderFlags: string; totalFilled?: string; totalOptimisticFilled?: string; goodTilBlock?: string; goodTilBlockTime?: string; removalReason?: string; createdAtHeight?: string; clientMetadata: string; triggerPrice?: string; updatedAt?: IsoString; updatedAtHeight?: string; } export declare enum APITimeInForce { GTT = "GTT", FOK = "FOK", IOC = "IOC" } export declare enum APIOrderStatus { OPEN = "OPEN", FILLED = "FILLED", CANCELED = "CANCELED", BEST_EFFORT_CANCELED = "BEST_EFFORT_CANCELED", BEST_EFFORT_OPENED = "BEST_EFFORT_OPENED", UNTRIGGERED = "UNTRIGGERED" } export interface FillSubaccountMessageContents { id: string; subaccountId: string; side: OrderSide; liquidity: Liquidity; type: FillType; clobPairId: string; size: string; price: string; quoteAmount: string; eventId: string; transactionHash: string; createdAt: IsoString; createdAtHeight: string; orderId?: string; ticker: string; } export declare enum Liquidity { TAKER = "TAKER", MAKER = "MAKER" } export declare enum FillType { LIMIT = "LIMIT", LIQUIDATED = "LIQUIDATED", LIQUIDATION = "LIQUIDATION", DELEVERAGED = "DELEVERAGED", OFFSETTING = "OFFSETTING" } export interface TransferSubaccountMessageContents { sender: { address: string; subaccountNumber?: number; }; recipient: { address: string; subaccountNumber?: number; }; symbol: string; size: string; type: TransferType; createdAt: IsoString; createdAtHeight: string; transactionHash: string; } export declare enum TransferType { TRANSFER_IN = "TRANSFER_IN", TRANSFER_OUT = "TRANSFER_OUT", DEPOSIT = "DEPOSIT", WITHDRAWAL = "WITHDRAWAL" }