@tx5dr/contracts 1.7.3 → 1.7.5

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 (109) hide show
  1. package/dist/index.d.ts +4 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +6 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/schema/__tests__/ability.test.d.ts +2 -0
  6. package/dist/schema/__tests__/ability.test.d.ts.map +1 -0
  7. package/dist/schema/__tests__/ability.test.js +32 -0
  8. package/dist/schema/__tests__/ability.test.js.map +1 -0
  9. package/dist/schema/__tests__/cw-decoder.schema.test.d.ts +2 -0
  10. package/dist/schema/__tests__/cw-decoder.schema.test.d.ts.map +1 -0
  11. package/dist/schema/__tests__/cw-decoder.schema.test.js +114 -0
  12. package/dist/schema/__tests__/cw-decoder.schema.test.js.map +1 -0
  13. package/dist/schema/__tests__/device-ui.schema.test.d.ts +2 -0
  14. package/dist/schema/__tests__/device-ui.schema.test.d.ts.map +1 -0
  15. package/dist/schema/__tests__/device-ui.schema.test.js +111 -0
  16. package/dist/schema/__tests__/device-ui.schema.test.js.map +1 -0
  17. package/dist/schema/__tests__/process-monitor.schema.test.js +96 -0
  18. package/dist/schema/__tests__/process-monitor.schema.test.js.map +1 -1
  19. package/dist/schema/__tests__/radio.schema.test.d.ts +2 -0
  20. package/dist/schema/__tests__/radio.schema.test.d.ts.map +1 -0
  21. package/dist/schema/__tests__/radio.schema.test.js +143 -0
  22. package/dist/schema/__tests__/radio.schema.test.js.map +1 -0
  23. package/dist/schema/ability.d.ts +3 -1
  24. package/dist/schema/ability.d.ts.map +1 -1
  25. package/dist/schema/ability.js +11 -0
  26. package/dist/schema/ability.js.map +1 -1
  27. package/dist/schema/api-response.schema.d.ts +168 -1
  28. package/dist/schema/api-response.schema.d.ts.map +1 -1
  29. package/dist/schema/api-response.schema.js +22 -0
  30. package/dist/schema/api-response.schema.js.map +1 -1
  31. package/dist/schema/cpu-profile.schema.d.ts +6 -6
  32. package/dist/schema/cw-decoder.schema.d.ts +2501 -0
  33. package/dist/schema/cw-decoder.schema.d.ts.map +1 -0
  34. package/dist/schema/cw-decoder.schema.js +196 -0
  35. package/dist/schema/cw-decoder.schema.js.map +1 -0
  36. package/dist/schema/cw-keyer.schema.d.ts +368 -0
  37. package/dist/schema/cw-keyer.schema.d.ts.map +1 -0
  38. package/dist/schema/cw-keyer.schema.js +143 -0
  39. package/dist/schema/cw-keyer.schema.js.map +1 -0
  40. package/dist/schema/desktop-https.schema.js +1 -1
  41. package/dist/schema/desktop-https.schema.js.map +1 -1
  42. package/dist/schema/device-ui.schema.d.ts +1782 -0
  43. package/dist/schema/device-ui.schema.d.ts.map +1 -0
  44. package/dist/schema/device-ui.schema.js +156 -0
  45. package/dist/schema/device-ui.schema.js.map +1 -0
  46. package/dist/schema/mode.schema.d.ts +1 -0
  47. package/dist/schema/mode.schema.d.ts.map +1 -1
  48. package/dist/schema/mode.schema.js +8 -0
  49. package/dist/schema/mode.schema.js.map +1 -1
  50. package/dist/schema/plugin.schema.d.ts +905 -60
  51. package/dist/schema/plugin.schema.d.ts.map +1 -1
  52. package/dist/schema/plugin.schema.js +62 -2
  53. package/dist/schema/plugin.schema.js.map +1 -1
  54. package/dist/schema/process-monitor.schema.d.ts +1948 -261
  55. package/dist/schema/process-monitor.schema.d.ts.map +1 -1
  56. package/dist/schema/process-monitor.schema.js +11 -0
  57. package/dist/schema/process-monitor.schema.js.map +1 -1
  58. package/dist/schema/radio-capability.schema.d.ts +1 -1
  59. package/dist/schema/radio-capability.schema.d.ts.map +1 -1
  60. package/dist/schema/radio-capability.schema.js +41 -0
  61. package/dist/schema/radio-capability.schema.js.map +1 -1
  62. package/dist/schema/radio-power.schema.d.ts +6 -0
  63. package/dist/schema/radio-power.schema.d.ts.map +1 -1
  64. package/dist/schema/radio-profile.schema.d.ts +86 -0
  65. package/dist/schema/radio-profile.schema.d.ts.map +1 -1
  66. package/dist/schema/radio.schema.d.ts +160 -3
  67. package/dist/schema/radio.schema.d.ts.map +1 -1
  68. package/dist/schema/radio.schema.js +82 -0
  69. package/dist/schema/radio.schema.js.map +1 -1
  70. package/dist/schema/realtime.schema.d.ts +6 -6
  71. package/dist/schema/voice.schema.d.ts +1 -1
  72. package/dist/schema/voice.schema.d.ts.map +1 -1
  73. package/dist/schema/voice.schema.js +1 -1
  74. package/dist/schema/voice.schema.js.map +1 -1
  75. package/dist/schema/websocket.schema.d.ts +6071 -574
  76. package/dist/schema/websocket.schema.d.ts.map +1 -1
  77. package/dist/schema/websocket.schema.js +102 -2
  78. package/dist/schema/websocket.schema.js.map +1 -1
  79. package/dist/utils/__tests__/cwTiming.test.d.ts +2 -0
  80. package/dist/utils/__tests__/cwTiming.test.d.ts.map +1 -0
  81. package/dist/utils/__tests__/cwTiming.test.js +74 -0
  82. package/dist/utils/__tests__/cwTiming.test.js.map +1 -0
  83. package/dist/utils/cwTiming.d.ts +36 -0
  84. package/dist/utils/cwTiming.d.ts.map +1 -0
  85. package/dist/utils/cwTiming.js +155 -0
  86. package/dist/utils/cwTiming.js.map +1 -0
  87. package/package.json +1 -1
  88. package/src/index.ts +8 -0
  89. package/src/schema/__tests__/ability.test.ts +40 -0
  90. package/src/schema/__tests__/cw-decoder.schema.test.ts +127 -0
  91. package/src/schema/__tests__/device-ui.schema.test.ts +122 -0
  92. package/src/schema/__tests__/process-monitor.schema.test.ts +99 -0
  93. package/src/schema/__tests__/radio.schema.test.ts +160 -0
  94. package/src/schema/ability.ts +13 -0
  95. package/src/schema/api-response.schema.ts +22 -0
  96. package/src/schema/cw-decoder.schema.ts +234 -0
  97. package/src/schema/cw-keyer.schema.ts +177 -0
  98. package/src/schema/desktop-https.schema.ts +1 -1
  99. package/src/schema/device-ui.schema.ts +182 -0
  100. package/src/schema/mode.schema.ts +8 -0
  101. package/src/schema/plugin.schema.ts +80 -2
  102. package/src/schema/process-monitor.schema.ts +18 -0
  103. package/src/schema/radio-capability.schema.ts +41 -0
  104. package/src/schema/radio.schema.ts +97 -0
  105. package/src/schema/voice.schema.ts +1 -1
  106. package/src/schema/websocket.schema.ts +131 -2
  107. package/src/utils/__tests__/cwTiming.test.ts +91 -0
  108. package/src/utils/cwTiming.ts +203 -0
  109. package/test/plugin-slot-schema.test.ts +52 -0
