@ray-js/robot-data-stream 0.0.10-beta-14 → 0.0.10-beta-16

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.
@@ -0,0 +1,3 @@
1
+ export declare const SUCTION_MAP: Record<string, number>;
2
+ export declare const CISTERN_MAP: Record<string, number>;
3
+ export declare const CLEAN_MODE_MAP: Record<string, number>;
@@ -0,0 +1,29 @@
1
+ // 吸力
2
+ export const SUCTION_MAP = {
3
+ closed: 0,
4
+ gentle: 1,
5
+ normal: 2,
6
+ strong: 3,
7
+ max: 4
8
+ };
9
+
10
+ // 水量
11
+ export const CISTERN_MAP = {
12
+ closed: 0,
13
+ low: 1,
14
+ middle: 2,
15
+ high: 3
16
+ };
17
+
18
+ // 清扫模式
19
+ export const CLEAN_MODE_MAP = {
20
+ // 扫拖
21
+ both_work: 0,
22
+ // 仅扫
23
+ only_sweep: 1,
24
+ // 仅拖
25
+ only_mop: 2,
26
+ // 先扫后拖
27
+ clean_before_mop: 3,
28
+ sweep_after_mop: 3
29
+ };
@@ -1,6 +1,21 @@
1
1
  import React from 'react';
