Skip to content

Commit

Permalink
fix: types around removing lev and liq
Browse files Browse the repository at this point in the history
  • Loading branch information
bradennapier committed May 23, 2024
1 parent 3ead986 commit dad1cc1
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 73 deletions.
24 changes: 6 additions & 18 deletions src/client/webSocket/transform.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
import { UnreachableCaseError } from '#utils';

import {
FillType,
OrderEventType,
MessageEventType,
} from '#types/enums/response';
import { FillType, MessageEventType } from '#types/enums/response';

import type * as idex from '#types/index';
import type { AnyObj } from '#types/utils';
Expand Down Expand Up @@ -150,26 +146,18 @@ const transformOrderFill = (
const transformOrdersMessage = (
short: idex.WebSocketResponseOrderShort,
): idex.IDEXOrderEventData => {
if (short.o === OrderEventType.liquidation) {
if (!('o' in short)) {
return removeUndefinedFromObj({
market: short.m,
wallet: short.w,
executionTime: short.t,
type: OrderEventType.liquidation,
side: short.s,
...(short.F && { fills: short.F.map(transformOrderFill) }),
} satisfies idex.IDEXOrderEventDataLiquidation);
}
if (short.o === OrderEventType.deleverage) {
return removeUndefinedFromObj({
market: short.m,
wallet: short.w,
executionTime: short.t,
type: OrderEventType.deleverage,
side: short.s,
...(short.F && { fills: short.F.map(transformOrderFill) }),
} satisfies idex.IDEXOrderEventDataDeleverage);
} satisfies
| idex.IDEXOrderEventDataLiquidation
| idex.IDEXOrderEventDataDeleverage);
}

return removeUndefinedFromObj({
market: short.m,
orderId: short.i,
Expand Down
12 changes: 0 additions & 12 deletions src/types/enums/response.ts
Original file line number Diff line number Diff line change
Expand Up @@ -255,18 +255,6 @@ export type OrderBookLevelType =
*/
export const OrderEventType = Object.freeze({
...OrderType,
/**
* - Used by WebSockets Orders subscription
*
* Position closures resulting from forced liquidation or ADL
*/
liquidation: 'liquidation',
/**
* - Used by WebSockets Orders subscription
*
* Position closure as the counterparty to an ADL action
*/
deleverage: 'deleverage',
} as const);

export type OrderEventType =
Expand Down
48 changes: 5 additions & 43 deletions src/types/webSocket/response/orders.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,16 +56,6 @@ export interface IDEXOrderEvent extends IDEXSubscriptionEventBase {
*/
export interface IDEXOrderEventDataBase
extends Pick<IDEXOrder, 'market' | 'wallet' | 'side'> {
/**
* Order type which is all of {@link IDEXOrder.type} but
* may include the following additional types:
*
* - {@link OrderEventType.deleverage deleverage}
* - {@link OrderEventType.liquidation liquidation}
*
* @see enum {@link OrderEventType}
*/
type: OrderEventType;
/**
* Timestamp of the most recent update
*/
Expand All @@ -84,25 +74,15 @@ export interface IDEXOrderEventDataBase
*
* @category IDEX - Get Orders
*/
export interface IDEXOrderEventDataDeleverage extends IDEXOrderEventDataBase {
/**
* @inheritDoc
*/
readonly type: typeof OrderEventType.deleverage;
}
export interface IDEXOrderEventDataDeleverage extends IDEXOrderEventDataBase {}

/**
* {@link OrderEventType.deleverage} and {@link OrderEventType.liquidation} updates do not
* include many of the standard order update properties
*
* @category IDEX - Get Orders
*/
export interface IDEXOrderEventDataLiquidation extends IDEXOrderEventDataBase {
/**
* @inheritDoc
*/
readonly type: typeof OrderEventType.liquidation;
}
export interface IDEXOrderEventDataLiquidation extends IDEXOrderEventDataBase {}

/**
* All types other than {@link OrderEventType.deleverage deleverage}
Expand All @@ -117,10 +97,7 @@ export interface IDEXOrderEventDataGeneral
/**
* @inheritDoc
*/
readonly type: Exclude<
OrderEventType,
typeof OrderEventType.deleverage | typeof OrderEventType.liquidation
>;
readonly type: OrderEventType;
/**
* Type of order update
*
Expand Down Expand Up @@ -185,11 +162,6 @@ export interface WebSocketResponseSubscriptionMessageShortOrders
}

export interface WebSocketResponseOrderShortBase {
/**
* @see enum {@link OrderEventType}
* @see inflated {@link IDEXOrderEventDataGeneral.type}
*/
o: IDEXOrderEventDataBase['type'];
/**
* @see related {@link IDEXOrder.market}
* @see inflated {@link IDEXOrderEventDataGeneral.market}
Expand Down Expand Up @@ -228,25 +200,15 @@ export interface WebSocketResponseOrderShortBase {
* `liquidation` types do not include many of the properties of other order types
*/
export interface WebSocketResponseOrderShortDeleverage
extends WebSocketResponseOrderShortBase {
/**
* @inheritDoc
*/
o: typeof OrderEventType.deleverage;
}
extends WebSocketResponseOrderShortBase {}

/**
* @internal
*
* `liquidation` types do not include many of the properties of other order types
*/
export interface WebSocketResponseOrderShortLiquidation
extends WebSocketResponseOrderShortBase {
/**
* @inheritDoc
*/
o: typeof OrderEventType.liquidation;
}
extends WebSocketResponseOrderShortBase {}

/**
* @internal
Expand Down

0 comments on commit dad1cc1

Please sign in to comment.