@@ -0,0 +1,1782 @@
1
+ import { z } from 'zod';
2
+ export declare const DEVICE_UI_JWT_TYPE: "device-ui";
3
+ export declare const DEVICE_UI_JWT_AUDIENCE: "tx5dr-device-ui";
4
+ export declare const DeviceUiJwtPayloadSchema: z.ZodObject<{
5
+ typ: z.ZodLiteral<"device-ui">;
6
+ aud: z.ZodLiteral<"tx5dr-device-ui">;
7
+ deviceId: z.ZodString;
8
+ sessionId: z.ZodString;
9
+ iat: z.ZodNumber;
10
+ exp: z.ZodNumber;
11
+ }, "strip", z.ZodTypeAny, {
12
+ deviceId: string;
13
+ iat: number;
14
+ exp: number;
15
+ sessionId: string;
16
+ typ: "device-ui";
17
+ aud: "tx5dr-device-ui";
18
+ }, {
19
+ deviceId: string;
20
+ iat: number;
21
+ exp: number;
22
+ sessionId: string;
23
+ typ: "device-ui";
24
+ aud: "tx5dr-device-ui";
25
+ }>;
26
+ export type DeviceUiJwtPayload = z.infer<typeof DeviceUiJwtPayloadSchema>;
27
+ export declare const DeviceUiSessionRequestSchema: z.ZodObject<{
28
+ deviceId: z.ZodString;
29
+ sessionToken: z.ZodString;
30
+ }, "strip", z.ZodTypeAny, {
31
+ deviceId: string;
32
+ sessionToken: string;
33
+ }, {
34
+ deviceId: string;
35
+ sessionToken: string;
36
+ }>;
37
+ export type DeviceUiSessionRequest = z.infer<typeof DeviceUiSessionRequestSchema>;
38
+ export declare const DeviceUiSessionResponseSchema: z.ZodObject<{
39
+ jwt: z.ZodString;
40
+ deviceId: z.ZodString;
41
+ sessionId: z.ZodString;
42
+ expiresAt: z.ZodNumber;
43
+ }, "strip", z.ZodTypeAny, {
44
+ deviceId: string;
45
+ jwt: string;
46
+ expiresAt: number;
47
+ sessionId: string;
48
+ }, {
49
+ deviceId: string;
50
+ jwt: string;
51
+ expiresAt: number;
52
+ sessionId: string;
53
+ }>;
54
+ export type DeviceUiSessionResponse = z.infer<typeof DeviceUiSessionResponseSchema>;
55
+ export declare const DeviceUiAuthSessionStateSchema: z.ZodObject<{
56
+ sessionId: z.ZodString;
57
+ deviceId: z.ZodString;
58
+ createdAt: z.ZodNumber;
59
+ expiresAt: z.ZodNumber;
60
+ lastVerifiedAt: z.ZodOptional<z.ZodNumber>;
61
+ revoked: z.ZodOptional<z.ZodBoolean>;
62
+ }, "strip", z.ZodTypeAny, {
63
+ deviceId: string;
64
+ createdAt: number;
65
+ expiresAt: number;
66
+ sessionId: string;
67
+ revoked?: boolean | undefined;
68
+ lastVerifiedAt?: number | undefined;
69
+ }, {
70
+ deviceId: string;
71
+ createdAt: number;
72
+ expiresAt: number;
73
+ sessionId: string;
74
+ revoked?: boolean | undefined;
75
+ lastVerifiedAt?: number | undefined;
76
+ }>;
77
+ export type DeviceUiAuthSessionState = z.infer<typeof DeviceUiAuthSessionStateSchema>;
78
+ export declare const DeviceUiAuthStateSchema: z.ZodObject<{
79
+ jwtSecret: z.ZodString;
80
+ sessions: z.ZodDefault<z.ZodArray<z.ZodObject<{
81
+ sessionId: z.ZodString;
82
+ deviceId: z.ZodString;
83
+ createdAt: z.ZodNumber;
84
+ expiresAt: z.ZodNumber;
85
+ lastVerifiedAt: z.ZodOptional<z.ZodNumber>;
86
+ revoked: z.ZodOptional<z.ZodBoolean>;
87
+ }, "strip", z.ZodTypeAny, {
88
+ deviceId: string;
89
+ createdAt: number;
90
+ expiresAt: number;
91
+ sessionId: string;
92
+ revoked?: boolean | undefined;
93
+ lastVerifiedAt?: number | undefined;
94
+ }, {
95
+ deviceId: string;
96
+ createdAt: number;
97
+ expiresAt: number;
98
+ sessionId: string;
99
+ revoked?: boolean | undefined;
100
+ lastVerifiedAt?: number | undefined;
101
+ }>, "many">>;
102
+ updatedAt: z.ZodOptional<z.ZodNumber>;
103
+ }, "strip", z.ZodTypeAny, {
104
+ jwtSecret: string;
105
+ sessions: {
106
+ deviceId: string;
107
+ createdAt: number;
108
+ expiresAt: number;
109
+ sessionId: string;
110
+ revoked?: boolean | undefined;
111
+ lastVerifiedAt?: number | undefined;
112
+ }[];
113
+ updatedAt?: number | undefined;
114
+ }, {
115
+ jwtSecret: string;
116
+ updatedAt?: number | undefined;
117
+ sessions?: {
118
+ deviceId: string;
119
+ createdAt: number;
120
+ expiresAt: number;
121
+ sessionId: string;
122
+ revoked?: boolean | undefined;
123
+ lastVerifiedAt?: number | undefined;
124
+ }[] | undefined;
125
+ }>;
126
+ export type DeviceUiAuthState = z.infer<typeof DeviceUiAuthStateSchema>;
127
+ export declare const DeviceUiFrameSnapshotSchema: z.ZodObject<{
128
+ slotId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
129
+ slotStartMs: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
130
+ snr: z.ZodNullable<z.ZodNumber>;
131
+ freq: z.ZodNullable<z.ZodNumber>;
132
+ dt: z.ZodNullable<z.ZodNumber>;
133
+ message: z.ZodString;
134
+ operatorId: z.ZodNullable<z.ZodString>;
135
+ country: z.ZodOptional<z.ZodNullable<z.ZodString>>;
136
+ countryZh: z.ZodOptional<z.ZodNullable<z.ZodString>>;
137
+ countryEn: z.ZodOptional<z.ZodNullable<z.ZodString>>;
138
+ countryCode: z.ZodOptional<z.ZodNullable<z.ZodString>>;
139
+ }, "strip", z.ZodTypeAny, {
140
+ message: string;
141
+ operatorId: string | null;
142
+ snr: number | null;
143
+ freq: number | null;
144
+ dt: number | null;
145
+ countryCode?: string | null | undefined;
146
+ slotId?: string | null | undefined;
147
+ slotStartMs?: number | null | undefined;
148
+ country?: string | null | undefined;
149
+ countryZh?: string | null | undefined;
150
+ countryEn?: string | null | undefined;
151
+ }, {
152
+ message: string;
153
+ operatorId: string | null;
154
+ snr: number | null;
155
+ freq: number | null;
156
+ dt: number | null;
157
+ countryCode?: string | null | undefined;
158
+ slotId?: string | null | undefined;
159
+ slotStartMs?: number | null | undefined;
160
+ country?: string | null | undefined;
161
+ countryZh?: string | null | undefined;
162
+ countryEn?: string | null | undefined;
163
+ }>;
164
+ export declare const DeviceUiCurrentTxSnapshotSchema: z.ZodObject<{
165
+ active: z.ZodBoolean;
166
+ operatorIds: z.ZodArray<z.ZodString, "many">;
167
+ messages: z.ZodArray<z.ZodString, "many">;
168
+ lastMessage: z.ZodNullable<z.ZodString>;
169
+ slotStartMs: z.ZodNullable<z.ZodNumber>;
170
+ }, "strip", z.ZodTypeAny, {
171
+ active: boolean;
172
+ operatorIds: string[];
173
+ slotStartMs: number | null;
174
+ lastMessage: string | null;
175
+ messages: string[];
176
+ }, {
177
+ active: boolean;
178
+ operatorIds: string[];
179
+ slotStartMs: number | null;
180
+ lastMessage: string | null;
181
+ messages: string[];
182
+ }>;
183
+ export declare const DeviceUiOperatorSnapshotSchema: z.ZodObject<{
184
+ id: z.ZodString;
185
+ callsign: z.ZodString;
186
+ active: z.ZodBoolean;
187
+ transmitting: z.ZodBoolean;
188
+ ptt: z.ZodBoolean;
189
+ }, "strip", z.ZodTypeAny, {
190
+ id: string;
191
+ active: boolean;
192
+ callsign: string;
193
+ transmitting: boolean;
194
+ ptt: boolean;
195
+ }, {
196
+ id: string;
197
+ active: boolean;
198
+ callsign: string;
199
+ transmitting: boolean;
200
+ ptt: boolean;
201
+ }>;
202
+ export declare const DeviceUiCwSnapshotSchema: z.ZodObject<{
203
+ decoder: z.ZodObject<{
204
+ enabled: z.ZodBoolean;
205
+ active: z.ZodBoolean;
206
+ state: z.ZodString;
207
+ muted: z.ZodBoolean;
208
+ pendingText: z.ZodString;
209
+ committedText: z.ZodString;
210
+ lastDecodeAt: z.ZodNullable<z.ZodNumber>;
211
+ updatedAt: z.ZodNumber;
212
+ }, "strip", z.ZodTypeAny, {
213
+ active: boolean;
214
+ state: string;
215
+ enabled: boolean;
216
+ updatedAt: number;
217
+ muted: boolean;
218
+ lastDecodeAt: number | null;
219
+ pendingText: string;
220
+ committedText: string;
221
+ }, {
222
+ active: boolean;
223
+ state: string;
224
+ enabled: boolean;
225
+ updatedAt: number;
226
+ muted: boolean;
227
+ lastDecodeAt: number | null;
228
+ pendingText: string;
229
+ committedText: string;
230
+ }>;
231
+ keyer: z.ZodObject<{
232
+ active: z.ZodBoolean;
233
+ mode: z.ZodNullable<z.ZodString>;
234
+ messageId: z.ZodNullable<z.ZodString>;
235
+ currentText: z.ZodNullable<z.ZodString>;
236
+ lastText: z.ZodNullable<z.ZodString>;
237
+ }, "strip", z.ZodTypeAny, {
238
+ active: boolean;
239
+ mode: string | null;
240
+ messageId: string | null;
241
+ currentText: string | null;
242
+ lastText: string | null;
243
+ }, {
244
+ active: boolean;
245
+ mode: string | null;
246
+ messageId: string | null;
247
+ currentText: string | null;
248
+ lastText: string | null;
249
+ }>;
250
+ currentTx: z.ZodObject<{
251
+ active: z.ZodBoolean;
252
+ messages: z.ZodArray<z.ZodString, "many">;
253
+ lastMessage: z.ZodNullable<z.ZodString>;
254
+ }, "strip", z.ZodTypeAny, {
255
+ active: boolean;
256
+ lastMessage: string | null;
257
+ messages: string[];
258
+ }, {
259
+ active: boolean;
260
+ lastMessage: string | null;
261
+ messages: string[];
262
+ }>;
263
+ }, "strip", z.ZodTypeAny, {
264
+ decoder: {
265
+ active: boolean;
266
+ state: string;
267
+ enabled: boolean;
268
+ updatedAt: number;
269
+ muted: boolean;
270
+ lastDecodeAt: number | null;
271
+ pendingText: string;
272
+ committedText: string;
273
+ };
274
+ keyer: {
275
+ active: boolean;
276
+ mode: string | null;
277
+ messageId: string | null;
278
+ currentText: string | null;
279
+ lastText: string | null;
280
+ };
281
+ currentTx: {
282
+ active: boolean;
283
+ lastMessage: string | null;
284
+ messages: string[];
285
+ };
286
+ }, {
287
+ decoder: {
288
+ active: boolean;
289
+ state: string;
290
+ enabled: boolean;
291
+ updatedAt: number;
292
+ muted: boolean;
293
+ lastDecodeAt: number | null;
294
+ pendingText: string;
295
+ committedText: string;
296
+ };
297
+ keyer: {
298
+ active: boolean;
299
+ mode: string | null;
300
+ messageId: string | null;
301
+ currentText: string | null;
302
+ lastText: string | null;
303
+ };
304
+ currentTx: {
305
+ active: boolean;
306
+ lastMessage: string | null;
307
+ messages: string[];
308
+ };
309
+ }>;
310
+ export declare const DeviceUiBootstrapSnapshotSchema: z.ZodObject<{
311
+ server: z.ZodObject<{
312
+ status: z.ZodLiteral<"ok">;
313
+ version: z.ZodString;
314
+ webPort: z.ZodNullable<z.ZodNumber>;
315
+ }, "strip", z.ZodTypeAny, {
316
+ status: "ok";
317
+ version: string;
318
+ webPort: number | null;
319
+ }, {
320
+ status: "ok";
321
+ version: string;
322
+ webPort: number | null;
323
+ }>;
324
+ station: z.ZodObject<{
325
+ callsign: z.ZodNullable<z.ZodString>;
326
+ callsigns: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
327
+ }, "strip", z.ZodTypeAny, {
328
+ callsign: string | null;
329
+ callsigns: string[];
330
+ }, {
331
+ callsign: string | null;
332
+ callsigns?: string[] | undefined;
333
+ }>;
334
+ operators: z.ZodDefault<z.ZodArray<z.ZodObject<{
335
+ id: z.ZodString;
336
+ callsign: z.ZodString;
337
+ active: z.ZodBoolean;
338
+ transmitting: z.ZodBoolean;
339
+ ptt: z.ZodBoolean;
340
+ }, "strip", z.ZodTypeAny, {
341
+ id: string;
342
+ active: boolean;
343
+ callsign: string;
344
+ transmitting: boolean;
345
+ ptt: boolean;
346
+ }, {
347
+ id: string;
348
+ active: boolean;
349
+ callsign: string;
350
+ transmitting: boolean;
351
+ ptt: boolean;
352
+ }>, "many">>;
353
+ engine: z.ZodObject<{
354
+ running: z.ZodBoolean;
355
+ mode: z.ZodNullable<z.ZodString>;
356
+ currentMode: z.ZodNullable<z.ZodObject<{
357
+ name: z.ZodString;
358
+ slotMs: z.ZodOptional<z.ZodNumber>;
359
+ }, "strip", z.ZodTypeAny, {
360
+ name: string;
361
+ slotMs?: number | undefined;
362
+ }, {
363
+ name: string;
364
+ slotMs?: number | undefined;
365
+ }>>;
366
+ state: z.ZodNullable<z.ZodString>;
367
+ }, "strip", z.ZodTypeAny, {
368
+ mode: string | null;
369
+ state: string | null;
370
+ running: boolean;
371
+ currentMode: {
372
+ name: string;
373
+ slotMs?: number | undefined;
374
+ } | null;
375
+ }, {
376
+ mode: string | null;
377
+ state: string | null;
378
+ running: boolean;
379
+ currentMode: {
380
+ name: string;
381
+ slotMs?: number | undefined;
382
+ } | null;
383
+ }>;
384
+ radio: z.ZodObject<{
385
+ connected: z.ZodBoolean;
386
+ frequency: z.ZodNullable<z.ZodNumber>;
387
+ radioMode: z.ZodNullable<z.ZodString>;
388
+ ptt: z.ZodBoolean;
389
+ tx: z.ZodBoolean;
390
+ }, "strip", z.ZodTypeAny, {
391
+ frequency: number | null;
392
+ radioMode: string | null;
393
+ connected: boolean;
394
+ ptt: boolean;
395
+ tx: boolean;
396
+ }, {
397
+ frequency: number | null;
398
+ radioMode: string | null;
399
+ connected: boolean;
400
+ ptt: boolean;
401
+ tx: boolean;
402
+ }>;
403
+ ft8: z.ZodObject<{
404
+ slot: z.ZodNullable<z.ZodObject<{
405
+ id: z.ZodString;
406
+ startMs: z.ZodNumber;
407
+ phaseMs: z.ZodNumber;
408
+ driftMs: z.ZodOptional<z.ZodNumber>;
409
+ cycleNumber: z.ZodNumber;
410
+ utcSeconds: z.ZodNumber;
411
+ mode: z.ZodString;
412
+ }, "strip", z.ZodTypeAny, {
413
+ id: string;
414
+ mode: string;
415
+ startMs: number;
416
+ phaseMs: number;
417
+ cycleNumber: number;
418
+ utcSeconds: number;
419
+ driftMs?: number | undefined;
420
+ }, {
421
+ id: string;
422
+ mode: string;
423
+ startMs: number;
424
+ phaseMs: number;
425
+ cycleNumber: number;
426
+ utcSeconds: number;
427
+ driftMs?: number | undefined;
428
+ }>>;
429
+ utc: z.ZodNullable<z.ZodNumber>;
430
+ cycle: z.ZodNullable<z.ZodNumber>;
431
+ periodMs: z.ZodNullable<z.ZodNumber>;
432
+ recentDecodeRawMessages: z.ZodArray<z.ZodString, "many">;
433
+ lastDecodeRawMessage: z.ZodNullable<z.ZodString>;
434
+ recentFramesSlotId: z.ZodNullable<z.ZodString>;
435
+ recentFramesSlotStartMs: z.ZodNullable<z.ZodNumber>;
436
+ recentFrames: z.ZodArray<z.ZodObject<{
437
+ slotId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
438
+ slotStartMs: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
439
+ snr: z.ZodNullable<z.ZodNumber>;
440
+ freq: z.ZodNullable<z.ZodNumber>;
441
+ dt: z.ZodNullable<z.ZodNumber>;
442
+ message: z.ZodString;
443
+ operatorId: z.ZodNullable<z.ZodString>;
444
+ country: z.ZodOptional<z.ZodNullable<z.ZodString>>;
445
+ countryZh: z.ZodOptional<z.ZodNullable<z.ZodString>>;
446
+ countryEn: z.ZodOptional<z.ZodNullable<z.ZodString>>;
447
+ countryCode: z.ZodOptional<z.ZodNullable<z.ZodString>>;
448
+ }, "strip", z.ZodTypeAny, {
449
+ message: string;
450
+ operatorId: string | null;
451
+ snr: number | null;
452
+ freq: number | null;
453
+ dt: number | null;
454
+ countryCode?: string | null | undefined;
455
+ slotId?: string | null | undefined;
456
+ slotStartMs?: number | null | undefined;
457
+ country?: string | null | undefined;
458
+ countryZh?: string | null | undefined;
459
+ countryEn?: string | null | undefined;
460
+ }, {
461
+ message: string;
462
+ operatorId: string | null;
463
+ snr: number | null;
464
+ freq: number | null;
465
+ dt: number | null;
466
+ countryCode?: string | null | undefined;
467
+ slotId?: string | null | undefined;
468
+ slotStartMs?: number | null | undefined;
469
+ country?: string | null | undefined;
470
+ countryZh?: string | null | undefined;
471
+ countryEn?: string | null | undefined;
472
+ }>, "many">;
473
+ currentTx: z.ZodObject<{
474
+ active: z.ZodBoolean;
475
+ operatorIds: z.ZodArray<z.ZodString, "many">;
476
+ messages: z.ZodArray<z.ZodString, "many">;
477
+ lastMessage: z.ZodNullable<z.ZodString>;
478
+ slotStartMs: z.ZodNullable<z.ZodNumber>;
479
+ }, "strip", z.ZodTypeAny, {
480
+ active: boolean;
481
+ operatorIds: string[];
482
+ slotStartMs: number | null;
483
+ lastMessage: string | null;
484
+ messages: string[];
485
+ }, {
486
+ active: boolean;
487
+ operatorIds: string[];
488
+ slotStartMs: number | null;
489
+ lastMessage: string | null;
490
+ messages: string[];
491
+ }>;
492
+ }, "strip", z.ZodTypeAny, {
493
+ cycle: number | null;
494
+ slot: {
495
+ id: string;
496
+ mode: string;
497
+ startMs: number;
498
+ phaseMs: number;
499
+ cycleNumber: number;
500
+ utcSeconds: number;
501
+ driftMs?: number | undefined;
502
+ } | null;
503
+ currentTx: {
504
+ active: boolean;
505
+ operatorIds: string[];
506
+ slotStartMs: number | null;
507
+ lastMessage: string | null;
508
+ messages: string[];
509
+ };
510
+ utc: number | null;
511
+ periodMs: number | null;
512
+ recentDecodeRawMessages: string[];
513
+ lastDecodeRawMessage: string | null;
514
+ recentFramesSlotId: string | null;
515
+ recentFramesSlotStartMs: number | null;
516
+ recentFrames: {
517
+ message: string;
518
+ operatorId: string | null;
519
+ snr: number | null;
520
+ freq: number | null;
521
+ dt: number | null;
522
+ countryCode?: string | null | undefined;
523
+ slotId?: string | null | undefined;
524
+ slotStartMs?: number | null | undefined;
525
+ country?: string | null | undefined;
526
+ countryZh?: string | null | undefined;
527
+ countryEn?: string | null | undefined;
528
+ }[];
529
+ }, {
530
+ cycle: number | null;
531
+ slot: {
532
+ id: string;
533
+ mode: string;
534
+ startMs: number;
535
+ phaseMs: number;
536
+ cycleNumber: number;
537
+ utcSeconds: number;
538
+ driftMs?: number | undefined;
539
+ } | null;
540
+ currentTx: {
541
+ active: boolean;
542
+ operatorIds: string[];
543
+ slotStartMs: number | null;
544
+ lastMessage: string | null;
545
+ messages: string[];
546
+ };
547
+ utc: number | null;
548
+ periodMs: number | null;
549
+ recentDecodeRawMessages: string[];
550
+ lastDecodeRawMessage: string | null;
551
+ recentFramesSlotId: string | null;
552
+ recentFramesSlotStartMs: number | null;
553
+ recentFrames: {
554
+ message: string;
555
+ operatorId: string | null;
556
+ snr: number | null;
557
+ freq: number | null;
558
+ dt: number | null;
559
+ countryCode?: string | null | undefined;
560
+ slotId?: string | null | undefined;
561
+ slotStartMs?: number | null | undefined;
562
+ country?: string | null | undefined;
563
+ countryZh?: string | null | undefined;
564
+ countryEn?: string | null | undefined;
565
+ }[];
566
+ }>;
567
+ voice: z.ZodObject<{
568
+ active: z.ZodBoolean;
569
+ radioMode: z.ZodNullable<z.ZodString>;
570
+ pttLocked: z.ZodBoolean;
571
+ pttLockedByLabel: z.ZodNullable<z.ZodString>;
572
+ keyerActive: z.ZodBoolean;
573
+ keyerMode: z.ZodNullable<z.ZodString>;
574
+ keyerSlotId: z.ZodNullable<z.ZodString>;
575
+ }, "strip", z.ZodTypeAny, {
576
+ active: boolean;
577
+ radioMode: string | null;
578
+ pttLocked: boolean;
579
+ pttLockedByLabel: string | null;
580
+ keyerActive: boolean;
581
+ keyerMode: string | null;
582
+ keyerSlotId: string | null;
583
+ }, {
584
+ active: boolean;
585
+ radioMode: string | null;
586
+ pttLocked: boolean;
587
+ pttLockedByLabel: string | null;
588
+ keyerActive: boolean;
589
+ keyerMode: string | null;
590
+ keyerSlotId: string | null;
591
+ }>;
592
+ cw: z.ZodObject<{
593
+ decoder: z.ZodObject<{
594
+ enabled: z.ZodBoolean;
595
+ active: z.ZodBoolean;
596
+ state: z.ZodString;
597
+ muted: z.ZodBoolean;
598
+ pendingText: z.ZodString;
599
+ committedText: z.ZodString;
600
+ lastDecodeAt: z.ZodNullable<z.ZodNumber>;
601
+ updatedAt: z.ZodNumber;
602
+ }, "strip", z.ZodTypeAny, {
603
+ active: boolean;
604
+ state: string;
605
+ enabled: boolean;
606
+ updatedAt: number;
607
+ muted: boolean;
608
+ lastDecodeAt: number | null;
609
+ pendingText: string;
610
+ committedText: string;
611
+ }, {
612
+ active: boolean;
613
+ state: string;
614
+ enabled: boolean;
615
+ updatedAt: number;
616
+ muted: boolean;
617
+ lastDecodeAt: number | null;
618
+ pendingText: string;
619
+ committedText: string;
620
+ }>;
621
+ keyer: z.ZodObject<{
622
+ active: z.ZodBoolean;
623
+ mode: z.ZodNullable<z.ZodString>;
624
+ messageId: z.ZodNullable<z.ZodString>;
625
+ currentText: z.ZodNullable<z.ZodString>;
626
+ lastText: z.ZodNullable<z.ZodString>;
627
+ }, "strip", z.ZodTypeAny, {
628
+ active: boolean;
629
+ mode: string | null;
630
+ messageId: string | null;
631
+ currentText: string | null;
632
+ lastText: string | null;
633
+ }, {
634
+ active: boolean;
635
+ mode: string | null;
636
+ messageId: string | null;
637
+ currentText: string | null;
638
+ lastText: string | null;
639
+ }>;
640
+ currentTx: z.ZodObject<{
641
+ active: z.ZodBoolean;
642
+ messages: z.ZodArray<z.ZodString, "many">;
643
+ lastMessage: z.ZodNullable<z.ZodString>;
644
+ }, "strip", z.ZodTypeAny, {
645
+ active: boolean;
646
+ lastMessage: string | null;
647
+ messages: string[];
648
+ }, {
649
+ active: boolean;
650
+ lastMessage: string | null;
651
+ messages: string[];
652
+ }>;
653
+ }, "strip", z.ZodTypeAny, {
654
+ decoder: {
655
+ active: boolean;
656
+ state: string;
657
+ enabled: boolean;
658
+ updatedAt: number;
659
+ muted: boolean;
660
+ lastDecodeAt: number | null;
661
+ pendingText: string;
662
+ committedText: string;
663
+ };
664
+ keyer: {
665
+ active: boolean;
666
+ mode: string | null;
667
+ messageId: string | null;
668
+ currentText: string | null;
669
+ lastText: string | null;
670
+ };
671
+ currentTx: {
672
+ active: boolean;
673
+ lastMessage: string | null;
674
+ messages: string[];
675
+ };
676
+ }, {
677
+ decoder: {
678
+ active: boolean;
679
+ state: string;
680
+ enabled: boolean;
681
+ updatedAt: number;
682
+ muted: boolean;
683
+ lastDecodeAt: number | null;
684
+ pendingText: string;
685
+ committedText: string;
686
+ };
687
+ keyer: {
688
+ active: boolean;
689
+ mode: string | null;
690
+ messageId: string | null;
691
+ currentText: string | null;
692
+ lastText: string | null;
693
+ };
694
+ currentTx: {
695
+ active: boolean;
696
+ lastMessage: string | null;
697
+ messages: string[];
698
+ };
699
+ }>;
700
+ access: z.ZodObject<{
701
+ localUrl: z.ZodNullable<z.ZodString>;
702
+ localUrls: z.ZodArray<z.ZodString, "many">;
703
+ }, "strip", z.ZodTypeAny, {
704
+ localUrl: string | null;
705
+ localUrls: string[];
706
+ }, {
707
+ localUrl: string | null;
708
+ localUrls: string[];
709
+ }>;
710
+ updatedAt: z.ZodNumber;
711
+ }, "strip", z.ZodTypeAny, {
712
+ ft8: {
713
+ cycle: number | null;
714
+ slot: {
715
+ id: string;
716
+ mode: string;
717
+ startMs: number;
718
+ phaseMs: number;
719
+ cycleNumber: number;
720
+ utcSeconds: number;
721
+ driftMs?: number | undefined;
722
+ } | null;
723
+ currentTx: {
724
+ active: boolean;
725
+ operatorIds: string[];
726
+ slotStartMs: number | null;
727
+ lastMessage: string | null;
728
+ messages: string[];
729
+ };
730
+ utc: number | null;
731
+ periodMs: number | null;
732
+ recentDecodeRawMessages: string[];
733
+ lastDecodeRawMessage: string | null;
734
+ recentFramesSlotId: string | null;
735
+ recentFramesSlotStartMs: number | null;
736
+ recentFrames: {
737
+ message: string;
738
+ operatorId: string | null;
739
+ snr: number | null;
740
+ freq: number | null;
741
+ dt: number | null;
742
+ countryCode?: string | null | undefined;
743
+ slotId?: string | null | undefined;
744
+ slotStartMs?: number | null | undefined;
745
+ country?: string | null | undefined;
746
+ countryZh?: string | null | undefined;
747
+ countryEn?: string | null | undefined;
748
+ }[];
749
+ };
750
+ server: {
751
+ status: "ok";
752
+ version: string;
753
+ webPort: number | null;
754
+ };
755
+ voice: {
756
+ active: boolean;
757
+ radioMode: string | null;
758
+ pttLocked: boolean;
759
+ pttLockedByLabel: string | null;
760
+ keyerActive: boolean;
761
+ keyerMode: string | null;
762
+ keyerSlotId: string | null;
763
+ };
764
+ radio: {
765
+ frequency: number | null;
766
+ radioMode: string | null;
767
+ connected: boolean;
768
+ ptt: boolean;
769
+ tx: boolean;
770
+ };
771
+ updatedAt: number;
772
+ engine: {
773
+ mode: string | null;
774
+ state: string | null;
775
+ running: boolean;
776
+ currentMode: {
777
+ name: string;
778
+ slotMs?: number | undefined;
779
+ } | null;
780
+ };
781
+ cw: {
782
+ decoder: {
783
+ active: boolean;
784
+ state: string;
785
+ enabled: boolean;
786
+ updatedAt: number;
787
+ muted: boolean;
788
+ lastDecodeAt: number | null;
789
+ pendingText: string;
790
+ committedText: string;
791
+ };
792
+ keyer: {
793
+ active: boolean;
794
+ mode: string | null;
795
+ messageId: string | null;
796
+ currentText: string | null;
797
+ lastText: string | null;
798
+ };
799
+ currentTx: {
800
+ active: boolean;
801
+ lastMessage: string | null;
802
+ messages: string[];
803
+ };
804
+ };
805
+ station: {
806
+ callsign: string | null;
807
+ callsigns: string[];
808
+ };
809
+ operators: {
810
+ id: string;
811
+ active: boolean;
812
+ callsign: string;
813
+ transmitting: boolean;
814
+ ptt: boolean;
815
+ }[];
816
+ access: {
817
+ localUrl: string | null;
818
+ localUrls: string[];
819
+ };
820
+ }, {
821
+ ft8: {
822
+ cycle: number | null;
823
+ slot: {
824
+ id: string;
825
+ mode: string;
826
+ startMs: number;
827
+ phaseMs: number;
828
+ cycleNumber: number;
829
+ utcSeconds: number;
830
+ driftMs?: number | undefined;
831
+ } | null;
832
+ currentTx: {
833
+ active: boolean;
834
+ operatorIds: string[];
835
+ slotStartMs: number | null;
836
+ lastMessage: string | null;
837
+ messages: string[];
838
+ };
839
+ utc: number | null;
840
+ periodMs: number | null;
841
+ recentDecodeRawMessages: string[];
842
+ lastDecodeRawMessage: string | null;
843
+ recentFramesSlotId: string | null;
844
+ recentFramesSlotStartMs: number | null;
845
+ recentFrames: {
846
+ message: string;
847
+ operatorId: string | null;
848
+ snr: number | null;
849
+ freq: number | null;
850
+ dt: number | null;
851
+ countryCode?: string | null | undefined;
852
+ slotId?: string | null | undefined;
853
+ slotStartMs?: number | null | undefined;
854
+ country?: string | null | undefined;
855
+ countryZh?: string | null | undefined;
856
+ countryEn?: string | null | undefined;
857
+ }[];
858
+ };
859
+ server: {
860
+ status: "ok";
861
+ version: string;
862
+ webPort: number | null;
863
+ };
864
+ voice: {
865
+ active: boolean;
866
+ radioMode: string | null;
867
+ pttLocked: boolean;
868
+ pttLockedByLabel: string | null;
869
+ keyerActive: boolean;
870
+ keyerMode: string | null;
871
+ keyerSlotId: string | null;
872
+ };
873
+ radio: {
874
+ frequency: number | null;
875
+ radioMode: string | null;
876
+ connected: boolean;
877
+ ptt: boolean;
878
+ tx: boolean;
879
+ };
880
+ updatedAt: number;
881
+ engine: {
882
+ mode: string | null;
883
+ state: string | null;
884
+ running: boolean;
885
+ currentMode: {
886
+ name: string;
887
+ slotMs?: number | undefined;
888
+ } | null;
889
+ };
890
+ cw: {
891
+ decoder: {
892
+ active: boolean;
893
+ state: string;
894
+ enabled: boolean;
895
+ updatedAt: number;
896
+ muted: boolean;
897
+ lastDecodeAt: number | null;
898
+ pendingText: string;
899
+ committedText: string;
900
+ };
901
+ keyer: {
902
+ active: boolean;
903
+ mode: string | null;
904
+ messageId: string | null;
905
+ currentText: string | null;
906
+ lastText: string | null;
907
+ };
908
+ currentTx: {
909
+ active: boolean;
910
+ lastMessage: string | null;
911
+ messages: string[];
912
+ };
913
+ };
914
+ station: {
915
+ callsign: string | null;
916
+ callsigns?: string[] | undefined;
917
+ };
918
+ access: {
919
+ localUrl: string | null;
920
+ localUrls: string[];
921
+ };
922
+ operators?: {
923
+ id: string;
924
+ active: boolean;
925
+ callsign: string;
926
+ transmitting: boolean;
927
+ ptt: boolean;
928
+ }[] | undefined;
929
+ }>;
930
+ export type DeviceUiBootstrapSnapshot = z.infer<typeof DeviceUiBootstrapSnapshotSchema>;
931
+ export declare const DeviceUiWsEventSchema: z.ZodObject<{
932
+ type: z.ZodLiteral<"snapshot">;
933
+ payload: z.ZodObject<{
934
+ server: z.ZodObject<{
935
+ status: z.ZodLiteral<"ok">;
936
+ version: z.ZodString;
937
+ webPort: z.ZodNullable<z.ZodNumber>;
938
+ }, "strip", z.ZodTypeAny, {
939
+ status: "ok";
940
+ version: string;
941
+ webPort: number | null;
942
+ }, {
943
+ status: "ok";
944
+ version: string;
945
+ webPort: number | null;
946
+ }>;
947
+ station: z.ZodObject<{
948
+ callsign: z.ZodNullable<z.ZodString>;
949
+ callsigns: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
950
+ }, "strip", z.ZodTypeAny, {
951
+ callsign: string | null;
952
+ callsigns: string[];
953
+ }, {
954
+ callsign: string | null;
955
+ callsigns?: string[] | undefined;
956
+ }>;
957
+ operators: z.ZodDefault<z.ZodArray<z.ZodObject<{
958
+ id: z.ZodString;
959
+ callsign: z.ZodString;
960
+ active: z.ZodBoolean;
961
+ transmitting: z.ZodBoolean;
962
+ ptt: z.ZodBoolean;
963
+ }, "strip", z.ZodTypeAny, {
964
+ id: string;
965
+ active: boolean;
966
+ callsign: string;
967
+ transmitting: boolean;
968
+ ptt: boolean;
969
+ }, {
970
+ id: string;
971
+ active: boolean;
972
+ callsign: string;
973
+ transmitting: boolean;
974
+ ptt: boolean;
975
+ }>, "many">>;
976
+ engine: z.ZodObject<{
977
+ running: z.ZodBoolean;
978
+ mode: z.ZodNullable<z.ZodString>;
979
+ currentMode: z.ZodNullable<z.ZodObject<{
980
+ name: z.ZodString;
981
+ slotMs: z.ZodOptional<z.ZodNumber>;
982
+ }, "strip", z.ZodTypeAny, {
983
+ name: string;
984
+ slotMs?: number | undefined;
985
+ }, {
986
+ name: string;
987
+ slotMs?: number | undefined;
988
+ }>>;
989
+ state: z.ZodNullable<z.ZodString>;
990
+ }, "strip", z.ZodTypeAny, {
991
+ mode: string | null;
992
+ state: string | null;
993
+ running: boolean;
994
+ currentMode: {
995
+ name: string;
996
+ slotMs?: number | undefined;
997
+ } | null;
998
+ }, {
999
+ mode: string | null;
1000
+ state: string | null;
1001
+ running: boolean;
1002
+ currentMode: {
1003
+ name: string;
1004
+ slotMs?: number | undefined;
1005
+ } | null;
1006
+ }>;
1007
+ radio: z.ZodObject<{
1008
+ connected: z.ZodBoolean;
1009
+ frequency: z.ZodNullable<z.ZodNumber>;
1010
+ radioMode: z.ZodNullable<z.ZodString>;
1011
+ ptt: z.ZodBoolean;
1012
+ tx: z.ZodBoolean;
1013
+ }, "strip", z.ZodTypeAny, {
1014
+ frequency: number | null;
1015
+ radioMode: string | null;
1016
+ connected: boolean;
1017
+ ptt: boolean;
1018
+ tx: boolean;
1019
+ }, {
1020
+ frequency: number | null;
1021
+ radioMode: string | null;
1022
+ connected: boolean;
1023
+ ptt: boolean;
1024
+ tx: boolean;
1025
+ }>;
1026
+ ft8: z.ZodObject<{
1027
+ slot: z.ZodNullable<z.ZodObject<{
1028
+ id: z.ZodString;
1029
+ startMs: z.ZodNumber;
1030
+ phaseMs: z.ZodNumber;
1031
+ driftMs: z.ZodOptional<z.ZodNumber>;
1032
+ cycleNumber: z.ZodNumber;
1033
+ utcSeconds: z.ZodNumber;
1034
+ mode: z.ZodString;
1035
+ }, "strip", z.ZodTypeAny, {
1036
+ id: string;
1037
+ mode: string;
1038
+ startMs: number;
1039
+ phaseMs: number;
1040
+ cycleNumber: number;
1041
+ utcSeconds: number;
1042
+ driftMs?: number | undefined;
1043
+ }, {
1044
+ id: string;
1045
+ mode: string;
1046
+ startMs: number;
1047
+ phaseMs: number;
1048
+ cycleNumber: number;
1049
+ utcSeconds: number;
1050
+ driftMs?: number | undefined;
1051
+ }>>;
1052
+ utc: z.ZodNullable<z.ZodNumber>;
1053
+ cycle: z.ZodNullable<z.ZodNumber>;
1054
+ periodMs: z.ZodNullable<z.ZodNumber>;
1055
+ recentDecodeRawMessages: z.ZodArray<z.ZodString, "many">;
1056
+ lastDecodeRawMessage: z.ZodNullable<z.ZodString>;
1057
+ recentFramesSlotId: z.ZodNullable<z.ZodString>;
1058
+ recentFramesSlotStartMs: z.ZodNullable<z.ZodNumber>;
1059
+ recentFrames: z.ZodArray<z.ZodObject<{
1060
+ slotId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1061
+ slotStartMs: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1062
+ snr: z.ZodNullable<z.ZodNumber>;
1063
+ freq: z.ZodNullable<z.ZodNumber>;
1064
+ dt: z.ZodNullable<z.ZodNumber>;
1065
+ message: z.ZodString;
1066
+ operatorId: z.ZodNullable<z.ZodString>;
1067
+ country: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1068
+ countryZh: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1069
+ countryEn: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1070
+ countryCode: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1071
+ }, "strip", z.ZodTypeAny, {
1072
+ message: string;
1073
+ operatorId: string | null;
1074
+ snr: number | null;
1075
+ freq: number | null;
1076
+ dt: number | null;
1077
+ countryCode?: string | null | undefined;
1078
+ slotId?: string | null | undefined;
1079
+ slotStartMs?: number | null | undefined;
1080
+ country?: string | null | undefined;
1081
+ countryZh?: string | null | undefined;
1082
+ countryEn?: string | null | undefined;
1083
+ }, {
1084
+ message: string;
1085
+ operatorId: string | null;
1086
+ snr: number | null;
1087
+ freq: number | null;
1088
+ dt: number | null;
1089
+ countryCode?: string | null | undefined;
1090
+ slotId?: string | null | undefined;
1091
+ slotStartMs?: number | null | undefined;
1092
+ country?: string | null | undefined;
1093
+ countryZh?: string | null | undefined;
1094
+ countryEn?: string | null | undefined;
1095
+ }>, "many">;
1096
+ currentTx: z.ZodObject<{
1097
+ active: z.ZodBoolean;
1098
+ operatorIds: z.ZodArray<z.ZodString, "many">;
1099
+ messages: z.ZodArray<z.ZodString, "many">;
1100
+ lastMessage: z.ZodNullable<z.ZodString>;
1101
+ slotStartMs: z.ZodNullable<z.ZodNumber>;
1102
+ }, "strip", z.ZodTypeAny, {
1103
+ active: boolean;
1104
+ operatorIds: string[];
1105
+ slotStartMs: number | null;
1106
+ lastMessage: string | null;
1107
+ messages: string[];
1108
+ }, {
1109
+ active: boolean;
1110
+ operatorIds: string[];
1111
+ slotStartMs: number | null;
1112
+ lastMessage: string | null;
1113
+ messages: string[];
1114
+ }>;
1115
+ }, "strip", z.ZodTypeAny, {
1116
+ cycle: number | null;
1117
+ slot: {
1118
+ id: string;
1119
+ mode: string;
1120
+ startMs: number;
1121
+ phaseMs: number;
1122
+ cycleNumber: number;
1123
+ utcSeconds: number;
1124
+ driftMs?: number | undefined;
1125
+ } | null;
1126
+ currentTx: {
1127
+ active: boolean;
1128
+ operatorIds: string[];
1129
+ slotStartMs: number | null;
1130
+ lastMessage: string | null;
1131
+ messages: string[];
1132
+ };
1133
+ utc: number | null;
1134
+ periodMs: number | null;
1135
+ recentDecodeRawMessages: string[];
1136
+ lastDecodeRawMessage: string | null;
1137
+ recentFramesSlotId: string | null;
1138
+ recentFramesSlotStartMs: number | null;
1139
+ recentFrames: {
1140
+ message: string;
1141
+ operatorId: string | null;
1142
+ snr: number | null;
1143
+ freq: number | null;
1144
+ dt: number | null;
1145
+ countryCode?: string | null | undefined;
1146
+ slotId?: string | null | undefined;
1147
+ slotStartMs?: number | null | undefined;
1148
+ country?: string | null | undefined;
1149
+ countryZh?: string | null | undefined;
1150
+ countryEn?: string | null | undefined;
1151
+ }[];
1152
+ }, {
1153
+ cycle: number | null;
1154
+ slot: {
1155
+ id: string;
1156
+ mode: string;
1157
+ startMs: number;
1158
+ phaseMs: number;
1159
+ cycleNumber: number;
1160
+ utcSeconds: number;
1161
+ driftMs?: number | undefined;
1162
+ } | null;
1163
+ currentTx: {
1164
+ active: boolean;
1165
+ operatorIds: string[];
1166
+ slotStartMs: number | null;
1167
+ lastMessage: string | null;
1168
+ messages: string[];
1169
+ };
1170
+ utc: number | null;
1171
+ periodMs: number | null;
1172
+ recentDecodeRawMessages: string[];
1173
+ lastDecodeRawMessage: string | null;
1174
+ recentFramesSlotId: string | null;
1175
+ recentFramesSlotStartMs: number | null;
1176
+ recentFrames: {
1177
+ message: string;
1178
+ operatorId: string | null;
1179
+ snr: number | null;
1180
+ freq: number | null;
1181
+ dt: number | null;
1182
+ countryCode?: string | null | undefined;
1183
+ slotId?: string | null | undefined;
1184
+ slotStartMs?: number | null | undefined;
1185
+ country?: string | null | undefined;
1186
+ countryZh?: string | null | undefined;
1187
+ countryEn?: string | null | undefined;
1188
+ }[];
1189
+ }>;
1190
+ voice: z.ZodObject<{
1191
+ active: z.ZodBoolean;
1192
+ radioMode: z.ZodNullable<z.ZodString>;
1193
+ pttLocked: z.ZodBoolean;
1194
+ pttLockedByLabel: z.ZodNullable<z.ZodString>;
1195
+ keyerActive: z.ZodBoolean;
1196
+ keyerMode: z.ZodNullable<z.ZodString>;
1197
+ keyerSlotId: z.ZodNullable<z.ZodString>;
1198
+ }, "strip", z.ZodTypeAny, {
1199
+ active: boolean;
1200
+ radioMode: string | null;
1201
+ pttLocked: boolean;
1202
+ pttLockedByLabel: string | null;
1203
+ keyerActive: boolean;
1204
+ keyerMode: string | null;
1205
+ keyerSlotId: string | null;
1206
+ }, {
1207
+ active: boolean;
1208
+ radioMode: string | null;
1209
+ pttLocked: boolean;
1210
+ pttLockedByLabel: string | null;
1211
+ keyerActive: boolean;
1212
+ keyerMode: string | null;
1213
+ keyerSlotId: string | null;
1214
+ }>;
1215
+ cw: z.ZodObject<{
1216
+ decoder: z.ZodObject<{
1217
+ enabled: z.ZodBoolean;
1218
+ active: z.ZodBoolean;
1219
+ state: z.ZodString;
1220
+ muted: z.ZodBoolean;
1221
+ pendingText: z.ZodString;
1222
+ committedText: z.ZodString;
1223
+ lastDecodeAt: z.ZodNullable<z.ZodNumber>;
1224
+ updatedAt: z.ZodNumber;
1225
+ }, "strip", z.ZodTypeAny, {
1226
+ active: boolean;
1227
+ state: string;
1228
+ enabled: boolean;
1229
+ updatedAt: number;
1230
+ muted: boolean;
1231
+ lastDecodeAt: number | null;
1232
+ pendingText: string;
1233
+ committedText: string;
1234
+ }, {
1235
+ active: boolean;
1236
+ state: string;
1237
+ enabled: boolean;
1238
+ updatedAt: number;
1239
+ muted: boolean;
1240
+ lastDecodeAt: number | null;
1241
+ pendingText: string;
1242
+ committedText: string;
1243
+ }>;
1244
+ keyer: z.ZodObject<{
1245
+ active: z.ZodBoolean;
1246
+ mode: z.ZodNullable<z.ZodString>;
1247
+ messageId: z.ZodNullable<z.ZodString>;
1248
+ currentText: z.ZodNullable<z.ZodString>;
1249
+ lastText: z.ZodNullable<z.ZodString>;
1250
+ }, "strip", z.ZodTypeAny, {
1251
+ active: boolean;
1252
+ mode: string | null;
1253
+ messageId: string | null;
1254
+ currentText: string | null;
1255
+ lastText: string | null;
1256
+ }, {
1257
+ active: boolean;
1258
+ mode: string | null;
1259
+ messageId: string | null;
1260
+ currentText: string | null;
1261
+ lastText: string | null;
1262
+ }>;
1263
+ currentTx: z.ZodObject<{
1264
+ active: z.ZodBoolean;
1265
+ messages: z.ZodArray<z.ZodString, "many">;
1266
+ lastMessage: z.ZodNullable<z.ZodString>;
1267
+ }, "strip", z.ZodTypeAny, {
1268
+ active: boolean;
1269
+ lastMessage: string | null;
1270
+ messages: string[];
1271
+ }, {
1272
+ active: boolean;
1273
+ lastMessage: string | null;
1274
+ messages: string[];
1275
+ }>;
1276
+ }, "strip", z.ZodTypeAny, {
1277
+ decoder: {
1278
+ active: boolean;
1279
+ state: string;
1280
+ enabled: boolean;
1281
+ updatedAt: number;
1282
+ muted: boolean;
1283
+ lastDecodeAt: number | null;
1284
+ pendingText: string;
1285
+ committedText: string;
1286
+ };
1287
+ keyer: {
1288
+ active: boolean;
1289
+ mode: string | null;
1290
+ messageId: string | null;
1291
+ currentText: string | null;
1292
+ lastText: string | null;
1293
+ };
1294
+ currentTx: {
1295
+ active: boolean;
1296
+ lastMessage: string | null;
1297
+ messages: string[];
1298
+ };
1299
+ }, {
1300
+ decoder: {
1301
+ active: boolean;
1302
+ state: string;
1303
+ enabled: boolean;
1304
+ updatedAt: number;
1305
+ muted: boolean;
1306
+ lastDecodeAt: number | null;
1307
+ pendingText: string;
1308
+ committedText: string;
1309
+ };
1310
+ keyer: {
1311
+ active: boolean;
1312
+ mode: string | null;
1313
+ messageId: string | null;
1314
+ currentText: string | null;
1315
+ lastText: string | null;
1316
+ };
1317
+ currentTx: {
1318
+ active: boolean;
1319
+ lastMessage: string | null;
1320
+ messages: string[];
1321
+ };
1322
+ }>;
1323
+ access: z.ZodObject<{
1324
+ localUrl: z.ZodNullable<z.ZodString>;
1325
+ localUrls: z.ZodArray<z.ZodString, "many">;
1326
+ }, "strip", z.ZodTypeAny, {
1327
+ localUrl: string | null;
1328
+ localUrls: string[];
1329
+ }, {
1330
+ localUrl: string | null;
1331
+ localUrls: string[];
1332
+ }>;
1333
+ updatedAt: z.ZodNumber;
1334
+ }, "strip", z.ZodTypeAny, {
1335
+ ft8: {
1336
+ cycle: number | null;
1337
+ slot: {
1338
+ id: string;
1339
+ mode: string;
1340
+ startMs: number;
1341
+ phaseMs: number;
1342
+ cycleNumber: number;
1343
+ utcSeconds: number;
1344
+ driftMs?: number | undefined;
1345
+ } | null;
1346
+ currentTx: {
1347
+ active: boolean;
1348
+ operatorIds: string[];
1349
+ slotStartMs: number | null;
1350
+ lastMessage: string | null;
1351
+ messages: string[];
1352
+ };
1353
+ utc: number | null;
1354
+ periodMs: number | null;
1355
+ recentDecodeRawMessages: string[];
1356
+ lastDecodeRawMessage: string | null;
1357
+ recentFramesSlotId: string | null;
1358
+ recentFramesSlotStartMs: number | null;
1359
+ recentFrames: {
1360
+ message: string;
1361
+ operatorId: string | null;
1362
+ snr: number | null;
1363
+ freq: number | null;
1364
+ dt: number | null;
1365
+ countryCode?: string | null | undefined;
1366
+ slotId?: string | null | undefined;
1367
+ slotStartMs?: number | null | undefined;
1368
+ country?: string | null | undefined;
1369
+ countryZh?: string | null | undefined;
1370
+ countryEn?: string | null | undefined;
1371
+ }[];
1372
+ };
1373
+ server: {
1374
+ status: "ok";
1375
+ version: string;
1376
+ webPort: number | null;
1377
+ };
1378
+ voice: {
1379
+ active: boolean;
1380
+ radioMode: string | null;
1381
+ pttLocked: boolean;
1382
+ pttLockedByLabel: string | null;
1383
+ keyerActive: boolean;
1384
+ keyerMode: string | null;
1385
+ keyerSlotId: string | null;
1386
+ };
1387
+ radio: {
1388
+ frequency: number | null;
1389
+ radioMode: string | null;
1390
+ connected: boolean;
1391
+ ptt: boolean;
1392
+ tx: boolean;
1393
+ };
1394
+ updatedAt: number;
1395
+ engine: {
1396
+ mode: string | null;
1397
+ state: string | null;
1398
+ running: boolean;
1399
+ currentMode: {
1400
+ name: string;
1401
+ slotMs?: number | undefined;
1402
+ } | null;
1403
+ };
1404
+ cw: {
1405
+ decoder: {
1406
+ active: boolean;
1407
+ state: string;
1408
+ enabled: boolean;
1409
+ updatedAt: number;
1410
+ muted: boolean;
1411
+ lastDecodeAt: number | null;
1412
+ pendingText: string;
1413
+ committedText: string;
1414
+ };
1415
+ keyer: {
1416
+ active: boolean;
1417
+ mode: string | null;
1418
+ messageId: string | null;
1419
+ currentText: string | null;
1420
+ lastText: string | null;
1421
+ };
1422
+ currentTx: {
1423
+ active: boolean;
1424
+ lastMessage: string | null;
1425
+ messages: string[];
1426
+ };
1427
+ };
1428
+ station: {
1429
+ callsign: string | null;
1430
+ callsigns: string[];
1431
+ };
1432
+ operators: {
1433
+ id: string;
1434
+ active: boolean;
1435
+ callsign: string;
1436
+ transmitting: boolean;
1437
+ ptt: boolean;
1438
+ }[];
1439
+ access: {
1440
+ localUrl: string | null;
1441
+ localUrls: string[];
1442
+ };
1443
+ }, {
1444
+ ft8: {
1445
+ cycle: number | null;
1446
+ slot: {
1447
+ id: string;
1448
+ mode: string;
1449
+ startMs: number;
1450
+ phaseMs: number;
1451
+ cycleNumber: number;
1452
+ utcSeconds: number;
1453
+ driftMs?: number | undefined;
1454
+ } | null;
1455
+ currentTx: {
1456
+ active: boolean;
1457
+ operatorIds: string[];
1458
+ slotStartMs: number | null;
1459
+ lastMessage: string | null;
1460
+ messages: string[];
1461
+ };
1462
+ utc: number | null;
1463
+ periodMs: number | null;
1464
+ recentDecodeRawMessages: string[];
1465
+ lastDecodeRawMessage: string | null;
1466
+ recentFramesSlotId: string | null;
1467
+ recentFramesSlotStartMs: number | null;
1468
+ recentFrames: {
1469
+ message: string;
1470
+ operatorId: string | null;
1471
+ snr: number | null;
1472
+ freq: number | null;
1473
+ dt: number | null;
1474
+ countryCode?: string | null | undefined;
1475
+ slotId?: string | null | undefined;
1476
+ slotStartMs?: number | null | undefined;
1477
+ country?: string | null | undefined;
1478
+ countryZh?: string | null | undefined;
1479
+ countryEn?: string | null | undefined;
1480
+ }[];
1481
+ };
1482
+ server: {
1483
+ status: "ok";
1484
+ version: string;
1485
+ webPort: number | null;
1486
+ };
1487
+ voice: {
1488
+ active: boolean;
1489
+ radioMode: string | null;
1490
+ pttLocked: boolean;
1491
+ pttLockedByLabel: string | null;
1492
+ keyerActive: boolean;
1493
+ keyerMode: string | null;
1494
+ keyerSlotId: string | null;
1495
+ };
1496
+ radio: {
1497
+ frequency: number | null;
1498
+ radioMode: string | null;
1499
+ connected: boolean;
1500
+ ptt: boolean;
1501
+ tx: boolean;
1502
+ };
1503
+ updatedAt: number;
1504
+ engine: {
1505
+ mode: string | null;
1506
+ state: string | null;
1507
+ running: boolean;
1508
+ currentMode: {
1509
+ name: string;
1510
+ slotMs?: number | undefined;
1511
+ } | null;
1512
+ };
1513
+ cw: {
1514
+ decoder: {
1515
+ active: boolean;
1516
+ state: string;
1517
+ enabled: boolean;
1518
+ updatedAt: number;
1519
+ muted: boolean;
1520
+ lastDecodeAt: number | null;
1521
+ pendingText: string;
1522
+ committedText: string;
1523
+ };
1524
+ keyer: {
1525
+ active: boolean;
1526
+ mode: string | null;
1527
+ messageId: string | null;
1528
+ currentText: string | null;
1529
+ lastText: string | null;
1530
+ };
1531
+ currentTx: {
1532
+ active: boolean;
1533
+ lastMessage: string | null;
1534
+ messages: string[];
1535
+ };
1536
+ };
1537
+ station: {
1538
+ callsign: string | null;
1539
+ callsigns?: string[] | undefined;
1540
+ };
1541
+ access: {
1542
+ localUrl: string | null;
1543
+ localUrls: string[];
1544
+ };
1545
+ operators?: {
1546
+ id: string;
1547
+ active: boolean;
1548
+ callsign: string;
1549
+ transmitting: boolean;
1550
+ ptt: boolean;
1551
+ }[] | undefined;
1552
+ }>;
1553
+ timestamp: z.ZodString;
1554
+ }, "strip", z.ZodTypeAny, {
1555
+ type: "snapshot";
1556
+ timestamp: string;
1557
+ payload: {
1558
+ ft8: {
1559
+ cycle: number | null;
1560
+ slot: {
1561
+ id: string;
1562
+ mode: string;
1563
+ startMs: number;
1564
+ phaseMs: number;
1565
+ cycleNumber: number;
1566
+ utcSeconds: number;
1567
+ driftMs?: number | undefined;
1568
+ } | null;
1569
+ currentTx: {
1570
+ active: boolean;
1571
+ operatorIds: string[];
1572
+ slotStartMs: number | null;
1573
+ lastMessage: string | null;
1574
+ messages: string[];
1575
+ };
1576
+ utc: number | null;
1577
+ periodMs: number | null;
1578
+ recentDecodeRawMessages: string[];
1579
+ lastDecodeRawMessage: string | null;
1580
+ recentFramesSlotId: string | null;
1581
+ recentFramesSlotStartMs: number | null;
1582
+ recentFrames: {
1583
+ message: string;
1584
+ operatorId: string | null;
1585
+ snr: number | null;
1586
+ freq: number | null;
1587
+ dt: number | null;
1588
+ countryCode?: string | null | undefined;
1589
+ slotId?: string | null | undefined;
1590
+ slotStartMs?: number | null | undefined;
1591
+ country?: string | null | undefined;
1592
+ countryZh?: string | null | undefined;
1593
+ countryEn?: string | null | undefined;
1594
+ }[];
1595
+ };
1596
+ server: {
1597
+ status: "ok";
1598
+ version: string;
1599
+ webPort: number | null;
1600
+ };
1601
+ voice: {
1602
+ active: boolean;
1603
+ radioMode: string | null;
1604
+ pttLocked: boolean;
1605
+ pttLockedByLabel: string | null;
1606
+ keyerActive: boolean;
1607
+ keyerMode: string | null;
1608
+ keyerSlotId: string | null;
1609
+ };
1610
+ radio: {
1611
+ frequency: number | null;
1612
+ radioMode: string | null;
1613
+ connected: boolean;
1614
+ ptt: boolean;
1615
+ tx: boolean;
1616
+ };
1617
+ updatedAt: number;
1618
+ engine: {
1619
+ mode: string | null;
1620
+ state: string | null;
1621
+ running: boolean;
1622
+ currentMode: {
1623
+ name: string;
1624
+ slotMs?: number | undefined;
1625
+ } | null;
1626
+ };
1627
+ cw: {
1628
+ decoder: {
1629
+ active: boolean;
1630
+ state: string;
1631
+ enabled: boolean;
1632
+ updatedAt: number;
1633
+ muted: boolean;
1634
+ lastDecodeAt: number | null;
1635
+ pendingText: string;
1636
+ committedText: string;
1637
+ };
1638
+ keyer: {
1639
+ active: boolean;
1640
+ mode: string | null;
1641
+ messageId: string | null;
1642
+ currentText: string | null;
1643
+ lastText: string | null;
1644
+ };
1645
+ currentTx: {
1646
+ active: boolean;
1647
+ lastMessage: string | null;
1648
+ messages: string[];
1649
+ };
1650
+ };
1651
+ station: {
1652
+ callsign: string | null;
1653
+ callsigns: string[];
1654
+ };
1655
+ operators: {
1656
+ id: string;
1657
+ active: boolean;
1658
+ callsign: string;
1659
+ transmitting: boolean;
1660
+ ptt: boolean;
1661
+ }[];
1662
+ access: {
1663
+ localUrl: string | null;
1664
+ localUrls: string[];
1665
+ };
1666
+ };
1667
+ }, {
1668
+ type: "snapshot";
1669
+ timestamp: string;
1670
+ payload: {
1671
+ ft8: {
1672
+ cycle: number | null;
1673
+ slot: {
1674
+ id: string;
1675
+ mode: string;
1676
+ startMs: number;
1677
+ phaseMs: number;
1678
+ cycleNumber: number;
1679
+ utcSeconds: number;
1680
+ driftMs?: number | undefined;
1681
+ } | null;
1682
+ currentTx: {
1683
+ active: boolean;
1684
+ operatorIds: string[];
1685
+ slotStartMs: number | null;
1686
+ lastMessage: string | null;
1687
+ messages: string[];
1688
+ };
1689
+ utc: number | null;
1690
+ periodMs: number | null;
1691
+ recentDecodeRawMessages: string[];
1692
+ lastDecodeRawMessage: string | null;
1693
+ recentFramesSlotId: string | null;
1694
+ recentFramesSlotStartMs: number | null;
1695
+ recentFrames: {
1696
+ message: string;
1697
+ operatorId: string | null;
1698
+ snr: number | null;
1699
+ freq: number | null;
1700
+ dt: number | null;
1701
+ countryCode?: string | null | undefined;
1702
+ slotId?: string | null | undefined;
1703
+ slotStartMs?: number | null | undefined;
1704
+ country?: string | null | undefined;
1705
+ countryZh?: string | null | undefined;
1706
+ countryEn?: string | null | undefined;
1707
+ }[];
1708
+ };
1709
+ server: {
1710
+ status: "ok";
1711
+ version: string;
1712
+ webPort: number | null;
1713
+ };
1714
+ voice: {
1715
+ active: boolean;
1716
+ radioMode: string | null;
1717
+ pttLocked: boolean;
1718
+ pttLockedByLabel: string | null;
1719
+ keyerActive: boolean;
1720
+ keyerMode: string | null;
1721
+ keyerSlotId: string | null;
1722
+ };
1723
+ radio: {
1724
+ frequency: number | null;
1725
+ radioMode: string | null;
1726
+ connected: boolean;
1727
+ ptt: boolean;
1728
+ tx: boolean;
1729
+ };
1730
+ updatedAt: number;
1731
+ engine: {
1732
+ mode: string | null;
1733
+ state: string | null;
1734
+ running: boolean;
1735
+ currentMode: {
1736
+ name: string;
1737
+ slotMs?: number | undefined;
1738
+ } | null;
1739
+ };
1740
+ cw: {
1741
+ decoder: {
1742
+ active: boolean;
1743
+ state: string;
1744
+ enabled: boolean;
1745
+ updatedAt: number;
1746
+ muted: boolean;
1747
+ lastDecodeAt: number | null;
1748
+ pendingText: string;
1749
+ committedText: string;
1750
+ };
1751
+ keyer: {
1752
+ active: boolean;
1753
+ mode: string | null;
1754
+ messageId: string | null;
1755
+ currentText: string | null;
1756
+ lastText: string | null;
1757
+ };
1758
+ currentTx: {
1759
+ active: boolean;
1760
+ lastMessage: string | null;
1761
+ messages: string[];
1762
+ };
1763
+ };
1764
+ station: {
1765
+ callsign: string | null;
1766
+ callsigns?: string[] | undefined;
1767
+ };
1768
+ access: {
1769
+ localUrl: string | null;
1770
+ localUrls: string[];
1771
+ };
1772
+ operators?: {
1773
+ id: string;
1774
+ active: boolean;
1775
+ callsign: string;
1776
+ transmitting: boolean;
1777
+ ptt: boolean;
1778
+ }[] | undefined;
1779
+ };
1780
+ }>;
1781
+ export type DeviceUiWsEvent = z.infer<typeof DeviceUiWsEventSchema>;
1782
+ //# sourceMappingURL=device-ui.schema.d.ts.map