tjbot-ce 3.0.1

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 (224) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +382 -0
  3. package/dist/camera/camera.d.ts +62 -0
  4. package/dist/camera/camera.d.ts.map +1 -0
  5. package/dist/camera/camera.js +155 -0
  6. package/dist/camera/camera.js.map +1 -0
  7. package/dist/camera/index.d.ts +18 -0
  8. package/dist/camera/index.d.ts.map +1 -0
  9. package/dist/camera/index.js +18 -0
  10. package/dist/camera/index.js.map +1 -0
  11. package/dist/config/config-types.d.ts +75 -0
  12. package/dist/config/config-types.d.ts.map +1 -0
  13. package/dist/config/config-types.generated.d.ts +495 -0
  14. package/dist/config/config-types.generated.d.ts.map +1 -0
  15. package/dist/config/config-types.generated.js +2 -0
  16. package/dist/config/config-types.generated.js.map +1 -0
  17. package/dist/config/config-types.js +175 -0
  18. package/dist/config/config-types.js.map +1 -0
  19. package/dist/config/index.d.ts +20 -0
  20. package/dist/config/index.d.ts.map +1 -0
  21. package/dist/config/index.js +19 -0
  22. package/dist/config/index.js.map +1 -0
  23. package/dist/config/tjbot-config.d.ts +98 -0
  24. package/dist/config/tjbot-config.d.ts.map +1 -0
  25. package/dist/config/tjbot-config.js +309 -0
  26. package/dist/config/tjbot-config.js.map +1 -0
  27. package/dist/config/vendor/colors.yaml +61 -0
  28. package/dist/config/vendor/model-registry.yaml +275 -0
  29. package/dist/config/vendor/tjbot-config.schema.yaml +792 -0
  30. package/dist/config/vendor/tjbot.default.toml +452 -0
  31. package/dist/led/index.d.ts +20 -0
  32. package/dist/led/index.d.ts.map +1 -0
  33. package/dist/led/index.js +20 -0
  34. package/dist/led/index.js.map +1 -0
  35. package/dist/led/led-common-anode.d.ts +38 -0
  36. package/dist/led/led-common-anode.d.ts.map +1 -0
  37. package/dist/led/led-common-anode.js +79 -0
  38. package/dist/led/led-common-anode.js.map +1 -0
  39. package/dist/led/led-neopixel-spi.d.ts +60 -0
  40. package/dist/led/led-neopixel-spi.d.ts.map +1 -0
  41. package/dist/led/led-neopixel-spi.js +216 -0
  42. package/dist/led/led-neopixel-spi.js.map +1 -0
  43. package/dist/led/led-neopixel-ws281x.js +186 -0
  44. package/dist/led/led-neopixel.d.ts +57 -0
  45. package/dist/led/led-neopixel.d.ts.map +1 -0
  46. package/dist/led/led-neopixel.js +235 -0
  47. package/dist/led/led-neopixel.js.map +1 -0
  48. package/dist/microphone/index.d.ts +18 -0
  49. package/dist/microphone/index.d.ts.map +1 -0
  50. package/dist/microphone/index.js +18 -0
  51. package/dist/microphone/index.js.map +1 -0
  52. package/dist/microphone/microphone.d.ts +65 -0
  53. package/dist/microphone/microphone.d.ts.map +1 -0
  54. package/dist/microphone/microphone.js +179 -0
  55. package/dist/microphone/microphone.js.map +1 -0
  56. package/dist/rpi-drivers/index.d.ts +22 -0
  57. package/dist/rpi-drivers/index.d.ts.map +1 -0
  58. package/dist/rpi-drivers/index.js +22 -0
  59. package/dist/rpi-drivers/index.js.map +1 -0
  60. package/dist/rpi-drivers/rpi-detect.d.ts +24 -0
  61. package/dist/rpi-drivers/rpi-detect.d.ts.map +1 -0
  62. package/dist/rpi-drivers/rpi-detect.js +49 -0
  63. package/dist/rpi-drivers/rpi-detect.js.map +1 -0
  64. package/dist/rpi-drivers/rpi-driver.d.ts +116 -0
  65. package/dist/rpi-drivers/rpi-driver.d.ts.map +1 -0
  66. package/dist/rpi-drivers/rpi-driver.js +261 -0
  67. package/dist/rpi-drivers/rpi-driver.js.map +1 -0
  68. package/dist/rpi-drivers/rpi3-driver.d.ts +47 -0
  69. package/dist/rpi-drivers/rpi3-driver.d.ts.map +1 -0
  70. package/dist/rpi-drivers/rpi3-driver.js +145 -0
  71. package/dist/rpi-drivers/rpi3-driver.js.map +1 -0
  72. package/dist/rpi-drivers/rpi4-driver.d.ts +35 -0
  73. package/dist/rpi-drivers/rpi4-driver.d.ts.map +1 -0
  74. package/dist/rpi-drivers/rpi4-driver.js +101 -0
  75. package/dist/rpi-drivers/rpi4-driver.js.map +1 -0
  76. package/dist/rpi-drivers/rpi5-driver.d.ts +33 -0
  77. package/dist/rpi-drivers/rpi5-driver.d.ts.map +1 -0
  78. package/dist/rpi-drivers/rpi5-driver.js +78 -0
  79. package/dist/rpi-drivers/rpi5-driver.js.map +1 -0
  80. package/dist/servo/index.d.ts +19 -0
  81. package/dist/servo/index.d.ts.map +1 -0
  82. package/dist/servo/index.js +19 -0
  83. package/dist/servo/index.js.map +1 -0
  84. package/dist/servo/servo-constants.d.ts +33 -0
  85. package/dist/servo/servo-constants.d.ts.map +1 -0
  86. package/dist/servo/servo-constants.js +34 -0
  87. package/dist/servo/servo-constants.js.map +1 -0
  88. package/dist/servo/servo-lgpio.d.ts +82 -0
  89. package/dist/servo/servo-lgpio.d.ts.map +1 -0
  90. package/dist/servo/servo-lgpio.js +178 -0
  91. package/dist/servo/servo-lgpio.js.map +1 -0
  92. package/dist/speaker/audio-player.d.ts +30 -0
  93. package/dist/speaker/audio-player.d.ts.map +1 -0
  94. package/dist/speaker/audio-player.js +68 -0
  95. package/dist/speaker/audio-player.js.map +1 -0
  96. package/dist/speaker/index.d.ts +18 -0
  97. package/dist/speaker/index.d.ts.map +1 -0
  98. package/dist/speaker/index.js +18 -0
  99. package/dist/speaker/index.js.map +1 -0
  100. package/dist/speaker/speaker.d.ts +53 -0
  101. package/dist/speaker/speaker.d.ts.map +1 -0
  102. package/dist/speaker/speaker.js +125 -0
  103. package/dist/speaker/speaker.js.map +1 -0
  104. package/dist/stt/backends/azure-stt.d.ts +32 -0
  105. package/dist/stt/backends/azure-stt.d.ts.map +1 -0
  106. package/dist/stt/backends/azure-stt.js +227 -0
  107. package/dist/stt/backends/azure-stt.js.map +1 -0
  108. package/dist/stt/backends/google-cloud-stt.d.ts +31 -0
  109. package/dist/stt/backends/google-cloud-stt.d.ts.map +1 -0
  110. package/dist/stt/backends/google-cloud-stt.js +371 -0
  111. package/dist/stt/backends/google-cloud-stt.js.map +1 -0
  112. package/dist/stt/backends/ibm-watson-stt.d.ts +32 -0
  113. package/dist/stt/backends/ibm-watson-stt.d.ts.map +1 -0
  114. package/dist/stt/backends/ibm-watson-stt.js +190 -0
  115. package/dist/stt/backends/ibm-watson-stt.js.map +1 -0
  116. package/dist/stt/backends/sherpa-onnx-stt.d.ts +117 -0
  117. package/dist/stt/backends/sherpa-onnx-stt.d.ts.map +1 -0
  118. package/dist/stt/backends/sherpa-onnx-stt.js +694 -0
  119. package/dist/stt/backends/sherpa-onnx-stt.js.map +1 -0
  120. package/dist/stt/index.d.ts +20 -0
  121. package/dist/stt/index.d.ts.map +1 -0
  122. package/dist/stt/index.js +21 -0
  123. package/dist/stt/index.js.map +1 -0
  124. package/dist/stt/stt-engine.d.ts +68 -0
  125. package/dist/stt/stt-engine.d.ts.map +1 -0
  126. package/dist/stt/stt-engine.js +99 -0
  127. package/dist/stt/stt-engine.js.map +1 -0
  128. package/dist/stt/stt-utils.d.ts +36 -0
  129. package/dist/stt/stt-utils.d.ts.map +1 -0
  130. package/dist/stt/stt-utils.js +112 -0
  131. package/dist/stt/stt-utils.js.map +1 -0
  132. package/dist/stt/stt.d.ts +52 -0
  133. package/dist/stt/stt.d.ts.map +1 -0
  134. package/dist/stt/stt.js +100 -0
  135. package/dist/stt/stt.js.map +1 -0
  136. package/dist/tjbot.d.ts +317 -0
  137. package/dist/tjbot.d.ts.map +1 -0
  138. package/dist/tjbot.js +736 -0
  139. package/dist/tjbot.js.map +1 -0
  140. package/dist/tts/backends/azure-tts.d.ts +30 -0
  141. package/dist/tts/backends/azure-tts.d.ts.map +1 -0
  142. package/dist/tts/backends/azure-tts.js +92 -0
  143. package/dist/tts/backends/azure-tts.js.map +1 -0
  144. package/dist/tts/backends/google-cloud-tts.d.ts +38 -0
  145. package/dist/tts/backends/google-cloud-tts.d.ts.map +1 -0
  146. package/dist/tts/backends/google-cloud-tts.js +116 -0
  147. package/dist/tts/backends/google-cloud-tts.js.map +1 -0
  148. package/dist/tts/backends/ibm-watson-tts.d.ts +42 -0
  149. package/dist/tts/backends/ibm-watson-tts.d.ts.map +1 -0
  150. package/dist/tts/backends/ibm-watson-tts.js +99 -0
  151. package/dist/tts/backends/ibm-watson-tts.js.map +1 -0
  152. package/dist/tts/backends/sherpa-onnx-tts.d.ts +80 -0
  153. package/dist/tts/backends/sherpa-onnx-tts.d.ts.map +1 -0
  154. package/dist/tts/backends/sherpa-onnx-tts.js +237 -0
  155. package/dist/tts/backends/sherpa-onnx-tts.js.map +1 -0
  156. package/dist/tts/index.d.ts +19 -0
  157. package/dist/tts/index.d.ts.map +1 -0
  158. package/dist/tts/index.js +20 -0
  159. package/dist/tts/index.js.map +1 -0
  160. package/dist/tts/tts-engine.d.ts +67 -0
  161. package/dist/tts/tts-engine.d.ts.map +1 -0
  162. package/dist/tts/tts-engine.js +109 -0
  163. package/dist/tts/tts-engine.js.map +1 -0
  164. package/dist/tts/tts.d.ts +47 -0
  165. package/dist/tts/tts.d.ts.map +1 -0
  166. package/dist/tts/tts.js +101 -0
  167. package/dist/tts/tts.js.map +1 -0
  168. package/dist/utils/colors.d.ts +39 -0
  169. package/dist/utils/colors.d.ts.map +1 -0
  170. package/dist/utils/colors.js +155 -0
  171. package/dist/utils/colors.js.map +1 -0
  172. package/dist/utils/constants.d.ts +41 -0
  173. package/dist/utils/constants.d.ts.map +1 -0
  174. package/dist/utils/constants.js +43 -0
  175. package/dist/utils/constants.js.map +1 -0
  176. package/dist/utils/credentials.d.ts +43 -0
  177. package/dist/utils/credentials.d.ts.map +1 -0
  178. package/dist/utils/credentials.js +121 -0
  179. package/dist/utils/credentials.js.map +1 -0
  180. package/dist/utils/errors.d.ts +26 -0
  181. package/dist/utils/errors.d.ts.map +1 -0
  182. package/dist/utils/errors.js +32 -0
  183. package/dist/utils/errors.js.map +1 -0
  184. package/dist/utils/index.d.ts +25 -0
  185. package/dist/utils/index.d.ts.map +1 -0
  186. package/dist/utils/index.js +23 -0
  187. package/dist/utils/index.js.map +1 -0
  188. package/dist/utils/logging.d.ts +44 -0
  189. package/dist/utils/logging.d.ts.map +1 -0
  190. package/dist/utils/logging.js +113 -0
  191. package/dist/utils/logging.js.map +1 -0
  192. package/dist/utils/model-registry.d.ts +142 -0
  193. package/dist/utils/model-registry.d.ts.map +1 -0
  194. package/dist/utils/model-registry.js +391 -0
  195. package/dist/utils/model-registry.js.map +1 -0
  196. package/dist/utils/utils.d.ts +33 -0
  197. package/dist/utils/utils.d.ts.map +1 -0
  198. package/dist/utils/utils.js +50 -0
  199. package/dist/utils/utils.js.map +1 -0
  200. package/dist/vision/backends/azure-vision.d.ts +33 -0
  201. package/dist/vision/backends/azure-vision.d.ts.map +1 -0
  202. package/dist/vision/backends/azure-vision.js +151 -0
  203. package/dist/vision/backends/azure-vision.js.map +1 -0
  204. package/dist/vision/backends/google-cloud-vision.d.ts +32 -0
  205. package/dist/vision/backends/google-cloud-vision.d.ts.map +1 -0
  206. package/dist/vision/backends/google-cloud-vision.js +193 -0
  207. package/dist/vision/backends/google-cloud-vision.js.map +1 -0
  208. package/dist/vision/backends/onnx.d.ts +116 -0
  209. package/dist/vision/backends/onnx.d.ts.map +1 -0
  210. package/dist/vision/backends/onnx.js +781 -0
  211. package/dist/vision/backends/onnx.js.map +1 -0
  212. package/dist/vision/index.d.ts +19 -0
  213. package/dist/vision/index.d.ts.map +1 -0
  214. package/dist/vision/index.js +20 -0
  215. package/dist/vision/index.js.map +1 -0
  216. package/dist/vision/vision-engine.d.ts +131 -0
  217. package/dist/vision/vision-engine.d.ts.map +1 -0
  218. package/dist/vision/vision-engine.js +97 -0
  219. package/dist/vision/vision-engine.js.map +1 -0
  220. package/dist/vision/vision.d.ts +48 -0
  221. package/dist/vision/vision.d.ts.map +1 -0
  222. package/dist/vision/vision.js +83 -0
  223. package/dist/vision/vision.js.map +1 -0
  224. package/package.json +124 -0
