@quantform/core 0.3.254 → 0.3.259

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +1 -1
  2. package/dist/adapter/backtester/backtester-cursor.spec.js.map +1 -1
  3. package/dist/adapter/backtester/backtester-streamer.spec.js.map +1 -1
  4. package/dist/session/session.d.ts +6 -9
  5. package/dist/session/session.js +10 -24
  6. package/dist/session/session.js.map +1 -1
  7. package/dist/store/event/store-balance.event.d.ts +5 -6
  8. package/dist/store/event/store-balance.event.js +8 -8
  9. package/dist/store/event/store-balance.event.js.map +1 -1
  10. package/dist/store/event/store-candle.event.d.ts +2 -1
  11. package/dist/store/event/store-candle.event.js +25 -19
  12. package/dist/store/event/store-candle.event.js.map +1 -1
  13. package/dist/store/event/store-candle.event.spec.js +7 -8
  14. package/dist/store/event/store-candle.event.spec.js.map +1 -1
  15. package/dist/store/event/store-instrument.event.d.ts +6 -6
  16. package/dist/store/event/store-instrument.event.js +7 -7
  17. package/dist/store/event/store-instrument.event.js.map +1 -1
  18. package/dist/store/event/store-order.event.d.ts +9 -9
  19. package/dist/store/event/store-order.event.js +26 -47
  20. package/dist/store/event/store-order.event.js.map +1 -1
  21. package/dist/store/event/store-order.event.spec.js +7 -7
  22. package/dist/store/event/store-order.event.spec.js.map +1 -1
  23. package/dist/store/event/store-orderbook.event.d.ts +2 -3
  24. package/dist/store/event/store-orderbook.event.js +2 -2
  25. package/dist/store/event/store-orderbook.event.js.map +1 -1
  26. package/dist/store/event/store-position.event.d.ts +3 -3
  27. package/dist/store/event/store-position.event.js +6 -5
  28. package/dist/store/event/store-position.event.js.map +1 -1
  29. package/dist/store/event/store-trade.event.d.ts +2 -3
  30. package/dist/store/event/store-trade.event.js +2 -2
  31. package/dist/store/event/store-trade.event.js.map +1 -1
  32. package/dist/store/event/store-trade.event.spec.js +16 -17
  33. package/dist/store/event/store-trade.event.spec.js.map +1 -1
  34. package/dist/store/store.d.ts +23 -20
  35. package/dist/store/store.js +29 -28
  36. package/dist/store/store.js.map +1 -1
  37. package/dist/store/store.state.d.ts +6 -7
  38. package/dist/store/store.state.js +1 -6
  39. package/dist/store/store.state.js.map +1 -1
  40. package/dist/tsconfig.tsbuildinfo +1 -1
  41. package/package.json +1 -1
  42. package/src/adapter/backtester/backtester-cursor.spec.ts +2 -2
  43. package/src/adapter/backtester/backtester-streamer.spec.ts +0 -1
  44. package/src/session/session.ts +21 -56
  45. package/src/store/event/store-balance.event.ts +25 -9
  46. package/src/store/event/store-candle.event.spec.ts +8 -10
  47. package/src/store/event/store-candle.event.ts +44 -30
  48. package/src/store/event/store-instrument.event.ts +12 -7
  49. package/src/store/event/store-order.event.spec.ts +8 -8
  50. package/src/store/event/store-order.event.ts +56 -54
  51. package/src/store/event/store-orderbook.event.ts +7 -3
  52. package/src/store/event/store-position.event.ts +15 -7
  53. package/src/store/event/store-trade.event.spec.ts +18 -20
  54. package/src/store/event/store-trade.event.ts +7 -3
  55. package/src/store/store.state.ts +9 -14
  56. package/src/store/store.ts +33 -31
@@ -24,25 +24,10 @@ OrderLoadEvent = __decorate([
24
24
  __metadata("design:paramtypes", [domain_1.Order, Number])
25
25
  ], OrderLoadEvent);
26
26
  exports.OrderLoadEvent = OrderLoadEvent;
