Skip to content

Commit c757304

Browse files
committed
continue
1 parent 680d160 commit c757304

5 files changed

Lines changed: 109 additions & 11 deletions

File tree

src/entities/perp/coins.ts

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import { ApiProperty } from '@nestjs/swagger';
1+
import { ApiProperty, PickType } from '@nestjs/swagger';
2+
import { ActivePerpAssetCtxHydrated, ActiveSpotAssetCtx } from './response';
23

34
export class PerpConfig {
45
@ApiProperty()
@@ -19,11 +20,6 @@ export class PerpSingleCoin {
1920
symbol!: string;
2021
}
2122

22-
export class PerpBalance extends PerpSingleCoin {
23-
@ApiProperty()
24-
balance!: string;
25-
}
26-
2723
export class PerpCoin {
2824
@ApiProperty()
2925
symbol!: string;
@@ -34,9 +30,38 @@ export class PerpCoin {
3430
@ApiProperty()
3531
againstCoin!: PerpSingleCoin;
3632

37-
@ApiProperty()
38-
price!: number;
39-
4033
@ApiProperty()
4134
config!: PerpConfig[];
4235
}
36+
37+
export class PerpCoinExtended extends PerpCoin {
38+
ctx!: ActivePerpAssetCtxHydrated;
39+
}
40+
41+
export class PerpSpotCoinExtended extends PerpCoin {
42+
ctx!: ActiveSpotAssetCtx;
43+
}
44+
45+
export class PerpCoinExtendedSlim extends PickType(PerpCoin, [
46+
'symbol',
47+
] as const) {
48+
ctx!: Pick<
49+
ActivePerpAssetCtxHydrated,
50+
| 'maxLeverage'
51+
| 'midPx'
52+
| 'markPx'
53+
| 'prevDayPx'
54+
| 'funding'
55+
| 'dayNtlVlm'
56+
| 'openInterest'
57+
>;
58+
}
59+
60+
export class PerpSpotCoinExtendedSlim extends PickType(PerpCoin, [
61+
'symbol',
62+
] as const) {
63+
ctx!: Pick<
64+
ActiveSpotAssetCtx,
65+
'midPx' | 'markPx' | 'prevDayPx' | 'dayNtlVlm' | 'circulatingSupply'
66+
>;
67+
}

src/entities/perp/margin-table.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { ApiProperty } from '@nestjs/swagger';
2+
3+
export class MarginTier {
4+
@ApiProperty()
5+
lowerBound!: string;
6+
7+
@ApiProperty()
8+
maxLeverage!: number;
9+
}
10+
11+
export class MarginTable {
12+
@ApiProperty()
13+
id!: number;
14+
15+
@ApiProperty()
16+
description!: string;
17+
18+
@ApiProperty()
19+
marginTiers!: MarginTier[];
20+
}

src/entities/perp/request.ts

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,23 @@ export class ActiveAssetPerpEvent {
3939
symbol!: string;
4040
}
4141

42+
export class ActiveSpotAssetsPerpEvent {
43+
@ApiProperty()
44+
type!: PerpEnum.SPOT_ASSET_CTXS;
45+
}
46+
47+
export class ActiveAssetsPerpEvent {
48+
@ApiProperty()
49+
type!: PerpEnum.ASSET_CTXS;
50+
}
51+
4252
@ApiExtraModels(
4353
L2BookPerpEvent,
4454
TradesPerpEvent,
4555
ActiveSpotAssetPerpEvent,
4656
ActiveAssetPerpEvent,
57+
ActiveSpotAssetsPerpEvent,
58+
ActiveAssetsPerpEvent,
4759
)
4860
export class PerpEvent {
4961
@ApiProperty({
@@ -52,11 +64,15 @@ export class PerpEvent {
5264
{ $ref: getSchemaPath(TradesPerpEvent) },
5365
{ $ref: getSchemaPath(ActiveSpotAssetPerpEvent) },
5466
{ $ref: getSchemaPath(ActiveAssetPerpEvent) },
67+
{ $ref: getSchemaPath(ActiveSpotAssetsPerpEvent) },
68+
{ $ref: getSchemaPath(ActiveAssetsPerpEvent) },
5569
],
5670
})
5771
event!:
5872
| L2BookPerpEvent
5973
| TradesPerpEvent
6074
| ActiveSpotAssetPerpEvent
61-
| ActiveAssetPerpEvent;
75+
| ActiveAssetPerpEvent
76+
| ActiveSpotAssetsPerpEvent
77+
| ActiveAssetsPerpEvent;
6278
}

src/entities/perp/response.ts

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,20 @@
1-
import { ApiExtraModels, ApiProperty, getSchemaPath } from '@nestjs/swagger';
1+
import {
2+
ApiExtraModels,
3+
ApiProperty,
4+
getSchemaPath,
5+
OmitType,
6+
} from '@nestjs/swagger';
27
import { PerpTradesSide } from '../../enums/perp.enum';
38
import {
49
ActiveAssetPerpEvent,
10+
ActiveAssetsPerpEvent,
511
ActiveSpotAssetPerpEvent,
12+
ActiveSpotAssetsPerpEvent,
613
L2BookPerpEvent,
714
TradesPerpEvent,
815
} from './request';
16+
import { PerpCoinExtendedSlim, PerpSpotCoinExtendedSlim } from './coins';
17+
import { MarginTable } from './margin-table';
918

1019
export class L2BookPerpResponseSingle {
1120
@ApiProperty()
@@ -96,15 +105,41 @@ export class ActivePerpAssetCtx extends AssetCtxCommon {
96105
impactTxs!: string[];
97106
}
98107

108+
export class ActivePerpAssetCtxFull extends ActivePerpAssetCtx {
109+
@ApiProperty()
110+
maxLeverage!: number;
111+
112+
@ApiProperty()
113+
marginTableId!: number;
114+
}
115+
116+
export class ActivePerpAssetCtxHydrated extends OmitType(
117+
ActivePerpAssetCtxFull,
118+
['marginTableId'] as const,
119+
) {
120+
marginTable!: MarginTable;
121+
}
122+
99123
export class ActiveSpotAssetPerpResponse extends ActiveSpotAssetPerpEvent {
100124
@ApiProperty()
101125
ctx!: ActiveSpotAssetCtx;
102126
}
127+
103128
export class ActiveAssetPerpResponse extends ActiveAssetPerpEvent {
104129
@ApiProperty()
105130
ctx!: ActivePerpAssetCtx;
106131
}
107132

133+
export class ActiveSpotAssetsPerpResponse extends ActiveSpotAssetsPerpEvent {
134+
@ApiProperty()
135+
tokens!: PerpSpotCoinExtendedSlim[];
136+
}
137+
138+
export class ActiveAssetsPerpResponse extends ActiveAssetsPerpEvent {
139+
@ApiProperty()
140+
tokens!: PerpCoinExtendedSlim[];
141+
}
142+
108143
@ApiExtraModels(
109144
L2BookPerpResponse,
110145
TradesPerpResponse,

src/enums/perp.enum.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ export enum PerpEnum {
33
TRADES = 'trades',
44
SPOT_ASSET_CTX = 'activeSpotAssetCtx',
55
ASSET_CTX = 'activeAssetCtx',
6+
SPOT_ASSET_CTXS = 'activeSpotAssetCtxs',
7+
ASSET_CTXS = 'activeAssetCtxs',
68
}
79

810
export enum PerpTradesSide {

0 commit comments

Comments
 (0)