2
- export declare function useMqtt(): never;
3
- export declare function MqttProvider({ children, devId }: {
2
+ export declare const SingletonContext: React.Context<{
3
+ useStructuredMode: boolean;
4
+ commandVersion: '0' | '1';
5
+ devices: {
6
+ common: any;
7
+ };
8
+ }>;
9
+ export declare function useMqtt(): {
10
+ useStructuredMode: boolean;
11
+ commandVersion: "0" | "1";
12
+ devices: {
13
+ common: any;
14
+ };
15
+ };
16
+ export declare function MqttProvider({ children, useStructuredMode, commandVersion, devices }: {
4
17
  children: any;
5
- devId: any;
18
+ useStructuredMode: any;
19
+ commandVersion: any;
20
+ devices: any;
6
21
  }): React.JSX.Element;
@@ -2,8 +2,9 @@ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
2
  import { get, isNil } from 'lodash-es';
3
3
  import React, { createContext, useCallback, useContext, useRef, useState } from 'react';
4
4
  import { emitter } from '../utils';
5
+
5
6
  // 创建一个Context
6
- const SingletonContext = /*#__PURE__*/createContext(null);
7
+ export const SingletonContext = /*#__PURE__*/createContext(null);
7
8
 
8
9
  // 创建一个自定义Hook来使用这个Context
9
10
  export function useMqtt() {
@@ -16,7 +17,9 @@ export function useMqtt() {
16
17
  export function MqttProvider(_ref) {
17
18
  let {
18
19
  children,
19
- devId
20
+ useStructuredMode,
21
+ commandVersion,
22
+ devices
20
23
  } = _ref;
21
24
  const [instance, setInstance] = useState(null);
22
25
  const onMqttMessageReceived = useCallback(data => {
@@ -36,6 +39,9 @@ export function MqttProvider(_ref) {
36
39
  // 使用ref确保实例只被创建一次
37
40
  const instanceRef = useRef(null);
38
41
  if (instanceRef.current === null) {
42
+ const {
43
+ devId
44
+ } = devices.common.getDevInfo();
39
45
  ty.device.registerMQTTProtocolListener({
40
46
  protocol: 65,
41
47
  success: () => {
@@ -48,8 +54,12 @@ export function MqttProvider(_ref) {
48
54
  }
49
55
  });
50
56
  instanceRef.current = {
51
- // 这里定义单例的状态和行为
52
- someState: 'initial state'
57
+ // 是否结构化数据(mqtt)
58
+ useStructuredMode,
59
+ // 指令协议版本(1byte or 4bytes)
60
+ commandVersion,
61
+ // sdm
62
+ devices
53
63
  };
54
64
  setInstance(instanceRef.current);
55
65
  }
@@ -34,6 +34,7 @@ export function normalResolve(reqType, taskId) {
34
34
  return;
35
35
  }
36
36
  clearTimeout(timer);
37
+ emitter.off(reqType);
37
38
  if (message.errCode === 0) {
38
39
  resolve(message);
39
40
  } else {
@@ -1,10 +1,10 @@
1
1
  interface DevInfoResponse {
2
- reqType: string;
3
- version: string;
2
+ reqType?: string;
3
+ version?: string;
4
4
  info: string;
5
- success: boolean;
6
- errCode: number;
7
- taskId: string;
5
+ success?: boolean;
6
+ errCode?: number;
7
+ taskId?: string;
8
8
  }
9
9
  export declare const useDevInfo: (devId: string) => {
10
10
  requestDevInfo: () => Promise<DevInfoResponse>;
@@ -1,23 +1,36 @@
1
+ import { useContext } from 'react';
1
2
  import { createSetCommonParams } from './createCommonOptions';
3
+ import { SingletonContext } from './mqttProvider';
2
4
  import { normalResolve } from './promise';
5
+ import { hexToUTF8 } from '@ray-js/robot-protocol';
3
6
  var DevInfoEnum = /*#__PURE__*/function (DevInfoEnum) {
4
7
  DevInfoEnum["query"] = "devInfoQry";
5
8
  return DevInfoEnum;
6
9
  }(DevInfoEnum || {});
7
10
  // 请求设备信息
8
11
  export const useDevInfo = devId => {
12
+ const {
13
+ useStructuredMode,
14
+ devices
15
+ } = useContext(SingletonContext);
9
16
  return {
10
17
  requestDevInfo: () => {
11
- const params = createSetCommonParams({
12
- deviceId: devId,
13
- reqType: DevInfoEnum.query,
14
- message: {}
18
+ if (useStructuredMode) {
19
+ const params = createSetCommonParams({
20
+ deviceId: devId,
21
+ reqType: DevInfoEnum.query,
22
+ message: {}
23
+ });
24
+ ty.device.sendMqttMessage(params);
25
+ const {
26
+ taskId
27
+ } = params.message;
28
+ return normalResolve(DevInfoEnum.query, taskId);
29
+ }
30
+ const dpDevInfo = devices.common.model.props.device_info;
31
+ return Promise.resolve({
32
+ info: hexToUTF8(dpDevInfo)
15
33
  });
16
- ty.device.sendMqttMessage(params);
17
- const {
18
- taskId
19
- } = params.message;
20
- return normalResolve(DevInfoEnum.query, taskId);
21
34
  }
22
35
  };
23
36
  };
@@ -20,7 +20,7 @@ type TSaveMap = () => Promise<{
20
20
  mapId: number;
21
21
  version: string;
22
22
  taskId: string;
23
- }>;
23
+ } | void>;
24
24
  /**
25
25
  * 自定义 Hook,用于管理历史地图
26
26
  * @param devId 设备ID
@@ -1,7 +1,10 @@
1
+ import { useContext } from 'react';
1
2
  import { deleteMultipleMapFile } from '../api/deleteMultipleMapFile';
2
3
  import { createSetCommonParams } from './createCommonOptions';
3
4
  import { normalResolve } from './promise';
4
5
  import { DeleteMapEnum, SaveCurrentMapEnum, UseMapEnum } from './type';
6
+ import { SingletonContext } from './mqttProvider';
7
+ import { encodeDeleteMap0x2c, encodeSaveMap0x2a, encodeUseMap0x2e } from '@ray-js/robot-protocol';
5
8
 
6
9
  // 删除历史地图函数类型定义
7
10
 
@@ -13,6 +16,10 @@ import { DeleteMapEnum, SaveCurrentMapEnum, UseMapEnum } from './type';
13
16
  * @returns 包含删除历史地图、更改当前地图和保存地图的函数
14
17
  */
15
18
  export const useHistoryMap = devId => {
19
+ const {
20
+ useStructuredMode,
21
+ devices
22
+ } = useContext(SingletonContext);
16
23
  /**
17
24
  * 删除历史地图
18
25
  * @param mapId 地图ID
@@ -38,54 +45,74 @@ export const useHistoryMap = devId => {
38
45
  return Promise.reject(new Error('mapId is required'));
39
46
  }
40
47
  await deleteMultipleMapFile(mapId, devId);
41
- const params = createSetCommonParams({
42
- deviceId: devId,
43
- reqType: DeleteMapEnum.set,
44
- message: {
45
- mapId
46
- }
48
+ if (useStructuredMode) {
49
+ const params = createSetCommonParams({
50
+ deviceId: devId,
51
+ reqType: DeleteMapEnum.set,
52
+ message: {
53
+ mapId
54
+ }
55
+ });
56
+ ty.device.sendMqttMessage(params);
57
+ const {
58
+ taskId
59
+ } = params.message;
60
+ return normalResolve(DeleteMapEnum.rst, taskId);
61
+ }
62
+ const command = encodeDeleteMap0x2c({
63
+ id: mapId
47
64
  });
48
- ty.device.sendMqttMessage(params);
49
- const {
50
- taskId
51
- } = params.message;
52
- return await normalResolve(DeleteMapEnum.rst, taskId);
65
+ devices.common.model.actions.command_trans.set(command);
66
+ return Promise.resolve();
53
67
  } catch (err) {
54
68
  return Promise.reject(err);
55
69
  }
56
70
  },
57
71
  changeCurrentMap: async (mapId, url) => {
58
72
  try {
59
- const sendData = {
60
- reqType: UseMapEnum.set,
73
+ if (useStructuredMode) {
74
+ const sendData = {
75
+ reqType: UseMapEnum.set,
76
+ mapId,
77
+ url,
78
+ urlLen: url.length
79
+ };
80
+ const params = createSetCommonParams({
81
+ deviceId: devId,
82
+ reqType: UseMapEnum.set,
83
+ message: sendData
84
+ });
85
+ ty.device.sendMqttMessage(params);
86
+ const {
87
+ taskId
88
+ } = params.message;
89
+ return normalResolve(UseMapEnum.query, taskId);
90
+ }
91
+ const command = encodeUseMap0x2e({
61
92
  mapId,
62
- url,
63
- urlLen: url.length
64
- };
65
- const params = createSetCommonParams({
66
- deviceId: devId,
67
- reqType: UseMapEnum.set,
68
- message: sendData
93
+ url
69
94
  });
70
- ty.device.sendMqttMessage(params);
71
- const {
72
- taskId
73
- } = params.message;
74
- return await normalResolve(UseMapEnum.query, taskId);
95
+ devices.common.model.actions.command_trans.set(command);
96
+ return Promise.resolve();
75
97
  } catch (err) {
76
98
  return Promise.reject(err);
77
99
  }
78
100
  },
79
101
  saveMap: () => {
80
- const params = createSetCommonParams({
81
- deviceId: devId,
82
- reqType: SaveCurrentMapEnum.set,
83
- message: {
84
- oper: 0
85
- }
86
- });
87
- ty.device.sendMqttMessage(params);
88
- return normalResolve(SaveCurrentMapEnum.query, params.message.taskId);
102
+ if (useStructuredMode) {
103
+ const params = createSetCommonParams({
104
+ deviceId: devId,
105
+ reqType: SaveCurrentMapEnum.set,
106
+ message: {
107
+ oper: 0
108
+ }
109
+ });
110
+ ty.device.sendMqttMessage(params);
111
+ return normalResolve(SaveCurrentMapEnum.query, params.message.taskId);
112
+ }
113
+ const command = encodeSaveMap0x2a(1);
114
+ devices.common.model.actions.command_trans.set(command);
115
+ return Promise.resolve();
89
116
  }
90
117
  };
91
118
  };
@@ -5,7 +5,7 @@ type TSetPartDivision = (points: Point[], roomId: number, origin: Point) => Prom
5
5
  reqType: string;
6
6
  version: string;
7
7
  taskId: string;
8
- }>;
8
+ } | void>;
9
9
  /**
10
10
  * 自定义 Hook,用于房间分隔
11
11
  * @param devId 设备ID
@@ -1,8 +1,11 @@
1
1
  // 房间分隔
2
+ import { useContext } from 'react';
2
3
  import { pointsToString } from '../utils';
3
4
  import { createSetCommonParams } from './createCommonOptions';
4
5
  import { normalResolve } from './promise';
5
6
  import { PartDivisionEnum } from './type';
7
+ import { SingletonContext } from './mqttProvider';
8
+ import { encodePartitionDivision0x1c } from '@ray-js/robot-protocol';
6
9
 
7
10
  // 设置房间分隔函数类型定义
8
11
 
@@ -12,6 +15,12 @@ import { PartDivisionEnum } from './type';
12
15
  * @returns 包含 setPartDivision 函数的对象
13
16
  */
14
17
  export const usePartDivision = devId => {
18
+ const {
19
+ useStructuredMode,
20
+ devices,
21
+ commandVersion
22
+ } = useContext(SingletonContext);
23
+
15
24
  /**
16
25
  * 设置房间分隔
17
26
  * @param points 分隔点数组,SDK方法抛出来的坐标直接传入即可
@@ -22,17 +31,27 @@ export const usePartDivision = devId => {
22
31
 
23
32
  return {
24
33
  setPartDivision: (points, roomId, origin) => {
25
- const pointStr = pointsToString(points, origin);
26
- const params = createSetCommonParams({
27
- deviceId: devId,
28
- reqType: PartDivisionEnum.set,
29
- message: {
30
- lines: [pointStr],
31
- ids: [roomId]
32
- }
34
+ if (useStructuredMode) {
35
+ const pointStr = pointsToString(points, origin);
36
+ const params = createSetCommonParams({
37
+ deviceId: devId,
38
+ reqType: PartDivisionEnum.set,
39
+ message: {
40
+ lines: [pointStr],
41
+ ids: [roomId]
42
+ }
43
+ });
44
+ ty.device.sendMqttMessage(params);
45
+ return normalResolve(PartDivisionEnum.query, params.message.taskId);
46
+ }
47
+ const command = encodePartitionDivision0x1c({
48
+ version: commandVersion,
49
+ origin,
50
+ points,
51
+ roomId
33
52
  });
34
- ty.device.sendMqttMessage(params);
35
- return normalResolve(PartDivisionEnum.query, params.message.taskId);
53
+ devices.common.model.actions.command_trans.set(command);
54
+ return Promise.resolve();
36
55
  }
37
56
  };
38
57
  };
@@ -4,7 +4,7 @@ type TSetPartMerge = (ids: number[]) => Promise<{
4
4
  reqType: string;
5
5
  version: string;
6
6
  taskId: string;
7
- }>;
7
+ } | void>;
8
8
  /**
9
9
  * 自定义 Hook,用于分区合并
10
10
  * @param devId 设备ID
@@ -1,9 +1,12 @@
1
1
  import "core-js/modules/esnext.iterator.constructor.js";
2
2
  import "core-js/modules/esnext.iterator.some.js";
3
3
  // 分区合并
4
+ import { useContext } from 'react';
4
5
  import { createSetCommonParams } from './createCommonOptions';
5
6
  import { normalResolve } from './promise';
6
7
  import { PartMergeEnum } from './type';
8
+ import { SingletonContext } from './mqttProvider';
9
+ import { encodePartitionMerge0x1e } from '@ray-js/robot-protocol';
7
10
 
8
11
  // 设置分区合并函数类型定义
9
12
 
@@ -13,6 +16,11 @@ import { PartMergeEnum } from './type';
13
16
  * @returns 包含 setPartMerge 函数的对象
14
17
  */
15
18
  export const usePartMerge = devId => {
19
+ const {
20
+ useStructuredMode,
21
+ devices,
22
+ commandVersion
23
+ } = useContext(SingletonContext);
16
24
  /**
17
25
  * 设置分区合并
18
26
  * @param ids 要合并的分区ID数组
@@ -27,15 +35,23 @@ export const usePartMerge = devId => {
27
35
  if (ids.some(id => typeof id !== 'number')) {
28
36
  return Promise.reject(new Error('ids must be an array of numbers'));
29
37
  }
30
- const params = createSetCommonParams({
31
- deviceId: devId,
32
- reqType: PartMergeEnum.set,
33
- message: {
34
- ids
35
- }
38
+ if (useStructuredMode) {
39
+ const params = createSetCommonParams({
40
+ deviceId: devId,
41
+ reqType: PartMergeEnum.set,
42
+ message: {
43
+ ids
44
+ }
45
+ });
46
+ ty.device.sendMqttMessage(params);
47
+ return normalResolve(PartMergeEnum.query, params.message.taskId);
48
+ }
49
+ const command = encodePartitionMerge0x1e({
50
+ version: commandVersion,
51
+ roomIds: ids
36
52
  });
37
- ty.device.sendMqttMessage(params);
38
- return normalResolve(PartMergeEnum.query, params.message.taskId);
53
+ devices.common.model.actions.command_trans.set(command);
54
+ return Promise.resolve();
39
55
  }
40
56
  };
41
57
  };
@@ -2,7 +2,13 @@ import md5 from 'crypto-js/md5';
2
2
  import { createSetCommonParams } from './createCommonOptions';
3
3
  import { normalResolve } from './promise';
4
4
  import { PasswordEnum } from './type';
5
+ import { useContext } from 'react';
6
+ import { SingletonContext } from './mqttProvider';
5
7
  export const usePassword = devId => {
8
+ const {
9
+ useStructuredMode
10
+ } = useContext(SingletonContext);
11
+
6
12
  // 请求密码状态
7
13
 
8
14
  // 设置密码
@@ -11,6 +17,7 @@ export const usePassword = devId => {
11
17
 
12
18
  return {
13
19
  requestPassword: () => {
20
+ if (!useStructuredMode) return null;
14
21
  const params = createSetCommonParams({
15
22
  deviceId: devId,
16
23
  reqType: PasswordEnum.query
@@ -42,7 +42,9 @@ type TSetQuiteHours = (params: {
42
42
  active: number;
43
43
  day: number;
44
44
  version?: string;
45
- }) => Promise<Response>;
45
+ }) => Promise<Response> | Promise<{
46
+ success: boolean;
47
+ }>;
46
48
  /**
47
49
  * 自定义 Hook,用于勿扰模式
48
50
  * @param devId 设备ID
@@ -2,9 +2,12 @@ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
3
  const _excluded = ["startTime", "endTime"];
4
4
  // 勿扰模式
5
+ import { useContext } from 'react';
5
6
  import { createSetCommonParams } from './createCommonOptions';
6
7
  import { normalResolve } from './promise';
7
8
  import { QuietHoursEnum } from './type';
9
+ import { SingletonContext } from './mqttProvider';
10
+ import { encodeDoNotDisturb0x32 } from '@ray-js/robot-protocol';
8
11
 
9
12
  // 设置勿扰模式函数类型定义
10
13
 
@@ -14,6 +17,11 @@ import { QuietHoursEnum } from './type';
14
17
  * @returns 包含 setQuiteHours 和 requestQuiteHours 函数的对象
15
18
  */
16
19
  export const useQuiteHours = devId => {
20
+ const {
21
+ useStructuredMode,
22
+ devices,
23
+ commandVersion
24
+ } = useContext(SingletonContext);
17
25
  /**
18
26
  * 请求勿扰模式数据
19
27
  * @returns Promise<{ time: string[]; day: number; active: number }> 响应结果
@@ -32,29 +40,42 @@ export const useQuiteHours = devId => {
32
40
  endTime
33
41
  } = message,
34
42
  others = _objectWithoutProperties(message, _excluded);
35
- if (!startTime || !endTime) {
36
- throw new Error('Invalid time');
43
+ if (useStructuredMode) {
44
+ if (!startTime || !endTime) {
45
+ throw new Error('Invalid time');
46
+ }
47
+ const {
48
+ hour: h0,
49
+ minute: m0
50
+ } = startTime;
51
+ const {
52
+ hour: h1,
53
+ minute: m1
54
+ } = endTime;
55
+ if (h0 > 23 || h0 < 0 || h1 > 23 || h1 < 0 || m0 > 59 || m0 < 0 || m1 > 59 || m1 < 0) {
56
+ throw new Error('Invalid time');
57
+ }
58
+ const params = createSetCommonParams({
59
+ deviceId: devId,
60
+ reqType: QuietHoursEnum.set,
61
+ message: _objectSpread({
62
+ time: [`${h0},${m0}`, `${h1},${m1}`]
63
+ }, others)
64
+ });
65
+ ty.device.sendMqttMessage(params);
66
+ return normalResolve(QuietHoursEnum.query, params.message.taskId);
37
67
  }
38
- const {
39
- hour: h0,
40
- minute: m0
41
- } = startTime;
42
- const {
43
- hour: h1,
44
- minute: m1
45
- } = endTime;
46
- if (h0 > 23 || h0 < 0 || h1 > 23 || h1 < 0 || m0 > 59 || m0 < 0 || m1 > 59 || m1 < 0) {
47
- throw new Error('Invalid time');
48
- }
49
- const params = createSetCommonParams({
50
- deviceId: devId,
51
- reqType: QuietHoursEnum.set,
52
- message: _objectSpread({
53
- time: [`${h0},${m0}`, `${h1},${m1}`]
54
- }, others)
68
+ const command = encodeDoNotDisturb0x32({
69
+ version: commandVersion,
70
+ startHour: startTime.hour,
71
+ startMinute: startTime.minute,
72
+ endHour: endTime.hour,
73
+ endMinute: endTime.minute
74
+ });
75
+ devices.common.model.actions.disturb_time_set.set(command);
76
+ return Promise.resolve({
77
+ success: true
55
78
  });
56
- ty.device.sendMqttMessage(params);
57
- return normalResolve(QuietHoursEnum.query, params.message.taskId);
58
79
  },
59
80
  requestQuiteHours: () => {
60
81
  const params = createSetCommonParams({
@@ -4,7 +4,7 @@ type TSetResetMap = () => Promise<{
4
4
  reqType: string;
5
5
  version: string;
6
6
  taskId: string;
7
- }>;
7
+ } | void>;
8
8
  export declare const useResetMap: (devId: string) => {
9
9
  setResetMap: TSetResetMap;
10
10
  };
@@ -1,17 +1,31 @@
1
+ import { useContext } from 'react';
1
2
  import { createSetCommonParams } from './createCommonOptions';
2
3
  import { normalResolve } from './promise';
3
4
  import { ResetCurrMapEnum } from './type';
5
+ import { SingletonContext } from './mqttProvider';
6
+ import { encodeResetMap0x42 } from '@ray-js/robot-protocol';
4
7
  export const useResetMap = devId => {
8
+ const {
9
+ useStructuredMode,
10
+ devices,
11
+ commandVersion
12
+ } = useContext(SingletonContext);
5
13
  // 重置地图
6
14
 
7
15
  return {
8
16
  setResetMap: () => {
9
- const params = createSetCommonParams({
10
- deviceId: devId,
11
- reqType: ResetCurrMapEnum.set
12
- });
13
- ty.device.sendMqttMessage(params);
14
- return normalResolve(ResetCurrMapEnum.query, params.message.taskId);
17
+ if (useStructuredMode) {
18
+ const params = createSetCommonParams({
19
+ deviceId: devId,
20
+ reqType: ResetCurrMapEnum.set
21
+ });
22
+ ty.device.sendMqttMessage(params);
23
+ return normalResolve(ResetCurrMapEnum.query, params.message.taskId);
24
+ }
25
+ devices.common.model.actions.command_trans.set(encodeResetMap0x42({
26
+ version: commandVersion
27
+ }));
28
+ return Promise.resolve();
15
29
  }
16
30
  };
17
31
  };
@@ -2,13 +2,20 @@ import { isArray } from 'lodash-es';
2
2
  import { createSetCommonParams } from './createCommonOptions';
3
3
  import { normalResolve } from './promise';
4
4
  import { RoomPropertyEnum } from './type';
5
+ import { useContext } from 'react';
6
+ import { SingletonContext } from './mqttProvider';
5
7
  export const useRoomProperty = devId => {
8
+ const {
9
+ useStructuredMode
10
+ } = useContext(SingletonContext);
11
+
6
12
  // 请求房间属性
7
13
 
8
14
  // 设置房间属性
9
15
 
10
16
  return {
11
17
  requestRoomProperty: () => {
18
+ if (!useStructuredMode) return null;
12
19
  const params = createSetCommonParams({
13
20
  deviceId: devId,
14
21
  reqType: RoomPropertyEnum.query
@@ -11,6 +11,6 @@ interface Schedule {
11
11
  type Response = BaseResponse & Schedule;
12
12
  export declare const useSchedule: (devId: string) => {
13
13
  requestSchedule: () => Promise<Response>;
14
- setSchedule: (message: Schedule) => Promise<Response>;
14
+ setSchedule: (message: Schedule) => Promise<Response | void>;
15
15
  };
16
16
  export {};