27
- function OrderLoadEventHandler(event, state) {
27
+ function OrderLoadEventHandler(event, state, changes) {
28
28
  event.order.timestamp = event.timestamp;
29
- switch (event.order.state) {
30
- case 'NEW':
31
- case 'PENDING':
32
- state.order.pending[event.order.id] = event.order;
33
- break;
34
- case 'FILLED':
35
- state.order.filled[event.order.id] = event.order;
36
- break;
37
- case 'CANCELING':
38
- case 'CANCELED':
39
- state.order.canceled[event.order.id] = event.order;
40
- break;
41
- case 'REJECTED':
42
- state.order.rejected[event.order.id] = event.order;
43
- break;
44
- }
45
- return event.order;
29
+ state.order[event.order.id] = event.order;
30
+ changes.commit(event.order);
46
31
  }
47
32
  exports.OrderLoadEventHandler = OrderLoadEventHandler;
48
33
  let OrderNewEvent = class OrderNewEvent {
@@ -57,14 +42,14 @@ OrderNewEvent = __decorate([
57
42
  __metadata("design:paramtypes", [domain_1.Order, Number])
58
43
  ], OrderNewEvent);
59
44
  exports.OrderNewEvent = OrderNewEvent;
60
- function OrderNewEventHandler(event, state) {
45
+ function OrderNewEventHandler(event, state, changes) {
61
46
  if (event.order.state != 'NEW') {
62
47
  throw new Error(`Order is not new`);
63
48
  }
64
49
  event.order.createdAt = event.timestamp;
65
50
  event.order.timestamp = event.timestamp;
66
- state.order.pending[event.order.id] = event.order;
67
- return event.order;
51
+ state.order[event.order.id] = event.order;
52
+ changes.commit(event.order);
68
53
  }
69
54
  exports.OrderNewEventHandler = OrderNewEventHandler;
70
55
  let OrderPendingEvent = class OrderPendingEvent {
@@ -79,17 +64,17 @@ OrderPendingEvent = __decorate([
79
64
  __metadata("design:paramtypes", [String, Number])
80
65
  ], OrderPendingEvent);
81
66
  exports.OrderPendingEvent = OrderPendingEvent;
82
- function OrderPendingEventHandler(event, state) {
67
+ function OrderPendingEventHandler(event, state, changes) {
83
68
  if (!(event.id in state.order.pending)) {
84
69
  throw new Error(`Trying to patch unknown order: ${event.id}`);
85
70
  }
86
- const order = state.order.pending[event.id];
71
+ const order = state.order[event.id];
87
72
  if (order.state != 'NEW') {
88
73
  throw new Error(`Order is not new`);
89
74
  }
90
75
  order.state = 'PENDING';
91
76
  order.timestamp = event.timestamp;
92
- return order;
77
+ changes.commit(order);
93
78
  }
94
79
  exports.OrderPendingEventHandler = OrderPendingEventHandler;
95
80
  let OrderFilledEvent = class OrderFilledEvent {
@@ -105,11 +90,11 @@ OrderFilledEvent = __decorate([
105
90
  __metadata("design:paramtypes", [String, Number, Number])
106
91
  ], OrderFilledEvent);
107
92
  exports.OrderFilledEvent = OrderFilledEvent;
108
- function OrderFilledEventHandler(event, state) {
109
- if (!(event.id in state.order.pending)) {
93
+ function OrderFilledEventHandler(event, state, changes) {
94
+ if (!(event.id in state.order)) {
110
95
  throw new Error(`Trying to patch unknown order: ${event.id}`);
111
96
  }
112
- const order = state.order.pending[event.id];
97
+ const order = state.order[event.id];
113
98
  if (order.state != 'PENDING' && order.state != 'CANCELING') {
114
99
  throw new Error('Order is not pending');
115
100
  }
@@ -117,9 +102,7 @@ function OrderFilledEventHandler(event, state) {
117
102
  order.timestamp = event.timestamp;
118
103
  order.quantityExecuted = order.quantity;
119
104
  order.averageExecutionRate = event.averageExecutionRate;
120
- delete state.order.pending[event.id];
121
- state.order.filled[event.id] = order;
122
- return order;
105
+ changes.commit(order);
123
106
  }
124
107
  exports.OrderFilledEventHandler = OrderFilledEventHandler;
125
108
  let OrderCancelingEvent = class OrderCancelingEvent {
@@ -134,11 +117,11 @@ OrderCancelingEvent = __decorate([
134
117
  __metadata("design:paramtypes", [String, Number])
135
118
  ], OrderCancelingEvent);
136
119
  exports.OrderCancelingEvent = OrderCancelingEvent;
137
- function OrderCancelingEventHandler(event, state) {
138
- if (!(event.id in state.order.pending)) {
120
+ function OrderCancelingEventHandler(event, state, changes) {
121
+ if (!(event.id in state.order)) {
139
122
  throw new Error(`Trying to patch unknown order: ${event.id}`);
140
123
  }
141
- const order = state.order.pending[event.id];
124
+ const order = state.order[event.id];
142
125
  if (order.state == 'CANCELING' || order.state == 'CANCELED') {
143
126
  return;
144
127
  }
@@ -147,7 +130,7 @@ function OrderCancelingEventHandler(event, state) {
147
130
  }
148
131
  order.state = 'CANCELING';
149
132
  order.timestamp = event.timestamp;
150
- return order;
133
+ changes.commit(order);
151
134
  }
152
135
  exports.OrderCancelingEventHandler = OrderCancelingEventHandler;
153
136
  let OrderCanceledEvent = class OrderCanceledEvent {
@@ -162,8 +145,8 @@ OrderCanceledEvent = __decorate([
162
145
  __metadata("design:paramtypes", [String, Number])
163
146
  ], OrderCanceledEvent);
164
147
  exports.OrderCanceledEvent = OrderCanceledEvent;
165
- function OrderCanceledEventHandler(event, state) {
166
- const order = state.order.pending[event.id];
148
+ function OrderCanceledEventHandler(event, state, changes) {
149
+ const order = state.order[event.id];
167
150
  if (order.state == 'CANCELED') {
168
151
  return;
169
152
  }
@@ -172,9 +155,7 @@ function OrderCanceledEventHandler(event, state) {
172
155
  }
173
156
  order.state = 'CANCELED';
174
157
  order.timestamp = event.timestamp;
175
- delete state.order.pending[event.id];
176
- state.order.canceled[event.id] = order;
177
- return order;
158
+ changes.commit(order);
178
159
  }
179
160
  exports.OrderCanceledEventHandler = OrderCanceledEventHandler;
180
161
  let OrderCancelFailedEvent = class OrderCancelFailedEvent {
@@ -189,14 +170,14 @@ OrderCancelFailedEvent = __decorate([
189
170
  __metadata("design:paramtypes", [String, Number])
190
171
  ], OrderCancelFailedEvent);
191
172
  exports.OrderCancelFailedEvent = OrderCancelFailedEvent;
192
- function OrderCancelFailedEventHandler(event, state) {
193
- const order = state.order.pending[event.id];
173
+ function OrderCancelFailedEventHandler(event, state, changes) {
174
+ const order = state.order[event.id];
194
175
  if (order.state != 'CANCELING') {
195
176
  return;
196
177
  }
197
178
  order.state = 'PENDING';
198
179
  order.timestamp = event.timestamp;
199
- return order;
180
+ changes.commit(order);
200
181
  }
201
182
  exports.OrderCancelFailedEventHandler = OrderCancelFailedEventHandler;
202
183
  let OrderRejectedEvent = class OrderRejectedEvent {
@@ -211,16 +192,14 @@ OrderRejectedEvent = __decorate([
211
192
  __metadata("design:paramtypes", [String, Number])
212
193
  ], OrderRejectedEvent);
213
194
  exports.OrderRejectedEvent = OrderRejectedEvent;
214
- function OrderRejectedEventHandler(event, state) {
215
- const order = state.order.pending[event.id];
195
+ function OrderRejectedEventHandler(event, state, changes) {
196
+ const order = state.order[event.id];
216
197
  if (order.state != 'NEW') {
217
198
  throw new Error('Order is not new.');
218
199
  }
219
200
  order.state = 'REJECTED';
220
201
  order.timestamp = event.timestamp;
221
- delete state.order.pending[event.id];
222
- state.order.rejected[event.id] = order;
223
- return order;
202
+ changes.commit(order);
224
203
  }
225
204
  exports.OrderRejectedEventHandler = OrderRejectedEventHandler;
226
205
  //# sourceMappingURL=store-order.event.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"store-order.event.js","sourceRoot":"","sources":["../../../src/store/event/store-order.event.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store-order.event.js","sourceRoot":"","sources":["../../../src/store/event/store-order.event.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const __1 = require("../");
4
3
  const shared_1 = require("../../shared");
5
4
  const domain_1 = require("../../domain");
6
5
  const store_order_event_1 = require("./store-order.event");
6
+ const store_1 = require("../store");
7
7
  const instrument = new domain_1.Instrument(new domain_1.Asset('btc', 'binance', 8), new domain_1.Asset('usdt', 'binance', 2), 'binance:btc-usdt');
8
8
  describe('order load event tests', () => {
9
9
  test('should load order to store', () => {
10
10
  const timestamp = (0, shared_1.now)();
11
- const state = new __1.State();
11
+ const store = new store_1.Store();
12
12
  const order = domain_1.Order.buyMarket(instrument, 1.0);
13
13
  order.state = 'PENDING';
14
- state.universe.instrument[instrument.toString()] = instrument;
15
- state.subscription.instrument[instrument.toString()] = instrument;
16
- (0, store_order_event_1.OrderLoadEventHandler)(new store_order_event_1.OrderLoadEvent(order, timestamp), state);
17
- expect(Object.keys(state.order.pending).length).toEqual(1);
18
- expect(state.order.pending[order.id]).toEqual(order);
14
+ store.snapshot.universe.instrument[instrument.toString()] = instrument;
15
+ store.snapshot.subscription.instrument[instrument.toString()] = instrument;
16
+ store.dispatch(new store_order_event_1.OrderLoadEvent(order, timestamp));
17
+ expect(Object.keys(store.snapshot.order).length).toEqual(1);
18
+ expect(store.snapshot.order[order.id]).toEqual(order);
19
19
  });
20
20
  });
21
21
  //# sourceMappingURL=store-order.event.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"store-order.event.spec.js","sourceRoot":"","sources":["../../../src/store/event/store-order.event.spec.ts"],"names":[],"mappings":";;AAAA,2BAA4B;AAC5B,yCAAmC;AACnC,yCAAwD;AACxD,2DAA4E;AAE5E,MAAM,UAAU,GAAG,IAAI,mBAAU,CAC/B,IAAI,cAAK,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,EAC9B,IAAI,cAAK,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,EAC/B,kBAAkB,CACnB,CAAC;AAEF,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,IAAI,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACtC,MAAM,SAAS,GAAG,IAAA,YAAG,GAAE,CAAC;QACxB,MAAM,KAAK,GAAG,IAAI,SAAK,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,cAAK,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAE/C,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;QAExB,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,GAAG,UAAU,CAAC;QAC9D,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,GAAG,UAAU,CAAC;QAElE,IAAA,yCAAqB,EAAC,IAAI,kCAAc,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;QAEnE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"store-order.event.spec.js","sourceRoot":"","sources":["../../../src/store/event/store-order.event.spec.ts"],"names":[],"mappings":";;AAAA,yCAAmC;AACnC,yCAAwD;AACxD,2DAAqD;AACrD,oCAAiC;AAEjC,MAAM,UAAU,GAAG,IAAI,mBAAU,CAC/B,IAAI,cAAK,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,EAC9B,IAAI,cAAK,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,EAC/B,kBAAkB,CACnB,CAAC;AAEF,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,IAAI,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACtC,MAAM,SAAS,GAAG,IAAA,YAAG,GAAE,CAAC;QACxB,MAAM,KAAK,GAAG,IAAI,aAAK,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,cAAK,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAE/C,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;QAExB,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,GAAG,UAAU,CAAC;QACvE,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,GAAG,UAAU,CAAC;QAE3E,KAAK,CAAC,QAAQ,CAAC,IAAI,kCAAc,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;QAErD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,7 +1,6 @@
1
1
  import { timestamp } from '../../shared';
2
2
  import { InstrumentSelector } from '../../domain/instrument';
3
- import { Orderbook } from '../../domain/orderbook';
4
- import { State } from '../store.state';
3
+ import { State, StateChangeTracker } from '../store.state';
5
4
  import { StoreEvent } from './store.event';
6
5
  export declare class OrderbookPatchEvent implements StoreEvent {
7
6
  readonly instrument: InstrumentSelector;
@@ -13,4 +12,4 @@ export declare class OrderbookPatchEvent implements StoreEvent {
13
12
  type: string;
14
13
  constructor(instrument: InstrumentSelector, bestAskRate: number, bestAskQuantity: number, bestBidRate: number, bestBidQuantity: number, timestamp: timestamp);
15
14
  }
16
- export declare function OrderbookPatchEventHandler(event: OrderbookPatchEvent, state: State): Orderbook;
15
+ export declare function OrderbookPatchEventHandler(event: OrderbookPatchEvent, state: State, changes: StateChangeTracker): void;
@@ -29,7 +29,7 @@ OrderbookPatchEvent = __decorate([
29
29
  __metadata("design:paramtypes", [instrument_1.InstrumentSelector, Number, Number, Number, Number, Number])
30
30
  ], OrderbookPatchEvent);
31
31
  exports.OrderbookPatchEvent = OrderbookPatchEvent;
32
- function OrderbookPatchEventHandler(event, state) {
32
+ function OrderbookPatchEventHandler(event, state, changes) {
33
33
  const instrumentKey = event.instrument.toString();
34
34
  if (!(instrumentKey in state.subscription.instrument)) {
35
35
  throw new Error(`Trying to patch unsubscribed instrument: ${instrumentKey}`);
@@ -59,7 +59,7 @@ function OrderbookPatchEventHandler(event, state) {
59
59
  throw new Error('liquidated');
60
60
  }
61
61
  }
62
- return orderbook;
62
+ changes.commit(orderbook);
63
63
  }
64
64
  exports.OrderbookPatchEventHandler = OrderbookPatchEventHandler;
65
65
  //# sourceMappingURL=store-orderbook.event.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"store-orderbook.event.js","sourceRoot":"","sources":["../../../src/store/event/store-orderbook.event.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA2C;AAE3C,wDAA6D;AAC7D,sDAAmD;AAKnD,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAG9B,YACW,UAA8B,EAC9B,WAAmB,EACnB,eAAuB,EACvB,WAAmB,EACnB,eAAuB,EACvB,SAAoB;QALpB,eAAU,GAAV,UAAU,CAAoB;QAC9B,gBAAW,GAAX,WAAW,CAAQ;QACnB,oBAAe,GAAf,eAAe,CAAQ;QACvB,gBAAW,GAAX,WAAW,CAAQ;QACnB,oBAAe,GAAf,eAAe,CAAQ;QACvB,cAAS,GAAT,SAAS,CAAW;QAR/B,SAAI,GAAG,iBAAiB,CAAC;IAStB,CAAC;CACL,CAAA;AAXY,mBAAmB;IAD/B,aAAK;qCAKmB,+BAAkB;GAJ9B,mBAAmB,CAW/B;AAXY,kDAAmB;AAahC,SAAgB,0BAA0B,CAAC,KAA0B,EAAE,KAAY;IACjF,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IAElD,IAAI,CAAC,CAAC,aAAa,IAAI,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;QACrD,MAAM,IAAI,KAAK,CAAC,4CAA4C,aAAa,EAAE,CAAC,CAAC;KAC9E;IAED,IAAI,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAE/C,IAAI,CAAC,SAAS,EAAE;QACd,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAE5D,SAAS,GAAG,IAAI,qBAAS,CAAC,UAAU,CAAC,CAAC;QAEtC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC;KAC5C;IAED,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAElC,SAAS,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IACtC,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC5E,SAAS,CAAC,eAAe,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACnF,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC5E,SAAS,CAAC,eAAe,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAEnF,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEnE,IAAI,KAAK,EAAE;QACT,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;YACpD,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,SAAS,CAAC,QAAQ,EAAE,EAAE;gBAC1D,SAAS;aACV;YAED,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC;YAEhF,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;SAC7B;QAED,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;SAC/B;KACF;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AA5CD,gEA4CC"}
1
+ {"version":3,"file":"store-orderbook.event.js","sourceRoot":"","sources":["../../../src/store/event/store-orderbook.event.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA2C;AAE3C,wDAA6D;AAC7D,sDAAmD;AAKnD,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAG9B,YACW,UAA8B,EAC9B,WAAmB,EACnB,eAAuB,EACvB,WAAmB,EACnB,eAAuB,EACvB,SAAoB;QALpB,eAAU,GAAV,UAAU,CAAoB;QAC9B,gBAAW,GAAX,WAAW,CAAQ;QACnB,oBAAe,GAAf,eAAe,CAAQ;QACvB,gBAAW,GAAX,WAAW,CAAQ;QACnB,oBAAe,GAAf,eAAe,CAAQ;QACvB,cAAS,GAAT,SAAS,CAAW;QAR/B,SAAI,GAAG,iBAAiB,CAAC;IAStB,CAAC;CACL,CAAA;AAXY,mBAAmB;IAD/B,aAAK;qCAKmB,+BAAkB;GAJ9B,mBAAmB,CAW/B;AAXY,kDAAmB;AAahC,SAAgB,0BAA0B,CACxC,KAA0B,EAC1B,KAAY,EACZ,OAA2B;IAE3B,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IAElD,IAAI,CAAC,CAAC,aAAa,IAAI,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;QACrD,MAAM,IAAI,KAAK,CAAC,4CAA4C,aAAa,EAAE,CAAC,CAAC;KAC9E;IAED,IAAI,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAE/C,IAAI,CAAC,SAAS,EAAE;QACd,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAE5D,SAAS,GAAG,IAAI,qBAAS,CAAC,UAAU,CAAC,CAAC;QAEtC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC;KAC5C;IAED,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAElC,SAAS,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IACtC,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC5E,SAAS,CAAC,eAAe,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACnF,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC5E,SAAS,CAAC,eAAe,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAEnF,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEnE,IAAI,KAAK,EAAE;QACT,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;YACpD,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,SAAS,CAAC,QAAQ,EAAE,EAAE;gBAC1D,SAAS;aACV;YAED,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC;YAEhF,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;SAC7B;QAED,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;SAC/B;KACF;IAED,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC5B,CAAC;AAhDD,gEAgDC"}
@@ -1,6 +1,6 @@
1
1
  import { timestamp } from '../../shared';
2
2
  import { Position, Instrument, PositionMode } from '../../domain';
3
- import { State } from '../store.state';
3
+ import { State, StateChangeTracker } from '../store.state';
4
4
  import { StoreEvent } from './store.event';
5
5
  export declare class PositionLoadEvent implements StoreEvent {
6
6
  readonly position: Position;
@@ -8,7 +8,7 @@ export declare class PositionLoadEvent implements StoreEvent {
8
8
  type: string;
9
9
  constructor(position: Position, timestamp: timestamp);
10
10
  }
11
- export declare function PositionLoadEventHandler(event: PositionLoadEvent, state: State): Position;
11
+ export declare function PositionLoadEventHandler(event: PositionLoadEvent, state: State, changes: StateChangeTracker): Position;
12
12
  export declare class PositionPatchEvent implements StoreEvent {
13
13
  readonly id: string;
14
14
  readonly instrument: Instrument;
@@ -20,4 +20,4 @@ export declare class PositionPatchEvent implements StoreEvent {
20
20
  type: string;
21
21
  constructor(id: string, instrument: Instrument, rate: number, size: number, leverage: number, mode: PositionMode, timestamp: timestamp);
22
22
  }
23
- export declare function PositionPatchEventHandler(event: PositionPatchEvent, state: State): (Position | import("../../domain").Balance)[];
23
+ export declare function PositionPatchEventHandler(event: PositionPatchEvent, state: State, changes: StateChangeTracker): void;
@@ -24,7 +24,7 @@ PositionLoadEvent = __decorate([
24
24
  __metadata("design:paramtypes", [domain_1.Position, Number])
25
25
  ], PositionLoadEvent);
26
26
  exports.PositionLoadEvent = PositionLoadEvent;
27
- function PositionLoadEventHandler(event, state) {
27
+ function PositionLoadEventHandler(event, state, changes) {
28
28
  if (event.position.instrument.toString() in state.subscription.instrument ||
29
29
  event.position.size == 0) {
30
30
  return;
@@ -57,7 +57,7 @@ PositionPatchEvent = __decorate([
57
57
  __metadata("design:paramtypes", [String, domain_1.Instrument, Number, Number, Number, String, Number])
58
58
  ], PositionPatchEvent);
59
59
  exports.PositionPatchEvent = PositionPatchEvent;
60
- function PositionPatchEventHandler(event, state) {
60
+ function PositionPatchEventHandler(event, state, changes) {
61
61
  if (!(event.instrument.toString() in state.subscription.instrument)) {
62
62
  return;
63
63
  }
@@ -74,9 +74,9 @@ function PositionPatchEventHandler(event, state) {
74
74
  const rate = position.size >= 0 ? orderbook.bestBidRate : orderbook.bestAskRate;
75
75
  position.calculatePnL(rate);
76
76
  }
77
- return [position, balance];
77
+ changes.commit(position);
78
+ changes.commit(balance);
78
79
  }
79
- return;
80
80
  }
81
81
  if (!position) {
82
82
  position = new domain_1.Position(event.id, event.instrument);
@@ -90,7 +90,8 @@ function PositionPatchEventHandler(event, state) {
90
90
  const rate = position.size >= 0 ? orderbook.bestBidRate : orderbook.bestAskRate;
91
91
  position.calculatePnL(rate);
92
92
  }
93
- return [position, balance];
93
+ changes.commit(position);
94
+ changes.commit(balance);
94
95
  }
95
96
  exports.PositionPatchEventHandler = PositionPatchEventHandler;
96
97
  //# sourceMappingURL=store-position.event.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"store-position.event.js","sourceRoot":"","sources":["../../../src/store/event/store-position.event.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store-position.event.js","sourceRoot":"","sources":["../../../src/store/event/store-position.event.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import { timestamp } from '../../shared';
2
- import { Trade } from '../../domain';
3
2
  import { InstrumentSelector } from '../../domain/instrument';
4
- import { State } from '../store.state';
3
+ import { State, StateChangeTracker } from '../store.state';
5
4
  import { StoreEvent } from './store.event';
6
5
  export declare class TradePatchEvent implements StoreEvent {
7
6
  readonly instrument: InstrumentSelector;
@@ -11,4 +10,4 @@ export declare class TradePatchEvent implements StoreEvent {
11
10
  type: string;
12
11
  constructor(instrument: InstrumentSelector, rate: number, quantity: number, timestamp: timestamp);
13
12
  }
14
- export declare function TradePatchEventHandler(event: TradePatchEvent, state: State): Trade;
13
+ export declare function TradePatchEventHandler(event: TradePatchEvent, state: State, changes: StateChangeTracker): void;
@@ -27,7 +27,7 @@ TradePatchEvent = __decorate([
27
27
  __metadata("design:paramtypes", [instrument_1.InstrumentSelector, Number, Number, Number])
28
28
  ], TradePatchEvent);
29
29
  exports.TradePatchEvent = TradePatchEvent;
30
- function TradePatchEventHandler(event, state) {
30
+ function TradePatchEventHandler(event, state, changes) {
31
31
  const instrumentKey = event.instrument.toString();
32
32
  if (!(instrumentKey in state.subscription.instrument)) {
33
33
  throw new Error(`Trying to patch unsubscribed instrument: ${instrumentKey}`);
@@ -41,7 +41,7 @@ function TradePatchEventHandler(event, state) {
41
41
  trade.timestamp = event.timestamp;
42
42
  trade.rate = trade.instrument.quote.fixed(event.rate);
43
43
  trade.quantity = trade.instrument.base.fixed(event.quantity);
44
- return trade;
44
+ changes.commit(trade);
45
45
  }
46
46
  exports.TradePatchEventHandler = TradePatchEventHandler;
47
47
  //# sourceMappingURL=store-trade.event.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"store-trade.event.js","sourceRoot":"","sources":["../../../src/store/event/store-trade.event.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA2C;AAE3C,yCAAqC;AACrC,wDAA6D;AAQ7D,IAAa,eAAe,GAA5B,MAAa,eAAe;IAG1B,YACW,UAA8B,EAC9B,IAAY,EACZ,QAAgB,EAChB,SAAoB;QAHpB,eAAU,GAAV,UAAU,CAAoB;QAC9B,SAAI,GAAJ,IAAI,CAAQ;QACZ,aAAQ,GAAR,QAAQ,CAAQ;QAChB,cAAS,GAAT,SAAS,CAAW;QAN/B,SAAI,GAAG,aAAa,CAAC;IAOlB,CAAC;CACL,CAAA;AATY,eAAe;IAD3B,aAAK;qCAKmB,+BAAkB;GAJ9B,eAAe,CAS3B;AATY,0CAAe;AAe5B,SAAgB,sBAAsB,CAAC,KAAsB,EAAE,KAAY;IACzE,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IAElD,IAAI,CAAC,CAAC,aAAa,IAAI,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;QACrD,MAAM,IAAI,KAAK,CAAC,4CAA4C,aAAa,EAAE,CAAC,CAAC;KAC9E;IAED,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,EAAE;QACV,KAAK,GAAG,IAAI,cAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;QAE5D,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;KACpC;IAED,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAElC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAClC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtD,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAE7D,OAAO,KAAK,CAAC;AACf,CAAC;AArBD,wDAqBC"}
1
+ {"version":3,"file":"store-trade.event.js","sourceRoot":"","sources":["../../../src/store/event/store-trade.event.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA2C;AAE3C,yCAAqC;AACrC,wDAA6D;AAQ7D,IAAa,eAAe,GAA5B,MAAa,eAAe;IAG1B,YACW,UAA8B,EAC9B,IAAY,EACZ,QAAgB,EAChB,SAAoB;QAHpB,eAAU,GAAV,UAAU,CAAoB;QAC9B,SAAI,GAAJ,IAAI,CAAQ;QACZ,aAAQ,GAAR,QAAQ,CAAQ;QAChB,cAAS,GAAT,SAAS,CAAW;QAN/B,SAAI,GAAG,aAAa,CAAC;IAOlB,CAAC;CACL,CAAA;AATY,eAAe;IAD3B,aAAK;qCAKmB,+BAAkB;GAJ9B,eAAe,CAS3B;AATY,0CAAe;AAe5B,SAAgB,sBAAsB,CACpC,KAAsB,EACtB,KAAY,EACZ,OAA2B;IAE3B,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IAElD,IAAI,CAAC,CAAC,aAAa,IAAI,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;QACrD,MAAM,IAAI,KAAK,CAAC,4CAA4C,aAAa,EAAE,CAAC,CAAC;KAC9E;IAED,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,EAAE;QACV,KAAK,GAAG,IAAI,cAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;QAE5D,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;KACpC;IAED,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAElC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAClC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtD,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAE7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC;AAzBD,wDAyBC"}
@@ -2,42 +2,41 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const domain_1 = require("../../domain");
4
4
  const _1 = require(".");
5
- const store_state_1 = require("../store.state");
6
5
  const shared_1 = require("../../shared");
6
+ const __1 = require("..");
7
7
  const instrument = new domain_1.Instrument(new domain_1.Asset('btc', 'binance', 8), new domain_1.Asset('usdt', 'binance', 2), 'binance:btc-usdt');
8
8
  describe('trade patch event tests', () => {
9
9
  test('should create a new trade object and patch a store', () => {
10
10
  const timestamp = (0, shared_1.now)();
11
- const state = new store_state_1.State();
12
- state.universe.instrument[instrument.toString()] = instrument;
13
- state.subscription.instrument[instrument.toString()] = instrument;
14
- const event = new _1.TradePatchEvent(instrument, 1000, 0.1, timestamp);
15
- (0, _1.TradePatchEventHandler)(event, state);
16
- const trade = state.trade[instrument.toString()];
11
+ const store = new __1.Store();
12
+ store.snapshot.universe.instrument[instrument.toString()] = instrument;
13
+ store.snapshot.subscription.instrument[instrument.toString()] = instrument;
14
+ store.dispatch(new _1.TradePatchEvent(instrument, 1000, 0.1, timestamp));
15
+ const trade = store.snapshot.trade[instrument.toString()];
17
16
  expect(trade.timestamp).toEqual(timestamp);
18
17
  expect(trade.instrument.toString()).toEqual(trade.instrument.toString());
19
18
  expect(trade.rate).toEqual(1000);
20
19
  expect(trade.quantity).toEqual(0.1);
21
- expect(state.timestamp).toEqual(timestamp);
20
+ expect(store.snapshot.timestamp).toEqual(timestamp);
22
21
  });
23
22
  test('should use the existing instance of trade when patching a store', () => {
24
- const state = new store_state_1.State();
25
- state.universe.instrument[instrument.toString()] = instrument;
26
- state.subscription.instrument[instrument.toString()] = instrument;
27
- (0, _1.TradePatchEventHandler)(new _1.TradePatchEvent(instrument, 1000, 0.1, (0, shared_1.now)()), state);
23
+ const store = new __1.Store();
24
+ store.snapshot.universe.instrument[instrument.toString()] = instrument;
25
+ store.snapshot.subscription.instrument[instrument.toString()] = instrument;
26
+ store.dispatch(new _1.TradePatchEvent(instrument, 1000, 0.1, (0, shared_1.now)()));
28
27
  const timestamp = (0, shared_1.now)();
29
- const trade = state.trade[instrument.toString()];
30
- (0, _1.TradePatchEventHandler)(new _1.TradePatchEvent(instrument, 2000, 0.2, timestamp), state);
28
+ const trade = store.snapshot.trade[instrument.toString()];
29
+ store.dispatch(new _1.TradePatchEvent(instrument, 2000, 0.2, (0, shared_1.now)()));
31
30
  expect(trade.timestamp).toEqual(timestamp);
32
31
  expect(trade.instrument.toString()).toEqual(instrument.toString());
33
32
  expect(trade.rate).toEqual(2000);
34
33
  expect(trade.quantity).toEqual(0.2);
35
- expect(state.timestamp).toEqual(timestamp);
34
+ expect(store.snapshot.timestamp).toEqual(timestamp);
36
35
  });
37
36
  test('should throw exception when patching unsubscribed instrument', () => {
37
+ const store = new __1.Store();
38
38
  const fn = () => {
39
- const event = new _1.TradePatchEvent(instrument, 1000, 0.1, (0, shared_1.now)());
40
- (0, _1.TradePatchEventHandler)(event, new store_state_1.State());
39
+ store.dispatch(new _1.TradePatchEvent(instrument, 1000, 0.1, (0, shared_1.now)()));
41
40
  };
42
41
  expect(fn).toThrow(Error);
43
42
  });
@@ -1 +1 @@
1
- {"version":3,"file":"store-trade.event.spec.js","sourceRoot":"","sources":["../../../src/store/event/store-trade.event.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store-trade.event.spec.js","sourceRoot":"","sources":["../../../src/store/event/store-trade.event.spec.ts"],"names":[],"mappings":"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"}
@@ -1,35 +1,38 @@
1
1
  import { Observable } from 'rxjs';
2
- import { State } from './store.state';
2
+ import { State, StateChangeTracker } from './store.state';
3
3
  import { Component } from '../domain';
4
4
  import { StoreEvent } from './event/store.event';
5
5
  import { Topic } from '../shared/topic';
6
6
  import { TradePatchEvent } from './event/store-trade.event';
7
7
  import { BalanceFreezEvent, BalancePatchEvent, BalanceTransactEvent, BalanceUnfreezEvent, CandleEvent, InstrumentPatchEvent, InstrumentSubscriptionEvent, OrderbookPatchEvent, OrderCanceledEvent, OrderCancelFailedEvent, OrderCancelingEvent, OrderFilledEvent, OrderLoadEvent, OrderNewEvent, OrderPendingEvent, OrderRejectedEvent, PositionLoadEvent, PositionPatchEvent } from './event';
8
- export declare class Store extends Topic<StoreEvent, any> {
8
+ export declare class Store extends Topic<StoreEvent, any> implements StateChangeTracker {
9
+ private readonly pendingChanges;
9
10
  private readonly changes;
10
11
  private readonly state;
11
12
  get state$(): Observable<State>;
12
13
  get changes$(): Observable<Component>;
13
14
  get snapshot(): State;
14
15
  dispatch(...events: StoreEvent[]): void;
16
+ commit(component: Component): void;
17
+ commitPendingChanges(): void;
15
18
  dispose(): void;
16
- onInstrumentPatch(event: InstrumentPatchEvent): import("../domain").Instrument;
17
- onInstrumentSubscription(event: InstrumentSubscriptionEvent): import("../domain").Instrument;
18
- onBalancePatch(event: BalancePatchEvent): import("../domain").Balance;
19
- onBalanceTransact(event: BalanceTransactEvent): import("../domain").Balance;
20
- onBalanceFreez(event: BalanceFreezEvent): import("../domain").Balance;
21
- onBalanceUnfreez(event: BalanceUnfreezEvent): import("../domain").Balance;
22
- onOrderLoad(event: OrderLoadEvent): import("../domain").Order;
23
- onOrderNew(event: OrderNewEvent): import("../domain").Order;
24
- onOrderPending(event: OrderPendingEvent): import("../domain").Order;
25
- onOrderFilled(event: OrderFilledEvent): import("../domain").Order;
26
- onOrderCanceling(event: OrderCancelingEvent): import("../domain").Order;
27
- onOrderCanceled(event: OrderCanceledEvent): import("../domain").Order;
28
- onOrderCancelFailed(event: OrderCancelFailedEvent): import("../domain").Order;
29
- onOrderRejected(event: OrderRejectedEvent): import("../domain").Order;
30
- onOrderbookPatch(event: OrderbookPatchEvent): import("../domain").Orderbook;
19
+ onInstrumentPatch(event: InstrumentPatchEvent): void;
20
+ onInstrumentSubscription(event: InstrumentSubscriptionEvent): void;
21
+ onBalancePatch(event: BalancePatchEvent): void;
22
+ onBalanceTransact(event: BalanceTransactEvent): void;
23
+ onBalanceFreez(event: BalanceFreezEvent): void;
24
+ onBalanceUnfreez(event: BalanceUnfreezEvent): void;
25
+ onOrderLoad(event: OrderLoadEvent): void;
26
+ onOrderNew(event: OrderNewEvent): void;
27
+ onOrderPending(event: OrderPendingEvent): void;
28
+ onOrderFilled(event: OrderFilledEvent): void;
29
+ onOrderCanceling(event: OrderCancelingEvent): void;
30
+ onOrderCanceled(event: OrderCanceledEvent): void;
31
+ onOrderCancelFailed(event: OrderCancelFailedEvent): void;
32
+ onOrderRejected(event: OrderRejectedEvent): void;
33
+ onOrderbookPatch(event: OrderbookPatchEvent): void;
31
34
  onPositionLoad(event: PositionLoadEvent): import("../domain").Position;
32
- onPositionPatch(event: PositionPatchEvent): (import("../domain").Position | import("../domain").Balance)[];
33
- onTradePatch(event: TradePatchEvent): import("../domain").Trade;
34
- onCandle(event: CandleEvent): (import("../domain").Orderbook | import("../domain").Trade)[];
35
+ onPositionPatch(event: PositionPatchEvent): void;
36
+ onTradePatch(event: TradePatchEvent): void;
37
+ onCandle(event: CandleEvent): void;
35
38
  }