@bcswaper/apis
Version:
bcswaper apis
155 lines (154 loc) • 4.14 kB
TypeScript
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"
}