@@ -0,0 +1,317 @@
1
+ /**
2
+ * Copyright 2016-2025 IBM Corp. All Rights Reserved.
3
+ * Copyright 2026-present TJBot Contributors. All Rights Reserved.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import type { TJBotConfigSchema } from './config/config-types.js';
18
+ import { TJBotConfig } from './config/tjbot-config.js';
19
+ import { RPiHardwareDriver } from './rpi-drivers/index.js';
20
+ import { Hardware } from './utils/index.js';
21
+ import { ModelType } from './utils/model-registry.js';
22
+ import { FaceDetectionMetadata, ImageClassificationResult, ImageDescriptionResult, ObjectDetectionResult } from './vision/index.js';
23
+ /**
24
+ * Class representing a TJBot
25
+ */
26
+ declare class TJBot {
27
+ /**
28
+ * TJBot library version
29
+ * @readonly
30
+ */
31
+ static VERSION: string;
32
+ /**
33
+ * Singleton instance
34
+ * @private
35
+ */
36
+ private static instance;
37
+ /**
38
+ * Hardware list
39
+ * @readonly
40
+ */
41
+ static Hardware: typeof Hardware;
42
+ /**
43
+ * TJBot configuration
44
+ */
45
+ config: TJBotConfig;
46
+ /**
47
+ * Raspberry Pi model on which TJBot is running
48
+ * @example "Raspberry Pi 5"
49
+ */
50
+ rpiModel: string;
51
+ /**
52
+ * Raspberry Pi hardware driver
53
+ */
54
+ rpiDriver: RPiHardwareDriver;
55
+ /**
56
+ * Cache of the colors recognized by TJBot
57
+ */
58
+ private _shineColors;
59
+ /**
60
+ * Flag to track if TJBot has been initialized
61
+ */
62
+ private _initialized;
63
+ /**
64
+ * Promise for in-flight cleanup operation, if any.
65
+ */
66
+ private _cleanupPromise;
67
+ /**
68
+ * Guard to ensure process lifecycle hooks are installed only once.
69
+ */
70
+ private _processHooksInstalled;
71
+ /**
72
+ * Private constructor.
73
+ * @private
74
+ */
75
+ private constructor();
76
+ /**
77
+ * Get the singleton instance of TJBot.
78
+ * @returns {TJBot} The singleton TJBot instance
79
+ * @public
80
+ */
81
+ static getInstance(): TJBot;
82
+ /**
83
+ * Get recipe-specific configuration. This method can be used before calling `TJBot.getInstance().initialize()`
84
+ * in case a recipe needs to dynamically determine which hardware components should be configured.
85
+ * @param {string=} recipeConfigPath (optional) Path to recipe configuration file (default: recipe.toml in current working directory)
86
+ * @return {Record<string, unknown>} The recipe configuration as a key-value object. If no recipe configuration file is found, returns an empty object.
87
+ *
88
+ */
89
+ static getRecipeConfig(recipeConfigPath?: string): Record<string, unknown>;
90
+ /**
91
+ * Initialize TJBot with configuration. Can be called multiple times to reconfigure.
92
+ * Performs cleanup of previous initialization, loads configuration, detects hardware,
93
+ * initializes all configured hardware and AI models eagerly.
94
+ * @param {Partial<TJBotConfigSchema>=} overrideConfig (optional) Configuration object to overlay on top of loaded config.
95
+ * @param {string=} recipeConfigPath (optional) Path to recipe configuration file (default: recipe.toml in current working directory)
96
+ * @throws {TJBotError} if configuration file cannot be loaded, is invalid, or cleanup fails
97
+ * @public
98
+ */
99
+ initialize(overrideConfig?: Partial<TJBotConfigSchema>, recipeConfigPath?: string): Promise<TJBot>;
100
+ /**
101
+ * Initialize hardware devices
102
+ * @private
103
+ */
104
+ private initializeHardware;
105
+ /**
106
+ * Eagerly initialize local AI models (STT, TTS, Vision) if configured
107
+ * @private
108
+ */
109
+ private initializeAIModels;
110
+ /**
111
+ * Clean up all resources. Called automatically before re-initialization.
112
+ * @throws {TJBotError} if cleanup fails
113
+ * @private
114
+ */
115
+ private cleanup;
116
+ /**
117
+ * Install process lifecycle hooks so TJBot hardware resources are cleaned up
118
+ * automatically when a recipe exits or is interrupted.
119
+ */
120
+ private installProcessCleanupHooks;
121
+ /**
122
+ * Best-effort automatic cleanup path used by process lifecycle hooks.
123
+ * Uses a timeout in fatal/signal scenarios so process termination does not hang.
124
+ */
125
+ private runLifecycleCleanup;
126
+ /**
127
+ * Change the level of TJBot's logging.
128
+ * @param {string} level Logging level (see Winston's [list of logging levels](https://github.com/winstonjs/winston?tab=readme-ov-file#using-logging-levels))
129
+ * @public
130
+ */
131
+ setLogLevel(level: string): void;
132
+ /**
133
+ * Assert that TJBot is able to perform a specified capability.
134
+ * @private
135
+ * @param {string} capability The capability assert (see TJBot.prototype.capabilities).
136
+ */
137
+ private assertCapability;
138
+ /**
139
+ * Sleep for the specified number of seconds.
140
+ * @param sec Number of seconds to sleep
141
+ */
142
+ sleep(sec: number): Promise<void>;
143
+ /** ------------------------------------------------------------------------ */
144
+ /** LOCAL AI/ML MODELS */
145
+ /** ------------------------------------------------------------------------ */
146
+ /**
147
+ * List the AI/ML models on this device.
148
+ * @returns {string[]} Array of installed model keys
149
+ */
150
+ getLocalModels(modelType?: ModelType, installedOnly?: boolean): string[];
151
+ /** ------------------------------------------------------------------------ */
152
+ /** LISTEN */
153
+ /** ------------------------------------------------------------------------ */
154
+ /**
155
+ * Listen for a spoken utterance (offline mode - returns transcript).
156
+ * @returns {Promise<string>} The transcribed text
157
+ * @throws {TJBotError} if the microphone hardware is not initialized
158
+ * @public
159
+ */
160
+ listen(): Promise<string>;
161
+ /**
162
+ * Listen for a spoken utterance (streaming mode - uses callbacks).
163
+ * @param onPartialResult Callback for partial transcription results
164
+ * @param onFinalResult Callback for final transcription result
165
+ * @returns {Promise<void>} Promise that resolves when transcription completes
166
+ * @throws {TJBotError} if the microphone hardware is not initialized
167
+ * @public
168
+ */
169
+ listen(onPartialResult: (text: string) => void, onFinalResult: (text: string) => void): Promise<void>;
170
+ /** ------------------------------------------------------------------------ */
171
+ /** SEE */
172
+ /** ------------------------------------------------------------------------ */
173
+ /**
174
+ * Capture an image and return it as a buffer.
175
+ * @return {Promise<Buffer>} The captured image as a buffer.
176
+ * @throws {TJBotError} if the camera hardware is not initialized
177
+ * @public
178
+ */
179
+ see(): Promise<Buffer>;
180
+ /**
181
+ * Capture an image and save it in the given path.
182
+ * @param {string=} filePath (optional) Path at which to save the photo file. If not
183
+ * specified, photo will be saved in a temp location.
184
+ * @return {string} Path at which the photo was saved.
185
+ * @throws {TJBotError} if the camera hardware is not initialized
186
+ * @public
187
+ */
188
+ look(filePath?: string): Promise<string>;
189
+ /**
190
+ * Detect objects in an image using the configured vision engine.
191
+ * @param {Buffer|string} image Image buffer or file path
192
+ * @returns {Promise<ObjectDetectionResult[]>}
193
+ */
194
+ detectObjects(image: Buffer | string): Promise<ObjectDetectionResult[]>;
195
+ /**
196
+ * Classify an image using the configured vision engine.
197
+ * @param {Buffer|string} image Image buffer or file path
198
+ * @returns {Promise<ImageClassificationResult[]>}
199
+ */
200
+ classifyImage(image: Buffer | string): Promise<ImageClassificationResult[]>;
201
+ /**
202
+ * Detect faces in an image using the configured vision engine.
203
+ * @param {Buffer|string} image Image buffer or file path
204
+ * @returns {Promise<{isFaceDetected: boolean, metadata: FaceDetectionMetadata[]}>}
205
+ */
206
+ detectFaces(image: Buffer | string): Promise<{
207
+ isFaceDetected: boolean;
208
+ metadata: FaceDetectionMetadata[];
209
+ }>;
210
+ /**
211
+ * Describe an image using the configured vision engine (Azure only).
212
+ * @param {Buffer|string} image Image buffer or file path
213
+ * @returns {Promise<ImageDescriptionResult>}
214
+ */
215
+ describeImage(image: Buffer | string): Promise<ImageDescriptionResult>;
216
+ /** ------------------------------------------------------------------------ */
217
+ /** SHINE */
218
+ /** ------------------------------------------------------------------------ */
219
+ /**
220
+ * Change the color of the LED.
221
+ * @param {string} color The color to shine the LED. May be specified in a number of
222
+ * formats, including: hexadecimal, (e.g. "0xF12AC4", "11FF22", "#AABB24"), "on", "off",
223
+ * or may be a named color in the `colornames` package. Hexadecimal colors
224
+ * follow an #RRGGBB format.
225
+ * @returns {Promise<void>} A promise that resolves when the LED color has been set.
226
+ * @see {@link https://github.com/timoxley/colornames|Colornames} for a list of color names.
227
+ * @throws {TJBotError} if the LED hardware is not initialized or if color is invalid
228
+ * @public
229
+ */
230
+ shine(color: string): Promise<void>;
231
+ /**
232
+ * Pulse the LED a single time.
233
+ * @param {string} color The color to shine the LED. May be specified in a number of
234
+ * formats, including: hexadecimal, (e.g. "0xF12AC4", "11FF22", "#AABB24"), "on", "off",
235
+ * or may be a named color in the `colornames` package. Hexadecimal colors
236
+ * follow an #RRGGBB format.
237
+ * @param {float=} duration The duration the pulse should last. The duration should be in
238
+ * the range [0.5, 2.0] seconds.
239
+ * @returns {Promise<void>} A promise that resolves when the LED pulse animation completes.
240
+ * @see {@link https://github.com/timoxley/colornames|Colornames} for a list of color names.
241
+ * @throws {TJBotError} if the LED hardware is not initialized, color is invalid, or duration exceeds 2.0 seconds
242
+ * @public
243
+ */
244
+ pulse(color: string, duration?: number): Promise<void>;
245
+ /**
246
+ * Get the list of all colors recognized by TJBot.
247
+ * @return {array} List of all named colors recognized by `shine()` and `pulse()`.
248
+ * @public
249
+ */
250
+ shineColors(): string[];
251
+ /**
252
+ * Get a random color.
253
+ * @return {string} Random named color.
254
+ * @public
255
+ */
256
+ randomColor(): string;
257
+ /** ------------------------------------------------------------------------ */
258
+ /** SPEAK */
259
+ /** ------------------------------------------------------------------------ */
260
+ /**
261
+ * Speak a message.
262
+ * @param {string} message The message to speak.
263
+ * @throws {TJBotError} if the speaker hardware is not initialized
264
+ * @public
265
+ */
266
+ speak(message: string): Promise<void>;
267
+ /**
268
+ * Play a sound at the specified path.
269
+ * @param {string} soundFile The path to the sound file to be played.
270
+ * @public
271
+ */
272
+ play(soundFile: string): Promise<void>;
273
+ /** ------------------------------------------------------------------------ */
274
+ /** WAVE */
275
+ /** ------------------------------------------------------------------------ */
276
+ /**
277
+ * Moves TJBot's arm all the way back. If this method doesn't move the arm all the way back, the servo motor stop point defined in TJBot.Servo.ARM_BACK may need to be overridden. Valid servo values are in the range [500, 2300].
278
+ * @throws {TJBotError} if the servo hardware is not initialized
279
+ * @returns {Promise<void>} Resolves when the arm is fully back.
280
+ * @example tj.armBack()
281
+ * @public
282
+ */
283
+ armBack(): Promise<void>;
284
+ /**
285
+ * Raises TJBot's arm. If this method doesn't move the arm all the way back, the servo motor stop point defined in TJBot.Servo.ARM_UP may need to be overridden. Valid servo values are in the range [500, 2300].
286
+ * @throws {TJBotError} if the servo hardware is not initialized
287
+ * @returns {Promise<void>} Resolves when the arm is fully raised.
288
+ * @example tj.raiseArm()
289
+ * @public
290
+ */
291
+ raiseArm(): Promise<void>;
292
+ /**
293
+ * Lowers TJBot's arm. If this method doesn't move the arm all the way back, the servo motor stop point defined in TJBot.Servo.ARM_DOWN may need to be overridden. Valid servo values are in the range [500, 2300].
294
+ * @throws {TJBotError} if the servo hardware is not initialized
295
+ * @returns {Promise<void>} Resolves when the arm is fully lowered.
296
+ * @example tj.lowerArm()
297
+ * @public
298
+ */
299
+ lowerArm(): Promise<void>;
300
+ /**
301
+ * Waves TJBots's arm once.
302
+ * @throws {TJBotError} if the servo hardware is not initialized
303
+ * @returns {Promise<void>} Resolves when the wave is complete.
304
+ * @example tj.wave()
305
+ * @public
306
+ */
307
+ wave(): Promise<void>;
308
+ }
309
+ /** ------------------------------------------------------------------------ */
310
+ /** MODULE EXPORTS */
311
+ /** ------------------------------------------------------------------------ */
312
+ /**
313
+ * Export TJBot!
314
+ */
315
+ export { TJBot };
316
+ export default TJBot;
317
+ //# sourceMappingURL=tjbot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tjbot.d.ts","sourceRoot":"","sources":["../src/tjbot.ts"],"names":[],"mappings":"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"}