@quantform/core 0.3.257 → 0.3.263

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 (55) hide show
  1. package/dist/adapter/adapter-aggregate.d.ts +4 -5
  2. package/dist/adapter/adapter-aggregate.js +50 -21
  3. package/dist/adapter/adapter-aggregate.js.map +1 -1
  4. package/dist/adapter/adapter.d.ts +30 -7
  5. package/dist/adapter/adapter.js +29 -2
  6. package/dist/adapter/adapter.js.map +1 -1
  7. package/dist/adapter/backtester/backtester-adapter.d.ts +13 -8
  8. package/dist/adapter/backtester/backtester-adapter.js +25 -32
  9. package/dist/adapter/backtester/backtester-adapter.js.map +1 -1
  10. package/dist/adapter/index.d.ts +0 -1
  11. package/dist/adapter/index.js +0 -1
  12. package/dist/adapter/index.js.map +1 -1
  13. package/dist/adapter/paper/paper-adapter.d.ts +10 -7
  14. package/dist/adapter/paper/paper-adapter.js +24 -42
  15. package/dist/adapter/paper/paper-adapter.js.map +1 -1
  16. package/dist/adapter/paper/paper-adapter.spec.js +25 -7
  17. package/dist/adapter/paper/paper-adapter.spec.js.map +1 -1
  18. package/dist/bootstrap.js +1 -1
  19. package/dist/bootstrap.js.map +1 -1
  20. package/dist/ipc.js +11 -5
  21. package/dist/ipc.js.map +1 -1
  22. package/dist/ipc.spec.js +4 -57
  23. package/dist/ipc.spec.js.map +1 -1
  24. package/dist/session/session.d.ts +4 -7
  25. package/dist/session/session.js +9 -19
  26. package/dist/session/session.js.map +1 -1
  27. package/dist/store/event/store-order.event.js +11 -32
  28. package/dist/store/event/store-order.event.js.map +1 -1
  29. package/dist/store/event/store-order.event.spec.js +2 -2
  30. package/dist/store/event/store-order.event.spec.js.map +1 -1
  31. package/dist/store/store.state.d.ts +1 -6
  32. package/dist/store/store.state.js +1 -6
  33. package/dist/store/store.state.js.map +1 -1
  34. package/dist/tests/backtester-adapter.spec.js +7 -24
  35. package/dist/tests/backtester-adapter.spec.js.map +1 -1
  36. package/dist/tsconfig.tsbuildinfo +1 -1
  37. package/package.json +1 -1
  38. package/src/adapter/adapter-aggregate.ts +55 -75
  39. package/src/adapter/adapter.ts +83 -5
  40. package/src/adapter/backtester/backtester-adapter.ts +39 -19
  41. package/src/adapter/index.ts +0 -1
  42. package/src/adapter/paper/paper-adapter.spec.ts +42 -7
  43. package/src/adapter/paper/paper-adapter.ts +31 -23
  44. package/src/bootstrap.ts +1 -1
  45. package/src/ipc.spec.ts +7 -45
  46. package/src/ipc.ts +6 -6
  47. package/src/session/session.ts +30 -45
  48. package/src/store/event/store-order.event.spec.ts +2 -2
  49. package/src/store/event/store-order.event.ts +11 -38
  50. package/src/store/store.state.ts +1 -12
  51. package/src/tests/backtester-adapter.spec.ts +6 -12
  52. package/dist/adapter/adapter.event.d.ts +0 -43
  53. package/dist/adapter/adapter.event.js +0 -104
  54. package/dist/adapter/adapter.event.js.map +0 -1
  55. package/src/adapter/adapter.event.ts +0 -64
@@ -146,19 +146,29 @@ export class Session {
146
146
  }
147
147
 
148
148
  /**
149
- * Opens collection of orders.
149
+ * Opens a new order.
150
150
  * Example:
151
151
  * session.open(Order.buyMarket(instrument, 100));
152
152
  */
