-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtypes.ts
More file actions
119 lines (106 loc) · 2.27 KB
/
Copy pathtypes.ts
File metadata and controls
119 lines (106 loc) · 2.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
// export type Bid = {
// availableQty: number,
// openOrders: {
// userId: number, qty: number, filledQty: number,
// orderId: number, createdAt: Date ,
// status : "open" | "partially-filled" | "filled" | "cancelled" | "rejected" | "pending"
// }[]
// }
// export type Orderbook = {
// bids: Record<string, Bid>,
// asks: Record<string, Bid>,
// lastTradedPrice: number,
// indexPrice: number
// }
export type User = {
authUser : Authuser,
tradingAccount : TradingAccount
}
export type Authuser = {
id?: string,
userId?: string,
username: string,
password: string,
}
export type TradingAccount = {
collateral : collateral,
positions : position[],
orders : order[]
}
export type Orderbooks = Record<string, Orderbook>
export type OpenOrder = {
userId: string,
qty: number,
filledQty: number,
orderId: string,
createdAt: Date,
status:
| "open"
| "partially-filled"
| "filled"
| "cancelled"
| "rejected"
| "pending"
}
export type closedPosition = {
market: string
type: "LONG" | "SHORT"
qty: number
margin: number
averagePrice: number
closePrice: number
pnl: number
closedAt: Date
closeReason: "manual" | "liquidated"
}
export type Bid = {
availableQty: number,
openOrders: OpenOrder[]
}
export type Orderbook = {
bids: Record<string, Bid>,
asks: Record<string, Bid>,
lastTradedPrice: number,
indexPrice: number
}
export type collateral = {
available: number,
locked: number,
}
export type position = {
market: string,
type: "LONG" | "SHORT",
qty: number,
margin: number,
liquidationPrice: number,
averagePrice: number
}
export type order = {
orderId?: string,
userId : string,
market: string,
type: "LONG" | "SHORT",
qty: number,
filledQty?: number,
margin: number,
orderType: "market" | "limit",
price: number,
status:
| "open"
| "partially-filled"
| "filled"
| "cancelled"
| "rejected"
| "pending"
}
export type Fill = {
fillId: string,
market: string,
qty: number,
price: number,
makerUserId: string,
takerUserId: string,
longUserId: string,
shortUserId: string,
createdAt: Date,
}