incyclist-devices 2.0.34 → 2.0.36

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 (54) hide show
  1. package/lib/antv2/modes/ant-fe-adv-st-mode.d.ts +2 -2
  2. package/lib/antv2/modes/ant-fe-erg-mode.d.ts +2 -2
  3. package/lib/antv2/modes/ant-fe-st-mode.d.ts +2 -2
  4. package/lib/base/adpater.d.ts +2 -1
  5. package/lib/base/adpater.js +7 -6
  6. package/lib/interfaces.d.ts +1 -1
  7. package/lib/modes/ble-erg-mode.d.ts +2 -2
  8. package/lib/modes/ble-st-mode.d.ts +2 -2
  9. package/lib/modes/cycling-mode.d.ts +7 -7
  10. package/lib/modes/power-base.d.ts +3 -3
  11. package/lib/modes/power-base.js +3 -2
  12. package/lib/modes/power-meter.d.ts +2 -2
  13. package/lib/serial/comms.d.ts +62 -0
  14. package/lib/serial/comms.js +280 -0
  15. package/lib/serial/daum/DaumAdapter.d.ts +13 -8
  16. package/lib/serial/daum/DaumAdapter.js +49 -12
  17. package/lib/serial/daum/ERGCyclingMode.d.ts +2 -2
  18. package/lib/serial/daum/ERGCyclingMode.js +1 -1
  19. package/lib/serial/daum/SmartTrainerCyclingMode.d.ts +3 -2
  20. package/lib/serial/daum/SmartTrainerCyclingMode.js +10 -5
  21. package/lib/serial/daum/classic/adapter.d.ts +4 -6
  22. package/lib/serial/daum/classic/adapter.js +5 -23
  23. package/lib/serial/daum/classic/comms.d.ts +33 -65
  24. package/lib/serial/daum/classic/comms.js +148 -332
  25. package/lib/serial/daum/classic/mock.js +5 -3
  26. package/lib/serial/daum/classic/modes/daum-classic.d.ts +2 -2
  27. package/lib/serial/daum/classic/modes/daum-classic.js +1 -1
  28. package/lib/serial/daum/classic/types.d.ts +59 -0
  29. package/lib/serial/daum/classic/types.js +2 -0
  30. package/lib/serial/daum/classic/utils.d.ts +11 -10
  31. package/lib/serial/daum/classic/utils.js +33 -68
  32. package/lib/serial/daum/premium/adapter.d.ts +4 -7
  33. package/lib/serial/daum/premium/adapter.js +7 -30
  34. package/lib/serial/daum/premium/comms.d.ts +28 -105
  35. package/lib/serial/daum/premium/comms.js +262 -466
  36. package/lib/serial/daum/premium/consts.d.ts +6 -0
  37. package/lib/serial/daum/premium/consts.js +9 -0
  38. package/lib/serial/daum/premium/mock.d.ts +32 -1
  39. package/lib/serial/daum/premium/mock.js +131 -8
  40. package/lib/serial/daum/premium/modes/daum-classic.d.ts +2 -2
  41. package/lib/serial/daum/premium/modes/daum-classic.js +1 -1
  42. package/lib/serial/daum/premium/types.d.ts +35 -1
  43. package/lib/serial/daum/premium/types.js +29 -0
  44. package/lib/serial/daum/premium/utils.d.ts +11 -18
  45. package/lib/serial/daum/premium/utils.js +25 -18
  46. package/lib/serial/serial-interface.js +17 -10
  47. package/lib/types/adapter.d.ts +2 -0
  48. package/lib/types/device.d.ts +11 -0
  49. package/lib/types/route.d.ts +0 -5
  50. package/lib/types/route.js +0 -7
  51. package/lib/utils/calculations.js +1 -5
  52. package/lib/utils/utils.d.ts +2 -1
  53. package/lib/utils/utils.js +39 -3
  54. package/package.json +3 -2
@@ -12,13 +12,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.AbstractDaumAdapter = void 0;
15
16
  const ERGCyclingMode_1 = __importDefault(require("./ERGCyclingMode"));
16
17
  const SmartTrainerCyclingMode_1 = __importDefault(require("./SmartTrainerCyclingMode"));
