@bcswaper/apis
Version:
bcswaper apis
156 lines (155 loc) • 4.03 kB
TypeScript
import { IsoString } from "../../swapContext";
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 assetPositions;
private orders;
private fills;
private transfers;
private position;
constructor(symbol?: string, asset?: string);
/**
* Initializes indexer client for fetching account data.
*/
private postConstruct;
initialize(obj: any): Promise<void>;
update(obj: any): Promise<void>;
private calculatePosition;
getPosition(): number;
hasOpenPosition(): boolean;
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 PositionSide {
LONG = "LONG",
SHORT = "SHORT"
}
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"
}