153
- async open(...orders: Order[]): Promise<void> {
154
- await Promise.all(orders.map(it => this.aggregate.open(it)));
153
+ open(order: Order): Observable<Order> {
154
+ return from(this.aggregate.open(order)).pipe(
155
+ switchMap(it =>
156
+ this.store.changes$.pipe(filter(it => it instanceof Order && it.id == it.id))
157
+ ),
158
+ map(it => it as Order)
159
+ );
155
160
  }
156
161
 
157
162
  /**
158
163
  * Cancels specific order.
159
164
  */
160
- cancel(order: Order): Promise<void> {
161
- return this.aggregate.cancel(order);
165
+ cancel(order: Order): Observable<Order> {
166
+ return from(this.aggregate.cancel(order)).pipe(
167
+ switchMap(it =>
168
+ this.store.changes$.pipe(filter(it => it instanceof Order && it.id == it.id))
169
+ ),
170
+ map(it => it as Order)
171
+ );
162
172
  }
163
173
 
164
174
  /**
@@ -261,57 +271,30 @@ export class Session {
261
271
  );
262
272
  }
263
273
 
264
- private ordersOf(
265
- orders: Order[],
266
- states: OrderState[],
267
- selector?: InstrumentSelector
268
- ): Observable<Order[]> {
274
+ orders(selector: InstrumentSelector, states?: OrderState[]): Observable<Order[]> {
269
275
  this.subscribe([selector]);
270
276
 
271
277
  return this.store.changes$.pipe(
272
278
  filter(
273
279
  it =>
274
280
  it instanceof Order &&
275
- (!selector || it.instrument.toString() == selector.toString()) &&
276
- (states.indexOf(it.state) >= 0 || states.length == 0)
281
+ it.instrument.toString() == selector.toString() &&
282
+ (!states || states.includes(it.state))
277
283
  ),
278
- map(() =>
279
- Object.values(orders)
280
- .filter(it => !selector || it.instrument.toString() == selector.toString())
281
- .sort((lhs, rhs) => rhs.createdAt - lhs.createdAt)
282
- ),
283
- startWith(
284
- Object.values(orders)
285
- .filter(it => !selector || it.instrument.toString() == selector.toString())
284
+ map(() => this.store.snapshot.order),
285
+ startWith(this.store.snapshot.order),
286
+ map(it =>
287
+ Object.values(it)
288
+ .filter(
289
+ it =>
290
+ it.instrument.toString() == selector.toString() &&
291
+ (states ? states.includes(it.state) : true)
292
+ )
286
293
  .sort((lhs, rhs) => rhs.createdAt - lhs.createdAt)
287
294
  )
288
295
  );
289
296
  }
290
297
 
291
- pending(selector?: InstrumentSelector): Observable<Order[]> {
292
- return this.ordersOf(
293
- Object.values(this.store.snapshot.order.pending),
294
- ['PENDING', 'NEW'],
295
- selector
296
- );
297
- }
298
-
299
- filled(selector?: InstrumentSelector): Observable<Order[]> {
300
- return this.ordersOf(
301
- Object.values(this.store.snapshot.order.filled),
302
- ['FILLED'],
303
- selector
304
- );
305
- }
306
-
307
- canceled(selector?: InstrumentSelector): Observable<Order[]> {
308
- return this.ordersOf(
309
- Object.values(this.store.snapshot.order.canceled),
310
- ['CANCELING', 'CANCELED'],
311
- selector
312
- );
313
- }
314
-
315
298
  balance(selector: AssetSelector): Observable<Balance> {
316
299
  return this.store.changes$.pipe(
317
300
  startWith(this.store.snapshot.balance[selector.toString()]),
@@ -332,7 +315,9 @@ export class Session {
332
315
  return this.store.changes$.pipe(
333
316
  startWith(this.store.snapshot.universe.instrument[selector.toString()]),
334
317
  filter(it => it instanceof Instrument && it.toString() == selector.toString()),
335
- switchMap(() => from(this.aggregate.history(selector, timeframe, length))),
318
+ switchMap(() =>
319
+ from(this.aggregate.history({ instrument: selector, timeframe, length }))
320
+ ),
336
321
  take(1),
337
322
  shareReplay(),
338
323
  mergeMap(it => it)
@@ -22,7 +22,7 @@ describe('order load event tests', () => {
22
22
 
23
23
  store.dispatch(new OrderLoadEvent(order, timestamp));
24
24
 
25
- expect(Object.keys(store.snapshot.order.pending).length).toEqual(1);
26
- expect(store.snapshot.order.pending[order.id]).toEqual(order);
25
+ expect(Object.keys(store.snapshot.order).length).toEqual(1);
26
+ expect(store.snapshot.order[order.id]).toEqual(order);
27
27
  });
28
28
  });
@@ -18,22 +18,7 @@ export function OrderLoadEventHandler(
18
18
  ) {
19
19
  event.order.timestamp = event.timestamp;
20
20
 
21
- switch (event.order.state) {
22
- case 'NEW':
23
- case 'PENDING':
24
- state.order.pending[event.order.id] = event.order;
25
- break;
26
- case 'FILLED':
27
- state.order.filled[event.order.id] = event.order;
28
- break;
29
- case 'CANCELING':
30
- case 'CANCELED':
31
- state.order.canceled[event.order.id] = event.order;
32
- break;
33
- case 'REJECTED':
34
- state.order.rejected[event.order.id] = event.order;
35
- break;
36
- }
21
+ state.order[event.order.id] = event.order;
37
22
 
38
23
  changes.commit(event.order);
39
24
  }
@@ -57,7 +42,7 @@ export function OrderNewEventHandler(
57
42
  event.order.createdAt = event.timestamp;
58
43
  event.order.timestamp = event.timestamp;
59
44
 
60
- state.order.pending[event.order.id] = event.order;
45
+ state.order[event.order.id] = event.order;
61
46
 
62
47
  changes.commit(event.order);
63
48
  }
@@ -74,11 +59,11 @@ export function OrderPendingEventHandler(
74
59
  state: State,
75
60
  changes: StateChangeTracker
76
61
  ) {
77
- if (!(event.id in state.order.pending)) {
62
+ if (!(event.id in state.order)) {
78
63
  throw new Error(`Trying to patch unknown order: ${event.id}`);
79
64
  }
80
65
 
81
- const order = state.order.pending[event.id];
66
+ const order = state.order[event.id];
82
67
 
83
68
  if (order.state != 'NEW') {
84
69
  throw new Error(`Order is not new`);
@@ -106,11 +91,11 @@ export function OrderFilledEventHandler(
106
91
  state: State,
107
92
  changes: StateChangeTracker
108
93
  ) {
109
- if (!(event.id in state.order.pending)) {
94
+ if (!(event.id in state.order)) {
110
95
  throw new Error(`Trying to patch unknown order: ${event.id}`);
111
96
  }
112
97
 
113
- const order = state.order.pending[event.id];
98
+ const order = state.order[event.id];
114
99
 
115
100
  if (order.state != 'PENDING' && order.state != 'CANCELING') {
116
101
  throw new Error('Order is not pending');
@@ -121,10 +106,6 @@ export function OrderFilledEventHandler(
121
106
  order.quantityExecuted = order.quantity;
122
107
  order.averageExecutionRate = event.averageExecutionRate;
123
108
 
124
- delete state.order.pending[event.id];
125
-
126
- state.order.filled[event.id] = order;
127
-
128
109
  changes.commit(order);
129
110
  }
130
111
 
@@ -140,11 +121,11 @@ export function OrderCancelingEventHandler(
140
121
  state: State,
141
122
  changes: StateChangeTracker
142
123
  ) {
143
- if (!(event.id in state.order.pending)) {
124
+ if (!(event.id in state.order)) {
144
125
  throw new Error(`Trying to patch unknown order: ${event.id}`);
145
126
  }
146
127
 
147
- const order = state.order.pending[event.id];
128
+ const order = state.order[event.id];
148
129
 
149
130
  if (order.state == 'CANCELING' || order.state == 'CANCELED') {
150
131
  return;
@@ -172,7 +153,7 @@ export function OrderCanceledEventHandler(
172
153
  state: State,
173
154
  changes: StateChangeTracker
174
155
  ) {
175
- const order = state.order.pending[event.id];
156
+ const order = state.order[event.id];
176
157
 
177
158
  if (order.state == 'CANCELED') {
178
159
  return;
@@ -185,10 +166,6 @@ export function OrderCanceledEventHandler(
185
166
  order.state = 'CANCELED';
186
167
  order.timestamp = event.timestamp;
187
168
 
188
- delete state.order.pending[event.id];
189
-
190
- state.order.canceled[event.id] = order;
191
-
192
169
  changes.commit(order);
193
170
  }
194
171
 
@@ -204,7 +181,7 @@ export function OrderCancelFailedEventHandler(
204
181
  state: State,
205
182
  changes: StateChangeTracker
206
183
  ) {
207
- const order = state.order.pending[event.id];
184
+ const order = state.order[event.id];
208
185
 
209
186
  if (order.state != 'CANCELING') {
210
187
  return;
@@ -228,7 +205,7 @@ export function OrderRejectedEventHandler(
228
205
  state: State,
229
206
  changes: StateChangeTracker
230
207
  ) {
231
- const order = state.order.pending[event.id];
208
+ const order = state.order[event.id];
232
209
 
233
210
  if (order.state != 'NEW') {
234
211
  throw new Error('Order is not new.');
@@ -237,9 +214,5 @@ export function OrderRejectedEventHandler(
237
214
  order.state = 'REJECTED';
238
215
  order.timestamp = event.timestamp;
239
216
 
240
- delete state.order.pending[event.id];
241
-
242
- state.order.rejected[event.id] = order;
243
-
244
217
  changes.commit(order);
245
218
  }
@@ -39,16 +39,5 @@ export class State {
39
39
  trade: Record<string, Trade> = {};
40
40
  orderbook: Record<string, Orderbook> = {};
41
41
  balance: Record<string, Balance> = {};
42
-
43
- order: {
44
- pending: Record<string, Order>;
45
- filled: Record<string, Order>;
46
- canceled: Record<string, Order>;
47
- rejected: Record<string, Order>;
48
- } = {
49
- pending: {},
50
- filled: {},
51
- canceled: {},
52
- rejected: {}
53
- };
42
+ order: Record<string, Order> = {};
54
43
  }
@@ -1,5 +1,3 @@
1
- import { AdapterAwakeCommand } from '../adapter';
2
- import { AdapterSubscribeCommand } from '../adapter';
3
1
  import { Asset, Commission, instrumentOf } from '../domain';
4
2
  import { InMemoryStorage, Feed } from '../storage';
5
3
  import { Store } from '../store';
@@ -10,7 +8,6 @@ import { PaperExecutor } from '../adapter/paper/executor/paper-executor';
10
8
  import { PaperAdapter } from '../adapter/paper/paper-adapter';
11
9
  import { BacktesterAdapter } from '../adapter/backtester/backtester-adapter';
12
10
  import { BacktesterStreamer } from '../adapter/backtester/backtester-streamer';
13
- import { handler } from '../shared';
14
11
 
15
12
  const base = new Asset('btc', 'binance', 8);
16
13
  const quote = new Asset('usdt', 'binance', 4);
@@ -26,9 +23,10 @@ class DefaultAdapter extends Adapter {
26
23
  return new PaperSpotExecutor(adapter);
27
24
  }
28
25
 
29
- @handler(AdapterAwakeCommand)
30
- onAwake(command: AdapterAwakeCommand, context: AdapterContext) {
31
- context.store.dispatch(
26
+ async awake(context: AdapterContext): Promise<void> {
27
+ await super.awake(context);
28
+
29
+ context.dispatch(
32
30
  new InstrumentPatchEvent(
33
31
  context.timestamp,
34
32
  base,
@@ -88,12 +86,8 @@ describe('backtester adapter tests', () => {
88
86
 
89
87
  const sut = new BacktesterAdapter(adapter, streamer);
90
88
 
91
- sut.dispatch(new AdapterAwakeCommand(), new AdapterContext(sut, store));
92
-
93
- sut.dispatch(
94
- new AdapterSubscribeCommand([instrument]),
95
- new AdapterContext(sut, store)
96
- );
89
+ sut.awake(new AdapterContext(sut, store));
90
+ sut.subscribe([instrument]);
97
91
 
98
92
  expect(sut.name).toEqual('default');
99
93
  });
@@ -1,43 +0,0 @@
1
- import { Feed } from '../storage';
2
- import { timestamp } from '../shared';
3
- import { InstrumentSelector, Order } from '../domain';
4
- export declare class AdapterAwakeCommand {
5
- type: string;
6
- }
7
- export declare class AdapterDisposeCommand {
8
- type: string;
9
- }
10
- export declare class AdapterAccountCommand {
11
- type: string;
12
- }
13
- export declare class AdapterSubscribeCommand {
14
- readonly instrument: Array<InstrumentSelector>;
15
- type: string;
16
- constructor(instrument: Array<InstrumentSelector>);
17
- }
18
- export declare class AdapterOrderOpenCommand {
19
- readonly order: Order;
20
- type: string;
21
- constructor(order: Order);
22
- }
23
- export declare class AdapterOrderCancelCommand {
24
- readonly order: Order;
25
- type: string;
26
- constructor(order: Order);
27
- }
28
- export declare class AdapterHistoryQuery {
29
- readonly instrument: InstrumentSelector;
30
- readonly timeframe: number;
31
- readonly length: number;
32
- type: string;
33
- constructor(instrument: InstrumentSelector, timeframe: number, length: number);
34
- }
35
- export declare class AdapterFeedCommand {
36
- readonly instrument: InstrumentSelector;
37
- readonly from: timestamp;
38
- readonly to: timestamp;
39
- readonly feed: Feed;
40
- readonly progress: (timestamp: number) => void;
41
- type: string;
42
- constructor(instrument: InstrumentSelector, from: timestamp, to: timestamp, feed: Feed, progress: (timestamp: number) => void);
43
- }
@@ -1,104 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.AdapterFeedCommand = exports.AdapterHistoryQuery = exports.AdapterOrderCancelCommand = exports.AdapterOrderOpenCommand = exports.AdapterSubscribeCommand = exports.AdapterAccountCommand = exports.AdapterDisposeCommand = exports.AdapterAwakeCommand = void 0;
13
- const storage_1 = require("../storage");
14
- const domain_1 = require("../domain");
15
- const topic_1 = require("../shared/topic");
16
- let AdapterAwakeCommand = class AdapterAwakeCommand {
17
- constructor() {
18
- this.type = 'awake';
19
- }
20
- };
21
- AdapterAwakeCommand = __decorate([
22
- topic_1.event
23
- ], AdapterAwakeCommand);
24
- exports.AdapterAwakeCommand = AdapterAwakeCommand;
25
- let AdapterDisposeCommand = class AdapterDisposeCommand {
26
- constructor() {
27
- this.type = 'dispose';
28
- }
29
- };
30
- AdapterDisposeCommand = __decorate([
31
- topic_1.event
32
- ], AdapterDisposeCommand);
33
- exports.AdapterDisposeCommand = AdapterDisposeCommand;
34
- let AdapterAccountCommand = class AdapterAccountCommand {
35
- constructor() {
36
- this.type = 'account';
37
- }
38
- };
39
- AdapterAccountCommand = __decorate([
40
- topic_1.event
41
- ], AdapterAccountCommand);
42
- exports.AdapterAccountCommand = AdapterAccountCommand;
43
- let AdapterSubscribeCommand = class AdapterSubscribeCommand {
44
- constructor(instrument) {
45
- this.instrument = instrument;
46
- this.type = 'subscribe';
47
- }
48
- };
49
- AdapterSubscribeCommand = __decorate([
50
- topic_1.event,
51
- __metadata("design:paramtypes", [Array])
52
- ], AdapterSubscribeCommand);
53
- exports.AdapterSubscribeCommand = AdapterSubscribeCommand;
54
- let AdapterOrderOpenCommand = class AdapterOrderOpenCommand {
55
- constructor(order) {
56
- this.order = order;
57
- this.type = 'order-open';
58
- }
59
- };
60
- AdapterOrderOpenCommand = __decorate([
61
- topic_1.event,
62
- __metadata("design:paramtypes", [domain_1.Order])
63
- ], AdapterOrderOpenCommand);
64
- exports.AdapterOrderOpenCommand = AdapterOrderOpenCommand;
65
- let AdapterOrderCancelCommand = class AdapterOrderCancelCommand {
66
- constructor(order) {
67
- this.order = order;
68
- this.type = 'order-cancel';
69
- }
70
- };
71
- AdapterOrderCancelCommand = __decorate([
72
- topic_1.event,
73
- __metadata("design:paramtypes", [domain_1.Order])
74
- ], AdapterOrderCancelCommand);
75
- exports.AdapterOrderCancelCommand = AdapterOrderCancelCommand;
76
- let AdapterHistoryQuery = class AdapterHistoryQuery {
77
- constructor(instrument, timeframe, length) {
78
- this.instrument = instrument;
79
- this.timeframe = timeframe;
80
- this.length = length;
81
- this.type = 'history';
82
- }
83
- };
84
- AdapterHistoryQuery = __decorate([
85
- topic_1.event,
86
- __metadata("design:paramtypes", [domain_1.InstrumentSelector, Number, Number])
87
- ], AdapterHistoryQuery);
88
- exports.AdapterHistoryQuery = AdapterHistoryQuery;
89
- let AdapterFeedCommand = class AdapterFeedCommand {
90
- constructor(instrument, from, to, feed, progress) {
91
- this.instrument = instrument;
92
- this.from = from;
93
- this.to = to;
94
- this.feed = feed;
95
- this.progress = progress;
96
- this.type = 'feed';
97
- }
98
- };
99
- AdapterFeedCommand = __decorate([
100
- topic_1.event,
101
- __metadata("design:paramtypes", [domain_1.InstrumentSelector, Number, Number, storage_1.Feed, Function])
102
- ], AdapterFeedCommand);
103
- exports.AdapterFeedCommand = AdapterFeedCommand;
104
- //# sourceMappingURL=adapter.event.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.event.js","sourceRoot":"","sources":["../../src/adapter/adapter.event.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wCAAkC;AAElC,sCAAsD;AACtD,2CAAwC;AAGxC,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAAhC;QACE,SAAI,GAAG,OAAO,CAAC;IACjB,CAAC;CAAA,CAAA;AAFY,mBAAmB;IAD/B,aAAK;GACO,mBAAmB,CAE/B;AAFY,kDAAmB;AAKhC,IAAa,qBAAqB,GAAlC,MAAa,qBAAqB;IAAlC;QACE,SAAI,GAAG,SAAS,CAAC;IACnB,CAAC;CAAA,CAAA;AAFY,qBAAqB;IADjC,aAAK;GACO,qBAAqB,CAEjC;AAFY,sDAAqB;AAKlC,IAAa,qBAAqB,GAAlC,MAAa,qBAAqB;IAAlC;QACE,SAAI,GAAG,SAAS,CAAC;IACnB,CAAC;CAAA,CAAA;AAFY,qBAAqB;IADjC,aAAK;GACO,qBAAqB,CAEjC;AAFY,sDAAqB;AAKlC,IAAa,uBAAuB,GAApC,MAAa,uBAAuB;IAGlC,YAAqB,UAAqC;QAArC,eAAU,GAAV,UAAU,CAA2B;QAF1D,SAAI,GAAG,WAAW,CAAC;IAE0C,CAAC;CAC/D,CAAA;AAJY,uBAAuB;IADnC,aAAK;qCAI6B,KAAK;GAH3B,uBAAuB,CAInC;AAJY,0DAAuB;AAOpC,IAAa,uBAAuB,GAApC,MAAa,uBAAuB;IAGlC,YAAqB,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;QAFjC,SAAI,GAAG,YAAY,CAAC;IAEgB,CAAC;CACtC,CAAA;AAJY,uBAAuB;IADnC,aAAK;qCAIwB,cAAK;GAHtB,uBAAuB,CAInC;AAJY,0DAAuB;AAOpC,IAAa,yBAAyB,GAAtC,MAAa,yBAAyB;IAGpC,YAAqB,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;QAFjC,SAAI,GAAG,cAAc,CAAC;IAEc,CAAC;CACtC,CAAA;AAJY,yBAAyB;IADrC,aAAK;qCAIwB,cAAK;GAHtB,yBAAyB,CAIrC;AAJY,8DAAyB;AAOtC,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAG9B,YACW,UAA8B,EAC9B,SAAiB,EACjB,MAAc;QAFd,eAAU,GAAV,UAAU,CAAoB;QAC9B,cAAS,GAAT,SAAS,CAAQ;QACjB,WAAM,GAAN,MAAM,CAAQ;QALzB,SAAI,GAAG,SAAS,CAAC;IAMd,CAAC;CACL,CAAA;AARY,mBAAmB;IAD/B,aAAK;qCAKmB,2BAAkB;GAJ9B,mBAAmB,CAQ/B;AARY,kDAAmB;AAWhC,IAAa,kBAAkB,GAA/B,MAAa,kBAAkB;IAG7B,YACW,UAA8B,EAC9B,IAAe,EACf,EAAa,EACb,IAAU,EACV,QAAqC;QAJrC,eAAU,GAAV,UAAU,CAAoB;QAC9B,SAAI,GAAJ,IAAI,CAAW;QACf,OAAE,GAAF,EAAE,CAAW;QACb,SAAI,GAAJ,IAAI,CAAM;QACV,aAAQ,GAAR,QAAQ,CAA6B;QAPhD,SAAI,GAAG,MAAM,CAAC;IAQX,CAAC;CACL,CAAA;AAVY,kBAAkB;IAD9B,aAAK;qCAKmB,2BAAkB,kBAGxB,cAAI;GAPV,kBAAkB,CAU9B;AAVY,gDAAkB"}
@@ -1,64 +0,0 @@
1
- import { Feed } from '../storage';
2
- import { timestamp } from '../shared';
3
- import { InstrumentSelector, Order } from '../domain';
4
- import { event } from '../shared/topic';
5
-
6
- @event
7
- export class AdapterAwakeCommand {
8
- type = 'awake';
9
- }
10
-
11
- @event
12
- export class AdapterDisposeCommand {
13
- type = 'dispose';
14
- }
15
-
16
- @event
17
- export class AdapterAccountCommand {
18
- type = 'account';
19
- }
20
-
21
- @event
22
- export class AdapterSubscribeCommand {
23
- type = 'subscribe';
24
-
25
- constructor(readonly instrument: Array<InstrumentSelector>) {}
26
- }
27
-
28
- @event
29
- export class AdapterOrderOpenCommand {
30
- type = 'order-open';
31
-
32
- constructor(readonly order: Order) {}
33
- }
34
-
35
- @event
36
- export class AdapterOrderCancelCommand {
37
- type = 'order-cancel';
38
-
39
- constructor(readonly order: Order) {}
40
- }
41
-
42
- @event
43
- export class AdapterHistoryQuery {
44
- type = 'history';
45
-
46
- constructor(
47
- readonly instrument: InstrumentSelector,
48
- readonly timeframe: number,
49
- readonly length: number
50
- ) {}
51
- }
52
-
53
- @event
54
- export class AdapterFeedCommand {
55
- type = 'feed';
56
-
57
- constructor(
58
- readonly instrument: InstrumentSelector,
59
- readonly from: timestamp,
60
- readonly to: timestamp,
61
- readonly feed: Feed,
62
- readonly progress: (timestamp: number) => void
63
- ) {}
64
- }