17
18
  const DaumPowerMeterCyclingMode_1 = __importDefault(require("./DaumPowerMeterCyclingMode"));
18
19
  const utils_1 = require("../../utils/utils");
19
20
  const adapter_1 = require("../adapter");
20
21
  const capabilities_1 = require("../../types/capabilities");
21
- class DaumAdapterBase extends adapter_1.SerialIncyclistDevice {
22
+ class AbstractDaumAdapter extends adapter_1.SerialIncyclistDevice {
23
+ }
24
+ exports.AbstractDaumAdapter = AbstractDaumAdapter;
25
+ class DaumAdapter extends AbstractDaumAdapter {
22
26
  constructor(settings, props) {
23
27
  super(settings, props);
24
28
  this.requests = [];
@@ -107,7 +111,7 @@ class DaumAdapterBase extends adapter_1.SerialIncyclistDevice {
107
111
  return true;
108
112
  }
109
113
  isSame(device) {
110
- if (!(device instanceof DaumAdapterBase))
114
+ if (!(device instanceof DaumAdapter))
111
115
  return false;
112
116
  const adapter = device;
113
117
  return (adapter.getName() === this.getName() && adapter.getPort() === this.getPort());
@@ -135,6 +139,26 @@ class DaumAdapterBase extends adapter_1.SerialIncyclistDevice {
135
139
  const settings = this.getCyclingMode().getSettings();
136
140
  this.setCyclingMode(name, settings);
137
141
  }
142
+ pause() {
143
+ const _super = Object.create(null, {
144
+ pause: { get: () => super.pause }
145
+ });
146
+ return __awaiter(this, void 0, void 0, function* () {
147
+ const paused = yield _super.pause.call(this);
148
+ this.bike.pauseLogging();
149
+ return paused;
150
+ });
151
+ }
152
+ resume() {
153
+ const _super = Object.create(null, {
154
+ resume: { get: () => super.resume }
155
+ });
156
+ return __awaiter(this, void 0, void 0, function* () {
157
+ const resumed = yield _super.resume.call(this);
158
+ this.bike.resumeLogging();
159
+ return resumed;
160
+ });
161
+ }
138
162
  start(props) {
139
163
  throw new Error('Method not implemented.');
140
164
  }
@@ -192,9 +216,21 @@ class DaumAdapterBase extends adapter_1.SerialIncyclistDevice {
192
216
  this.logger.logEvent(event);
193
217
  const w = global.window;
194
218
  if (w === null || w === void 0 ? void 0 : w.DEVICE_DEBUG) {
195
- console.log('~~~ Serial', event);
219
+ console.log(`~~~ ${this.logger.getName()}`, event);
196
220
  }
197
221
  }
222
+ reconnect() {
223
+ return __awaiter(this, void 0, void 0, function* () {
224
+ try {
225
+ yield this.bike.close();
226
+ const connected = yield this.bike.connect();
227
+ return connected;
228
+ }
229
+ catch (err) {
230
+ return false;
231
+ }
232
+ });
233
+ }
198
234
  stop() {
199
235
  if (this.stopped)
200
236
  return Promise.resolve(true);
@@ -243,15 +279,14 @@ class DaumAdapterBase extends adapter_1.SerialIncyclistDevice {
243
279
  this.updateBusy = true;
244
280
  this.getCurrentBikeData()
245
281
  .then(bikeData => {
246
- const incyclistData = this.updateData(this.cyclingData, bikeData);
282
+ const incyclistData = this.updateData(bikeData);
247
283
  const data = this.transformData(incyclistData);
248
284
  this.updateBusy = false;
249
285
  this.emitData(data);
250
286
  })
251
287
  .catch(err => {
252
288
  this.logEvent({ message: 'bike update error', error: err.message, stack: err.stack });
253
- const { isPedalling, power, pedalRpm, speed, distanceInternal, heartrate, slope } = this.cyclingData;
254
- const incyclistData = this.updateData(this.cyclingData, { isPedalling, power, pedalRpm, speed, distanceInternal, heartrate, slope });
289
+ const incyclistData = this.updateData(this.cyclingData);
255
290
  this.transformData(incyclistData);
256
291
  this.updateBusy = false;
257
292
  });
@@ -297,16 +332,18 @@ class DaumAdapterBase extends adapter_1.SerialIncyclistDevice {
297
332
  yield this.update();
298
333
  });
299
334
  }
300
- updateData(prev, bikeData) {
335
+ updateData(bikeData) {
301
336
  let data = {};
302
- data.isPedalling = bikeData.cadence > 0;
337
+ data.isPedalling = bikeData.pedalRpm > 0;
303
338
  data.power = bikeData.power;
304
- data.pedalRpm = bikeData.cadence;
339
+ data.pedalRpm = bikeData.pedalRpm;
305
340
  data.speed = bikeData.speed;
306
341
  data.heartrate = bikeData.heartrate;
307
342
  data.distanceInternal = bikeData.distanceInternal;
308
- data.gear = bikeData.gear;
309
- data.time = bikeData.time;
343
+ if (bikeData.gear)
344
+ data.gear = bikeData.gear;
345
+ if (bikeData.time)
346
+ data.time = bikeData.time;
310
347
  if (bikeData.slope)
311
348
  data.slope = bikeData.slope;
312
349
  this.cyclingData = this.getCyclingMode().updateData(data);
@@ -396,4 +433,4 @@ class DaumAdapterBase extends adapter_1.SerialIncyclistDevice {
396
433
  throw new Error('Method not implemented.');
397
434
  }
398
435
  }
399
- exports.default = DaumAdapterBase;
436
+ exports.default = DaumAdapter;
@@ -1,6 +1,6 @@
1
1
  import CyclingMode, { CyclingModeProperty, IncyclistBikeData, UpdateRequest } from "../../modes/cycling-mode";
2
- import DaumAdapter from "./DaumAdapter";
3
2
  import PowerBasedCyclingModeBase from "../../modes/power-base";
3
+ import { ControllableDeviceAdapter } from "../..";
4
4
  export type ERGEvent = {
5
5
  rpmUpdated?: boolean;
6
6
  gearUpdated?: boolean;
@@ -14,7 +14,7 @@ export default class ERGCyclingMode extends PowerBasedCyclingModeBase implements
14
14
  cassette: number[];
15
15
  event: ERGEvent;
16
16
  static isERG: boolean;
17
- constructor(adapter: DaumAdapter, props?: any);
17
+ constructor(adapter: ControllableDeviceAdapter, props?: any);
18
18
  getName(): string;
19
19
  getDescription(): string;
20
20
  getProperties(): CyclingModeProperty[];
@@ -183,7 +183,7 @@ class ERGCyclingMode extends power_base_1.default {
183
183
  }
184
184
  }
185
185
  catch (err) {
186
- this.logger.logEvent({ message: 'error', fn: 'updateData()', error: err.message || err });
186
+ this.logger.logEvent({ message: 'error', fn: 'updateData()', error: err.message || err, stack: err.stack });
187
187
  }
188
188
  this.logger.logEvent({ message: "updateData result", data, bikeData, prevRequest, prevSpeed });
189
189
  this.data = data;
@@ -1,6 +1,6 @@
1
1
  import { EventLogger } from "gd-eventlog";
2
2
  import CyclingMode, { CyclingModeProperty, IncyclistBikeData, Settings, UpdateRequest, CyclingModeBase } from "../../modes/cycling-mode";
3
- import DaumAdapter from "./DaumAdapter";
3
+ import { ControllableDeviceAdapter } from "../..";
4
4
  interface STUpdateRequest extends UpdateRequest {
5
5
  calculatedPower?: number;
6
6
  delta?: number;
@@ -25,11 +25,12 @@ export default class SmartTrainerCyclingMode extends CyclingModeBase implements
25
25
  chain: number[];
26
26
  cassette: number[];
27
27
  event: STEvent;
28
- constructor(adapter: DaumAdapter, props?: Settings);
28
+ constructor(adapter: ControllableDeviceAdapter, props?: Settings);
29
29
  getName(): string;
30
30
  getDescription(): string;
31
31
  getProperties(): CyclingModeProperty[];
32
32
  getProperty(name: string): CyclingModeProperty;
33
+ getWeight(): number;
33
34
  getBikeInitRequest(): STUpdateRequest;
34
35
  useGearSimulation(): boolean;
35
36
  getMinMaxGears(source: string): [number, number];
@@ -7,6 +7,7 @@ exports.direction = void 0;
7
7
  const gd_eventlog_1 = require("gd-eventlog");
8
8
  const cycling_mode_1 = require("../../modes/cycling-mode");
9
9
  const calculations_1 = __importDefault(require("../../utils/calculations"));
10
+ const utils_1 = require("./classic/utils");
10
11
  const SEC_DELAY = 3;
11
12
  const config = {
12
13
  name: "SmartTrainer",
@@ -30,7 +31,7 @@ class SmartTrainerCyclingMode extends cycling_mode_1.CyclingModeBase {
30
31
  super(adapter, props);
31
32
  this.prevUpdateTS = 0;
32
33
  this.event = {};
33
- this.logger = adapter ? adapter.logger : undefined;
34
+ this.logger = adapter ? adapter.getLogger() : undefined;
34
35
  if (!this.logger)
35
36
  this.logger = new gd_eventlog_1.EventLogger('SmartTrainer');
36
37
  }
@@ -46,6 +47,11 @@ class SmartTrainerCyclingMode extends cycling_mode_1.CyclingModeBase {
46
47
  getProperty(name) {
47
48
  return config.properties.find(p => p.name === name);
48
49
  }
50
+ getWeight() {
51
+ const a = this.adapter;
52
+ const m = (a) ? a.getWeight() : utils_1.DEFAULT_BIKE_WEIGHT + utils_1.DEFAULT_USER_WEIGHT;
53
+ return m;
54
+ }
49
55
  getBikeInitRequest() {
50
56
  const startPower = this.getSetting('startPower');
51
57
  return { targetPower: startPower };
@@ -220,8 +226,7 @@ class SmartTrainerCyclingMode extends cycling_mode_1.CyclingModeBase {
220
226
  this.event.gearUpdate = gear > prevData.gear ? direction.up : direction.down;
221
227
  if (rpm !== prevData.pedalRpm)
222
228
  this.event.rpmUpdate = true;
223
- const adapter = this.adapter;
224
- let m = adapter.getWeight();
229
+ let m = this.getWeight();
225
230
  let distanceInternal = prevData.distanceInternal || 0;
226
231
  let distance = (distanceInternal / 100);
227
232
  let ts = Date.now();
@@ -268,7 +273,7 @@ class SmartTrainerCyclingMode extends cycling_mode_1.CyclingModeBase {
268
273
  const prevRequest = this.prevRequest || {};
269
274
  const minPower = this.getSetting('minPower');
270
275
  const bikeType = this.getSetting('bikeType').toLowerCase();
271
- const m = this.adapter.getWeight();
276
+ const m = this.getWeight();
272
277
  let speed = bikeSpeed;
273
278
  const Ekin = (m, speed) => {
274
279
  const v = speed / 3.6;
@@ -307,7 +312,7 @@ class SmartTrainerCyclingMode extends cycling_mode_1.CyclingModeBase {
307
312
  const defaultPower = this.getSetting('startPower');
308
313
  const minPower = this.getSetting('minPower');
309
314
  const bikeType = this.getSetting('bikeType').toLowerCase();
310
- const m = this.adapter.getWeight();
315
+ const m = this.getWeight();
311
316
  const prevData = this.data || {};
312
317
  const slope = parseFloat((request.slope === undefined ? prevData.slope || 0 : request.slope).toFixed(1));
313
318
  let target = request.targetPower || defaultPower;
@@ -1,4 +1,4 @@
1
- import CyclingMode from '../../../modes/cycling-mode';
1
+ import CyclingMode, { IncyclistBikeData } from '../../../modes/cycling-mode';
2
2
  import DaumAdapter from '../DaumAdapter';
3
3
  import { DeviceProperties } from '../../../types/device';
4
4
  import { SerialDeviceSettings } from '../../adapter';
@@ -6,14 +6,14 @@ import SerialInterface from '../../serial-interface';
6
6
  export interface DaumClassicDeviceProperties extends DeviceProperties {
7
7
  gear?: number;
8
8
  }
9
- export default class DaumClassicAdapter extends DaumAdapter {
9
+ export default class DaumClassicAdapter extends DaumAdapter<SerialDeviceSettings, DaumClassicDeviceProperties> {
10
10
  static NAME: string;
11
11
  name: string;
12
12
  id: string;
13
13
  started: boolean;
14
14
  startPromise: Promise<unknown>;
15
15
  checkPromise: Promise<boolean>;
16
- constructor(settings: SerialDeviceSettings, props?: DeviceProperties);
16
+ constructor(settings: SerialDeviceSettings, props?: DaumClassicDeviceProperties);
17
17
  setID(id: any): void;
18
18
  getID(): string;
19
19
  getName(): string;
@@ -25,11 +25,9 @@ export default class DaumClassicAdapter extends DaumAdapter {
25
25
  getSerialInterface(): SerialInterface;
26
26
  check(): Promise<boolean>;
27
27
  performCheck(): Promise<boolean>;
28
- pause(): Promise<boolean>;
29
- resume(): Promise<boolean>;
30
28
  startRide(props?: DaumClassicDeviceProperties): Promise<boolean>;
31
29
  start(props?: DaumClassicDeviceProperties): Promise<boolean>;
32
30
  launch(props: DaumClassicDeviceProperties, isRelaunch?: boolean): Promise<boolean>;
33
31
  performStart(props?: DaumClassicDeviceProperties, isRelaunch?: boolean): Promise<unknown>;
34
- getCurrentBikeData(): any;
32
+ getCurrentBikeData(): Promise<IncyclistBikeData>;
35
33
  }
@@ -144,26 +144,6 @@ class DaumClassicAdapter extends DaumAdapter_1.default {
144
144
  }));
145
145
  });
146
146
  }
147
- pause() {
148
- const _super = Object.create(null, {
149
- pause: { get: () => super.pause }
150
- });
151
- return __awaiter(this, void 0, void 0, function* () {
152
- const paused = yield _super.pause.call(this);
153
- this.bike.pauseLogging();
154
- return paused;
155
- });
156
- }
157
- resume() {
158
- const _super = Object.create(null, {
159
- resume: { get: () => super.resume }
160
- });
161
- return __awaiter(this, void 0, void 0, function* () {
162
- const resumed = yield _super.resume.call(this);
163
- this.bike.resumeLogging();
164
- return resumed;
165
- });
166
- }
167
147
  startRide(props = {}) {
168
148
  return __awaiter(this, void 0, void 0, function* () {
169
149
  this.logEvent({ message: 'relaunch of device' });
@@ -286,9 +266,11 @@ class DaumClassicAdapter extends DaumAdapter_1.default {
286
266
  }), 5, 1000);
287
267
  }
288
268
  getCurrentBikeData() {
289
- if (this.stopped)
290
- return;
291
- return this.getBike().runData();
269
+ return __awaiter(this, void 0, void 0, function* () {
270
+ if (this.stopped)
271
+ return;
272
+ return this.getBike().runData();
273
+ });
292
274
  }
293
275
  }
294
276
  DaumClassicAdapter.NAME = PROTOCOL_NAME;
@@ -1,67 +1,35 @@
1
- import { EventLogger } from 'gd-eventlog';
2
- import { Queue } from '../../../utils/utils';
3
1
  import { User } from '../../../types/user';
4
- import { SerialInterface, SerialPortProvider } from '../..';
5
- import { SerialCommProps } from '../../comm';
6
- type SuccessCallbackFn = (data: any) => void;
7
- type ErrorCallbackFn = (status: number, error: any) => void;
8
- interface CommandInstructions {
9
- logStr: string;
10
- payload: Array<number>;
11
- expected: number;
12
- callback: SuccessCallbackFn;
13
- callbackErr: ErrorCallbackFn;
14
- options?: any;
2
+ import { ClassicBikeResponse, DaumClassicCommsState, DaumClassicRequest, DaumClassicResponse, GetVersionReponse, ProgResponse, SetGearRepsonse, SetPowerRepsonse, SetProgResponse, SetSlopeRepsonse, checkCockpitReponse } from './types';
3
+ import SerialPortComms from '../../comms';
4
+ import { DeviceType } from '../../../types/device';
5
+ import { IncyclistBikeData } from '../../..';
6
+ export default class Daum8008 extends SerialPortComms<DaumClassicCommsState, DaumClassicRequest, DaumClassicResponse> {
7
+ validatePath(path: string): string;
8
+ getDefaultLoggerName(): string;
9
+ onConnected(): void;
10
+ getTimeoutValue(): number;
11
+ initForResponse(expected: any): Promise<void>;
12
+ waitForResponse(): Promise<DaumClassicResponse>;
13
+ doSend(expected: number, payload: Uint8Array): Promise<DaumClassicResponse>;
14
+ send(request: DaumClassicRequest): Promise<DaumClassicResponse>;
15
+ sendCommand(logString: string, command: number[], expected: any): Promise<Uint8Array>;
16
+ checkCockpit(bikeNo?: number): Promise<checkCockpitReponse>;
17
+ getAddress(): Promise<ClassicBikeResponse>;
18
+ getVersion(bikeNo?: number): Promise<GetVersionReponse>;
19
+ resetDevice(bikeNo?: number): Promise<ClassicBikeResponse>;
20
+ startProg(bikeNo?: number): Promise<ProgResponse>;
21
+ stopProg(bikeNo?: number): Promise<ProgResponse>;
22
+ setProg(progNo?: number, bikeNo?: number): Promise<SetProgResponse>;
23
+ setBikeType(bikeType: DeviceType, bikeNo?: number): Promise<ClassicBikeResponse>;
24
+ setPerson(user?: User, bikeNo?: number): Promise<{
25
+ bike: number;
26
+ age: number;
27
+ gender: number;
28
+ length: number;
29
+ weight: number;
30
+ }>;
31
+ runData(bikeNo?: number): Promise<IncyclistBikeData>;
32
+ setGear(gear: number, bikeNo?: number): Promise<SetGearRepsonse>;
33
+ setPower(power: number, bikeNo?: number): Promise<SetPowerRepsonse>;
34
+ setSlope(slope: number, bikeNo?: number): Promise<SetSlopeRepsonse>;
15
35
  }
16
- export default class Daum8008 {
17
- logger: EventLogger;
18
- portName: string;
19
- sp: any;
20
- error: Error;
21
- opening: boolean;
22
- connected: boolean;
23
- closing: boolean;
24
- closed: boolean;
25
- cmdBusy: boolean;
26
- queue: Queue<CommandInstructions>;
27
- bikeCmdWorker: any;
28
- cmdStart: number;
29
- cmdCurrent: any;
30
- isLoggingPaused: boolean;
31
- spp: SerialPortProvider;
32
- serial: SerialInterface;
33
- _timeoutSend: number;
34
- constructor(props: SerialCommProps);
35
- static setSerialPort(spClass: any): void;
36
- static getClassName(): string;
37
- getType(): string;
38
- getPort(): string;
39
- isConnected(): boolean;
40
- pauseLogging(): void;
41
- resumeLogging(): void;
42
- logEvent(e: any): void;
43
- connect(): Promise<boolean>;
44
- close(): Promise<void>;
45
- flush(): Promise<void>;
46
- onPortClose(): Promise<void>;
47
- onPortError(err: any): void;
48
- startWorker(): void;
49
- stopWorker(): void;
50
- sendDaum8008CommandfromQueue(): any;
51
- sendDaum8008Command(logStr: any, payload: any, expected: any, callback?: any, callbackErr?: any, options?: any): void;
52
- send(cmdInfo: any): void;
53
- checkCockpit(bikeNo?: number): Promise<unknown>;
54
- getAddress(): Promise<unknown>;
55
- getVersion(bikeNo?: number): Promise<unknown>;
56
- resetDevice(bikeNo?: number): Promise<unknown>;
57
- startProg(bikeNo?: number): Promise<unknown>;
58
- stopProg(bikeNo?: number): Promise<unknown>;
59
- setProg(progNo?: number, bikeNo?: number): Promise<unknown>;
60
- setBikeType(bikeType: any, bikeNo?: number): Promise<unknown>;
61
- setPerson(user?: User, bikeNo?: number): Promise<unknown>;
62
- runData(bikeNo?: number): Promise<unknown>;
63
- setGear(gear: any, bikeNo?: number): Promise<unknown>;
64
- setPower(power: any, bikeNo?: number): Promise<unknown>;
65
- setSlope(slope: any, bikeNo?: number): Promise<unknown>;
66
- }
67
- export {};