@tx5dr/contracts 1.2.0

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 (180) hide show
  1. package/CLAUDE.md +41 -0
  2. package/dist/index.d.ts +55 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +86 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/schema/__tests__/plugin-runtime-log.schema.test.d.ts +2 -0
  7. package/dist/schema/__tests__/plugin-runtime-log.schema.test.d.ts.map +1 -0
  8. package/dist/schema/__tests__/plugin-runtime-log.schema.test.js +78 -0
  9. package/dist/schema/__tests__/plugin-runtime-log.schema.test.js.map +1 -0
  10. package/dist/schema/ability.d.ts +85 -0
  11. package/dist/schema/ability.d.ts.map +1 -0
  12. package/dist/schema/ability.js +119 -0
  13. package/dist/schema/ability.js.map +1 -0
  14. package/dist/schema/api-response.schema.d.ts +1017 -0
  15. package/dist/schema/api-response.schema.d.ts.map +1 -0
  16. package/dist/schema/api-response.schema.js +137 -0
  17. package/dist/schema/api-response.schema.js.map +1 -0
  18. package/dist/schema/audio-sidecar.schema.d.ts +106 -0
  19. package/dist/schema/audio-sidecar.schema.d.ts.map +1 -0
  20. package/dist/schema/audio-sidecar.schema.js +47 -0
  21. package/dist/schema/audio-sidecar.schema.js.map +1 -0
  22. package/dist/schema/audio.schema.d.ts +227 -0
  23. package/dist/schema/audio.schema.d.ts.map +1 -0
  24. package/dist/schema/audio.schema.js +56 -0
  25. package/dist/schema/audio.schema.js.map +1 -0
  26. package/dist/schema/auth.schema.d.ts +738 -0
  27. package/dist/schema/auth.schema.d.ts.map +1 -0
  28. package/dist/schema/auth.schema.js +161 -0
  29. package/dist/schema/auth.schema.js.map +1 -0
  30. package/dist/schema/cycle.schema.d.ts +33 -0
  31. package/dist/schema/cycle.schema.d.ts.map +1 -0
  32. package/dist/schema/cycle.schema.js +23 -0
  33. package/dist/schema/cycle.schema.js.map +1 -0
  34. package/dist/schema/desktop-https.schema.d.ts +146 -0
  35. package/dist/schema/desktop-https.schema.d.ts.map +1 -0
  36. package/dist/schema/desktop-https.schema.js +31 -0
  37. package/dist/schema/desktop-https.schema.js.map +1 -0
  38. package/dist/schema/ft8.schema.d.ts +1107 -0
  39. package/dist/schema/ft8.schema.d.ts.map +1 -0
  40. package/dist/schema/ft8.schema.js +268 -0
  41. package/dist/schema/ft8.schema.js.map +1 -0
  42. package/dist/schema/hello.schema.d.ts +10 -0
  43. package/dist/schema/hello.schema.d.ts.map +1 -0
  44. package/dist/schema/hello.schema.js +5 -0
  45. package/dist/schema/hello.schema.js.map +1 -0
  46. package/dist/schema/logbook.schema.d.ts +1472 -0
  47. package/dist/schema/logbook.schema.d.ts.map +1 -0
  48. package/dist/schema/logbook.schema.js +256 -0
  49. package/dist/schema/logbook.schema.js.map +1 -0
  50. package/dist/schema/mode.schema.d.ts +130 -0
  51. package/dist/schema/mode.schema.d.ts.map +1 -0
  52. package/dist/schema/mode.schema.js +141 -0
  53. package/dist/schema/mode.schema.js.map +1 -0
  54. package/dist/schema/openwebrx.schema.d.ts +352 -0
  55. package/dist/schema/openwebrx.schema.d.ts.map +1 -0
  56. package/dist/schema/openwebrx.schema.js +139 -0
  57. package/dist/schema/openwebrx.schema.js.map +1 -0
  58. package/dist/schema/operator.schema.d.ts +883 -0
  59. package/dist/schema/operator.schema.d.ts.map +1 -0
  60. package/dist/schema/operator.schema.js +97 -0
  61. package/dist/schema/operator.schema.js.map +1 -0
  62. package/dist/schema/plugin.schema.d.ts +1579 -0
  63. package/dist/schema/plugin.schema.d.ts.map +1 -0
  64. package/dist/schema/plugin.schema.js +336 -0
  65. package/dist/schema/plugin.schema.js.map +1 -0
  66. package/dist/schema/process-monitor.schema.d.ts +282 -0
  67. package/dist/schema/process-monitor.schema.d.ts.map +1 -0
  68. package/dist/schema/process-monitor.schema.js +31 -0
  69. package/dist/schema/process-monitor.schema.js.map +1 -0
  70. package/dist/schema/pskreporter.schema.d.ts +185 -0
  71. package/dist/schema/pskreporter.schema.d.ts.map +1 -0
  72. package/dist/schema/pskreporter.schema.js +80 -0
  73. package/dist/schema/pskreporter.schema.js.map +1 -0
  74. package/dist/schema/qso.schema.d.ts +419 -0
  75. package/dist/schema/qso.schema.d.ts.map +1 -0
  76. package/dist/schema/qso.schema.js +137 -0
  77. package/dist/schema/qso.schema.js.map +1 -0
  78. package/dist/schema/radio-capability.schema.d.ts +625 -0
  79. package/dist/schema/radio-capability.schema.d.ts.map +1 -0
  80. package/dist/schema/radio-capability.schema.js +191 -0
  81. package/dist/schema/radio-capability.schema.js.map +1 -0
  82. package/dist/schema/radio-power-support.d.ts +45 -0
  83. package/dist/schema/radio-power-support.d.ts.map +1 -0
  84. package/dist/schema/radio-power-support.js +64 -0
  85. package/dist/schema/radio-power-support.js.map +1 -0
  86. package/dist/schema/radio-power.schema.d.ts +319 -0
  87. package/dist/schema/radio-power.schema.d.ts.map +1 -0
  88. package/dist/schema/radio-power.schema.js +87 -0
  89. package/dist/schema/radio-power.schema.js.map +1 -0
  90. package/dist/schema/radio-profile.schema.d.ts +2694 -0
  91. package/dist/schema/radio-profile.schema.d.ts.map +1 -0
  92. package/dist/schema/radio-profile.schema.js +71 -0
  93. package/dist/schema/radio-profile.schema.js.map +1 -0
  94. package/dist/schema/radio.schema.d.ts +1438 -0
  95. package/dist/schema/radio.schema.d.ts.map +1 -0
  96. package/dist/schema/radio.schema.js +314 -0
  97. package/dist/schema/radio.schema.js.map +1 -0
  98. package/dist/schema/realtime.schema.d.ts +1299 -0
  99. package/dist/schema/realtime.schema.d.ts.map +1 -0
  100. package/dist/schema/realtime.schema.js +184 -0
  101. package/dist/schema/realtime.schema.js.map +1 -0
  102. package/dist/schema/rigctld.schema.d.ts +151 -0
  103. package/dist/schema/rigctld.schema.d.ts.map +1 -0
  104. package/dist/schema/rigctld.schema.js +42 -0
  105. package/dist/schema/rigctld.schema.js.map +1 -0
  106. package/dist/schema/server-message-keys.d.ts +21 -0
  107. package/dist/schema/server-message-keys.d.ts.map +1 -0
  108. package/dist/schema/server-message-keys.js +22 -0
  109. package/dist/schema/server-message-keys.js.map +1 -0
  110. package/dist/schema/slot-info.schema.d.ts +696 -0
  111. package/dist/schema/slot-info.schema.d.ts.map +1 -0
  112. package/dist/schema/slot-info.schema.js +144 -0
  113. package/dist/schema/slot-info.schema.js.map +1 -0
  114. package/dist/schema/spectrum.schema.d.ts +716 -0
  115. package/dist/schema/spectrum.schema.d.ts.map +1 -0
  116. package/dist/schema/spectrum.schema.js +128 -0
  117. package/dist/schema/spectrum.schema.js.map +1 -0
  118. package/dist/schema/station-info.schema.d.ts +202 -0
  119. package/dist/schema/station-info.schema.d.ts.map +1 -0
  120. package/dist/schema/station-info.schema.js +32 -0
  121. package/dist/schema/station-info.schema.js.map +1 -0
  122. package/dist/schema/system.schema.d.ts +113 -0
  123. package/dist/schema/system.schema.d.ts.map +1 -0
  124. package/dist/schema/system.schema.js +95 -0
  125. package/dist/schema/system.schema.js.map +1 -0
  126. package/dist/schema/transmission.schema.d.ts +413 -0
  127. package/dist/schema/transmission.schema.d.ts.map +1 -0
  128. package/dist/schema/transmission.schema.js +78 -0
  129. package/dist/schema/transmission.schema.js.map +1 -0
  130. package/dist/schema/voice.schema.d.ts +38 -0
  131. package/dist/schema/voice.schema.d.ts.map +1 -0
  132. package/dist/schema/voice.schema.js +24 -0
  133. package/dist/schema/voice.schema.js.map +1 -0
  134. package/dist/schema/websocket.schema.d.ts +16916 -0
  135. package/dist/schema/websocket.schema.d.ts.map +1 -0
  136. package/dist/schema/websocket.schema.js +1050 -0
  137. package/dist/schema/websocket.schema.js.map +1 -0
  138. package/dist/utils/grid.d.ts +13 -0
  139. package/dist/utils/grid.d.ts.map +1 -0
  140. package/dist/utils/grid.js +71 -0
  141. package/dist/utils/grid.js.map +1 -0
  142. package/eslint.config.js +15 -0
  143. package/package.json +28 -0
  144. package/src/index.ts +152 -0
  145. package/src/schema/__tests__/plugin-runtime-log.schema.test.ts +90 -0
  146. package/src/schema/ability.ts +205 -0
  147. package/src/schema/api-response.schema.ts +187 -0
  148. package/src/schema/audio-sidecar.schema.ts +53 -0
  149. package/src/schema/audio.schema.ts +73 -0
  150. package/src/schema/auth.schema.ts +224 -0
  151. package/src/schema/cycle.schema.ts +25 -0
  152. package/src/schema/desktop-https.schema.ts +43 -0
  153. package/src/schema/ft8.schema.ts +362 -0
  154. package/src/schema/hello.schema.ts +7 -0
  155. package/src/schema/logbook.schema.ts +310 -0
  156. package/src/schema/mode.schema.ts +158 -0
  157. package/src/schema/openwebrx.schema.ts +160 -0
  158. package/src/schema/operator.schema.ts +112 -0
  159. package/src/schema/plugin.schema.ts +503 -0
  160. package/src/schema/process-monitor.schema.ts +41 -0
  161. package/src/schema/pskreporter.schema.ts +102 -0
  162. package/src/schema/qso.schema.ts +173 -0
  163. package/src/schema/radio-capability.schema.ts +244 -0
  164. package/src/schema/radio-power-support.ts +107 -0
  165. package/src/schema/radio-power.schema.ts +101 -0
  166. package/src/schema/radio-profile.schema.ts +91 -0
  167. package/src/schema/radio.schema.ts +385 -0
  168. package/src/schema/realtime.schema.ts +262 -0
  169. package/src/schema/rigctld.schema.ts +51 -0
  170. package/src/schema/server-message-keys.ts +26 -0
  171. package/src/schema/slot-info.schema.ts +162 -0
  172. package/src/schema/spectrum.schema.ts +166 -0
  173. package/src/schema/station-info.schema.ts +40 -0
  174. package/src/schema/system.schema.ts +121 -0
  175. package/src/schema/transmission.schema.ts +105 -0
  176. package/src/schema/voice.schema.ts +28 -0
  177. package/src/schema/websocket.schema.ts +1480 -0
  178. package/src/utils/grid.ts +94 -0
  179. package/test/mode-schema.test.ts +48 -0
  180. package/tsconfig.json +9 -0
@@ -0,0 +1,1299 @@
1
+ import { z } from 'zod';
2
+ export declare const RealtimeScopeSchema: z.ZodEnum<["radio", "openwebrx-preview"]>;
3
+ export type RealtimeScope = z.infer<typeof RealtimeScopeSchema>;
4
+ export declare const RealtimeParticipantKindSchema: z.ZodEnum<["listener", "publisher", "bridge"]>;
5
+ export type RealtimeParticipantKind = z.infer<typeof RealtimeParticipantKindSchema>;
6
+ export declare const RealtimeTransportKindSchema: z.ZodEnum<["livekit", "ws-compat"]>;
7
+ export type RealtimeTransportKind = z.infer<typeof RealtimeTransportKindSchema>;
8
+ export declare const RealtimeSessionDirectionSchema: z.ZodEnum<["recv", "send"]>;
9
+ export type RealtimeSessionDirection = z.infer<typeof RealtimeSessionDirectionSchema>;
10
+ export declare const RealtimeConnectivityErrorCodeSchema: z.ZodEnum<["TOKEN_REQUEST_FAILED", "SIGNALING_UNREACHABLE", "PUBLIC_URL_MISCONFIGURED", "ICE_CONNECTION_FAILED", "NO_AUDIO_TRACK", "AUDIO_PLAYBACK_BLOCKED", "SESSION_EXPIRED_OR_INVALID", "MEDIA_DEVICE_PERMISSION_DENIED", "UNKNOWN_REALTIME_ERROR"]>;
11
+ export type RealtimeConnectivityErrorCode = z.infer<typeof RealtimeConnectivityErrorCodeSchema>;
12
+ export declare const RealtimeConnectivityHintsSchema: z.ZodObject<{
13
+ signalingUrl: z.ZodString;
14
+ signalingPort: z.ZodNumber;
15
+ rtcTcpPort: z.ZodNumber;
16
+ udpPortRange: z.ZodString;
17
+ publicUrlOverrideActive: z.ZodBoolean;
18
+ }, "strip", z.ZodTypeAny, {
19
+ signalingUrl: string;
20
+ signalingPort: number;
21
+ rtcTcpPort: number;
22
+ udpPortRange: string;
23
+ publicUrlOverrideActive: boolean;
24
+ }, {
25
+ signalingUrl: string;
26
+ signalingPort: number;
27
+ rtcTcpPort: number;
28
+ udpPortRange: string;
29
+ publicUrlOverrideActive: boolean;
30
+ }>;
31
+ export type RealtimeConnectivityHints = z.infer<typeof RealtimeConnectivityHintsSchema>;
32
+ export declare const RealtimeConnectivityIssueSchema: z.ZodObject<{
33
+ code: z.ZodEnum<["TOKEN_REQUEST_FAILED", "SIGNALING_UNREACHABLE", "PUBLIC_URL_MISCONFIGURED", "ICE_CONNECTION_FAILED", "NO_AUDIO_TRACK", "AUDIO_PLAYBACK_BLOCKED", "SESSION_EXPIRED_OR_INVALID", "MEDIA_DEVICE_PERMISSION_DENIED", "UNKNOWN_REALTIME_ERROR"]>;
34
+ scope: z.ZodEnum<["radio", "openwebrx-preview"]>;
35
+ stage: z.ZodEnum<["token", "connect", "publish", "subscribe", "runtime"]>;
36
+ userMessage: z.ZodString;
37
+ suggestions: z.ZodArray<z.ZodString, "many">;
38
+ technicalDetails: z.ZodOptional<z.ZodString>;
39
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
40
+ }, "strip", z.ZodTypeAny, {
41
+ code: "TOKEN_REQUEST_FAILED" | "SIGNALING_UNREACHABLE" | "PUBLIC_URL_MISCONFIGURED" | "ICE_CONNECTION_FAILED" | "NO_AUDIO_TRACK" | "AUDIO_PLAYBACK_BLOCKED" | "SESSION_EXPIRED_OR_INVALID" | "MEDIA_DEVICE_PERMISSION_DENIED" | "UNKNOWN_REALTIME_ERROR";
42
+ scope: "radio" | "openwebrx-preview";
43
+ stage: "token" | "connect" | "publish" | "subscribe" | "runtime";
44
+ userMessage: string;
45
+ suggestions: string[];
46
+ technicalDetails?: string | undefined;
47
+ context?: Record<string, string> | undefined;
48
+ }, {
49
+ code: "TOKEN_REQUEST_FAILED" | "SIGNALING_UNREACHABLE" | "PUBLIC_URL_MISCONFIGURED" | "ICE_CONNECTION_FAILED" | "NO_AUDIO_TRACK" | "AUDIO_PLAYBACK_BLOCKED" | "SESSION_EXPIRED_OR_INVALID" | "MEDIA_DEVICE_PERMISSION_DENIED" | "UNKNOWN_REALTIME_ERROR";
50
+ scope: "radio" | "openwebrx-preview";
51
+ stage: "token" | "connect" | "publish" | "subscribe" | "runtime";
52
+ userMessage: string;
53
+ suggestions: string[];
54
+ technicalDetails?: string | undefined;
55
+ context?: Record<string, string> | undefined;
56
+ }>;
57
+ export type RealtimeConnectivityIssue = z.infer<typeof RealtimeConnectivityIssueSchema>;
58
+ export declare const RealtimeTokenRequestSchema: z.ZodObject<{
59
+ scope: z.ZodEnum<["radio", "openwebrx-preview"]>;
60
+ publish: z.ZodOptional<z.ZodBoolean>;
61
+ previewSessionId: z.ZodOptional<z.ZodString>;
62
+ }, "strip", z.ZodTypeAny, {
63
+ scope: "radio" | "openwebrx-preview";
64
+ publish?: boolean | undefined;
65
+ previewSessionId?: string | undefined;
66
+ }, {
67
+ scope: "radio" | "openwebrx-preview";
68
+ publish?: boolean | undefined;
69
+ previewSessionId?: string | undefined;
70
+ }>;
71
+ export type RealtimeTokenRequest = z.infer<typeof RealtimeTokenRequestSchema>;
72
+ export declare const RealtimeSessionRequestSchema: z.ZodObject<{
73
+ scope: z.ZodEnum<["radio", "openwebrx-preview"]>;
74
+ direction: z.ZodEnum<["recv", "send"]>;
75
+ previewSessionId: z.ZodOptional<z.ZodString>;
76
+ transportOverride: z.ZodOptional<z.ZodEnum<["livekit", "ws-compat"]>>;
77
+ }, "strip", z.ZodTypeAny, {
78
+ scope: "radio" | "openwebrx-preview";
79
+ direction: "recv" | "send";
80
+ previewSessionId?: string | undefined;
81
+ transportOverride?: "livekit" | "ws-compat" | undefined;
82
+ }, {
83
+ scope: "radio" | "openwebrx-preview";
84
+ direction: "recv" | "send";
85
+ previewSessionId?: string | undefined;
86
+ transportOverride?: "livekit" | "ws-compat" | undefined;
87
+ }>;
88
+ export type RealtimeSessionRequest = z.infer<typeof RealtimeSessionRequestSchema>;
89
+ export declare const RealtimeParticipantMetadataSchema: z.ZodObject<{
90
+ role: z.ZodString;
91
+ tokenId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
92
+ operatorIds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
93
+ clientKind: z.ZodString;
94
+ participantKind: z.ZodEnum<["listener", "publisher", "bridge"]>;
95
+ scope: z.ZodEnum<["radio", "openwebrx-preview"]>;
96
+ previewSessionId: z.ZodOptional<z.ZodString>;
97
+ }, "strip", z.ZodTypeAny, {
98
+ scope: "radio" | "openwebrx-preview";
99
+ role: string;
100
+ clientKind: string;
101
+ participantKind: "listener" | "publisher" | "bridge";
102
+ operatorIds?: string[] | undefined;
103
+ tokenId?: string | null | undefined;
104
+ previewSessionId?: string | undefined;
105
+ }, {
106
+ scope: "radio" | "openwebrx-preview";
107
+ role: string;
108
+ clientKind: string;
109
+ participantKind: "listener" | "publisher" | "bridge";
110
+ operatorIds?: string[] | undefined;
111
+ tokenId?: string | null | undefined;
112
+ previewSessionId?: string | undefined;
113
+ }>;
114
+ export type RealtimeParticipantMetadata = z.infer<typeof RealtimeParticipantMetadataSchema>;
115
+ export declare const RealtimeTokenResponseSchema: z.ZodObject<{
116
+ url: z.ZodString;
117
+ roomName: z.ZodString;
118
+ token: z.ZodString;
119
+ participantIdentity: z.ZodString;
120
+ participantName: z.ZodString;
121
+ participantMetadata: z.ZodObject<{
122
+ role: z.ZodString;
123
+ tokenId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
124
+ operatorIds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
125
+ clientKind: z.ZodString;
126
+ participantKind: z.ZodEnum<["listener", "publisher", "bridge"]>;
127
+ scope: z.ZodEnum<["radio", "openwebrx-preview"]>;
128
+ previewSessionId: z.ZodOptional<z.ZodString>;
129
+ }, "strip", z.ZodTypeAny, {
130
+ scope: "radio" | "openwebrx-preview";
131
+ role: string;
132
+ clientKind: string;
133
+ participantKind: "listener" | "publisher" | "bridge";
134
+ operatorIds?: string[] | undefined;
135
+ tokenId?: string | null | undefined;
136
+ previewSessionId?: string | undefined;
137
+ }, {
138
+ scope: "radio" | "openwebrx-preview";
139
+ role: string;
140
+ clientKind: string;
141
+ participantKind: "listener" | "publisher" | "bridge";
142
+ operatorIds?: string[] | undefined;
143
+ tokenId?: string | null | undefined;
144
+ previewSessionId?: string | undefined;
145
+ }>;
146
+ connectivityHints: z.ZodObject<{
147
+ signalingUrl: z.ZodString;
148
+ signalingPort: z.ZodNumber;
149
+ rtcTcpPort: z.ZodNumber;
150
+ udpPortRange: z.ZodString;
151
+ publicUrlOverrideActive: z.ZodBoolean;
152
+ }, "strip", z.ZodTypeAny, {
153
+ signalingUrl: string;
154
+ signalingPort: number;
155
+ rtcTcpPort: number;
156
+ udpPortRange: string;
157
+ publicUrlOverrideActive: boolean;
158
+ }, {
159
+ signalingUrl: string;
160
+ signalingPort: number;
161
+ rtcTcpPort: number;
162
+ udpPortRange: string;
163
+ publicUrlOverrideActive: boolean;
164
+ }>;
165
+ }, "strip", z.ZodTypeAny, {
166
+ url: string;
167
+ token: string;
168
+ roomName: string;
169
+ participantIdentity: string;
170
+ participantName: string;
171
+ participantMetadata: {
172
+ scope: "radio" | "openwebrx-preview";
173
+ role: string;
174
+ clientKind: string;
175
+ participantKind: "listener" | "publisher" | "bridge";
176
+ operatorIds?: string[] | undefined;
177
+ tokenId?: string | null | undefined;
178
+ previewSessionId?: string | undefined;
179
+ };
180
+ connectivityHints: {
181
+ signalingUrl: string;
182
+ signalingPort: number;
183
+ rtcTcpPort: number;
184
+ udpPortRange: string;
185
+ publicUrlOverrideActive: boolean;
186
+ };
187
+ }, {
188
+ url: string;
189
+ token: string;
190
+ roomName: string;
191
+ participantIdentity: string;
192
+ participantName: string;
193
+ participantMetadata: {
194
+ scope: "radio" | "openwebrx-preview";
195
+ role: string;
196
+ clientKind: string;
197
+ participantKind: "listener" | "publisher" | "bridge";
198
+ operatorIds?: string[] | undefined;
199
+ tokenId?: string | null | undefined;
200
+ previewSessionId?: string | undefined;
201
+ };
202
+ connectivityHints: {
203
+ signalingUrl: string;
204
+ signalingPort: number;
205
+ rtcTcpPort: number;
206
+ udpPortRange: string;
207
+ publicUrlOverrideActive: boolean;
208
+ };
209
+ }>;
210
+ export type RealtimeTokenResponse = z.infer<typeof RealtimeTokenResponseSchema>;
211
+ export declare const RealtimeTransportOfferSchema: z.ZodObject<{
212
+ transport: z.ZodEnum<["livekit", "ws-compat"]>;
213
+ direction: z.ZodEnum<["recv", "send"]>;
214
+ url: z.ZodString;
215
+ token: z.ZodString;
216
+ participantIdentity: z.ZodOptional<z.ZodNullable<z.ZodString>>;
217
+ participantName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
218
+ roomName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
219
+ }, "strip", z.ZodTypeAny, {
220
+ url: string;
221
+ token: string;
222
+ direction: "recv" | "send";
223
+ transport: "livekit" | "ws-compat";
224
+ roomName?: string | null | undefined;
225
+ participantIdentity?: string | null | undefined;
226
+ participantName?: string | null | undefined;
227
+ }, {
228
+ url: string;
229
+ token: string;
230
+ direction: "recv" | "send";
231
+ transport: "livekit" | "ws-compat";
232
+ roomName?: string | null | undefined;
233
+ participantIdentity?: string | null | undefined;
234
+ participantName?: string | null | undefined;
235
+ }>;
236
+ export type RealtimeTransportOffer = z.infer<typeof RealtimeTransportOfferSchema>;
237
+ export declare const RealtimeTransportPolicySchema: z.ZodEnum<["auto", "force-compat"]>;
238
+ export type RealtimeTransportPolicy = z.infer<typeof RealtimeTransportPolicySchema>;
239
+ export declare const LiveKitNetworkModeSchema: z.ZodEnum<["lan", "internet-auto", "internet-manual"]>;
240
+ export type LiveKitNetworkMode = z.infer<typeof LiveKitNetworkModeSchema>;
241
+ export declare const RealtimeSessionResponseSchema: z.ZodObject<{
242
+ scope: z.ZodEnum<["radio", "openwebrx-preview"]>;
243
+ direction: z.ZodEnum<["recv", "send"]>;
244
+ preferredTransport: z.ZodEnum<["livekit", "ws-compat"]>;
245
+ effectiveTransportPolicy: z.ZodEnum<["auto", "force-compat"]>;
246
+ selectionReason: z.ZodEnum<["client-override", "server-policy", "bridge-unhealthy", "livekit-disabled", "runtime-unavailable", "default-livekit"]>;
247
+ forcedCompatibilityMode: z.ZodBoolean;
248
+ offers: z.ZodArray<z.ZodObject<{
249
+ transport: z.ZodEnum<["livekit", "ws-compat"]>;
250
+ direction: z.ZodEnum<["recv", "send"]>;
251
+ url: z.ZodString;
252
+ token: z.ZodString;
253
+ participantIdentity: z.ZodOptional<z.ZodNullable<z.ZodString>>;
254
+ participantName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
255
+ roomName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
256
+ }, "strip", z.ZodTypeAny, {
257
+ url: string;
258
+ token: string;
259
+ direction: "recv" | "send";
260
+ transport: "livekit" | "ws-compat";
261
+ roomName?: string | null | undefined;
262
+ participantIdentity?: string | null | undefined;
263
+ participantName?: string | null | undefined;
264
+ }, {
265
+ url: string;
266
+ token: string;
267
+ direction: "recv" | "send";
268
+ transport: "livekit" | "ws-compat";
269
+ roomName?: string | null | undefined;
270
+ participantIdentity?: string | null | undefined;
271
+ participantName?: string | null | undefined;
272
+ }>, "many">;
273
+ connectivityHints: z.ZodObject<{
274
+ signalingUrl: z.ZodString;
275
+ signalingPort: z.ZodNumber;
276
+ rtcTcpPort: z.ZodNumber;
277
+ udpPortRange: z.ZodString;
278
+ publicUrlOverrideActive: z.ZodBoolean;
279
+ }, "strip", z.ZodTypeAny, {
280
+ signalingUrl: string;
281
+ signalingPort: number;
282
+ rtcTcpPort: number;
283
+ udpPortRange: string;
284
+ publicUrlOverrideActive: boolean;
285
+ }, {
286
+ signalingUrl: string;
287
+ signalingPort: number;
288
+ rtcTcpPort: number;
289
+ udpPortRange: string;
290
+ publicUrlOverrideActive: boolean;
291
+ }>;
292
+ }, "strip", z.ZodTypeAny, {
293
+ scope: "radio" | "openwebrx-preview";
294
+ direction: "recv" | "send";
295
+ connectivityHints: {
296
+ signalingUrl: string;
297
+ signalingPort: number;
298
+ rtcTcpPort: number;
299
+ udpPortRange: string;
300
+ publicUrlOverrideActive: boolean;
301
+ };
302
+ preferredTransport: "livekit" | "ws-compat";
303
+ effectiveTransportPolicy: "auto" | "force-compat";
304
+ selectionReason: "client-override" | "server-policy" | "bridge-unhealthy" | "livekit-disabled" | "runtime-unavailable" | "default-livekit";
305
+ forcedCompatibilityMode: boolean;
306
+ offers: {
307
+ url: string;
308
+ token: string;
309
+ direction: "recv" | "send";
310
+ transport: "livekit" | "ws-compat";
311
+ roomName?: string | null | undefined;
312
+ participantIdentity?: string | null | undefined;
313
+ participantName?: string | null | undefined;
314
+ }[];
315
+ }, {
316
+ scope: "radio" | "openwebrx-preview";
317
+ direction: "recv" | "send";
318
+ connectivityHints: {
319
+ signalingUrl: string;
320
+ signalingPort: number;
321
+ rtcTcpPort: number;
322
+ udpPortRange: string;
323
+ publicUrlOverrideActive: boolean;
324
+ };
325
+ preferredTransport: "livekit" | "ws-compat";
326
+ effectiveTransportPolicy: "auto" | "force-compat";
327
+ selectionReason: "client-override" | "server-policy" | "bridge-unhealthy" | "livekit-disabled" | "runtime-unavailable" | "default-livekit";
328
+ forcedCompatibilityMode: boolean;
329
+ offers: {
330
+ url: string;
331
+ token: string;
332
+ direction: "recv" | "send";
333
+ transport: "livekit" | "ws-compat";
334
+ roomName?: string | null | undefined;
335
+ participantIdentity?: string | null | undefined;
336
+ participantName?: string | null | undefined;
337
+ }[];
338
+ }>;
339
+ export type RealtimeSessionResponse = z.infer<typeof RealtimeSessionResponseSchema>;
340
+ export declare const RealtimeSettingsSchema: z.ZodObject<{
341
+ publicWsUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
342
+ transportPolicy: z.ZodOptional<z.ZodEnum<["auto", "force-compat"]>>;
343
+ networkMode: z.ZodOptional<z.ZodEnum<["lan", "internet-auto", "internet-manual"]>>;
344
+ nodeIp: z.ZodOptional<z.ZodNullable<z.ZodString>>;
345
+ }, "strip", z.ZodTypeAny, {
346
+ publicWsUrl?: string | null | undefined;
347
+ transportPolicy?: "auto" | "force-compat" | undefined;
348
+ networkMode?: "lan" | "internet-auto" | "internet-manual" | undefined;
349
+ nodeIp?: string | null | undefined;
350
+ }, {
351
+ publicWsUrl?: string | null | undefined;
352
+ transportPolicy?: "auto" | "force-compat" | undefined;
353
+ networkMode?: "lan" | "internet-auto" | "internet-manual" | undefined;
354
+ nodeIp?: string | null | undefined;
355
+ }>;
356
+ export type RealtimeSettings = z.infer<typeof RealtimeSettingsSchema>;
357
+ export declare const RealtimeCredentialSourceSchema: z.ZodEnum<["managed-file", "environment-override", "missing"]>;
358
+ export type RealtimeCredentialSource = z.infer<typeof RealtimeCredentialSourceSchema>;
359
+ export declare const RealtimeCredentialStatusSchema: z.ZodObject<{
360
+ initialized: z.ZodBoolean;
361
+ source: z.ZodEnum<["managed-file", "environment-override", "missing"]>;
362
+ filePath: z.ZodNullable<z.ZodString>;
363
+ apiKeyPreview: z.ZodNullable<z.ZodString>;
364
+ createdAt: z.ZodNullable<z.ZodString>;
365
+ rotatedAt: z.ZodNullable<z.ZodString>;
366
+ }, "strip", z.ZodTypeAny, {
367
+ source: "managed-file" | "environment-override" | "missing";
368
+ filePath: string | null;
369
+ createdAt: string | null;
370
+ initialized: boolean;
371
+ apiKeyPreview: string | null;
372
+ rotatedAt: string | null;
373
+ }, {
374
+ source: "managed-file" | "environment-override" | "missing";
375
+ filePath: string | null;
376
+ createdAt: string | null;
377
+ initialized: boolean;
378
+ apiKeyPreview: string | null;
379
+ rotatedAt: string | null;
380
+ }>;
381
+ export type RealtimeCredentialStatus = z.infer<typeof RealtimeCredentialStatusSchema>;
382
+ export declare const RealtimeSettingsRuntimeSchema: z.ZodObject<{
383
+ liveKitEnabled: z.ZodBoolean;
384
+ connectivityHints: z.ZodObject<{
385
+ signalingUrl: z.ZodString;
386
+ signalingPort: z.ZodNumber;
387
+ rtcTcpPort: z.ZodNumber;
388
+ udpPortRange: z.ZodString;
389
+ publicUrlOverrideActive: z.ZodBoolean;
390
+ }, "strip", z.ZodTypeAny, {
391
+ signalingUrl: string;
392
+ signalingPort: number;
393
+ rtcTcpPort: number;
394
+ udpPortRange: string;
395
+ publicUrlOverrideActive: boolean;
396
+ }, {
397
+ signalingUrl: string;
398
+ signalingPort: number;
399
+ rtcTcpPort: number;
400
+ udpPortRange: string;
401
+ publicUrlOverrideActive: boolean;
402
+ }>;
403
+ radioReceiveTransport: z.ZodEnum<["livekit", "ws-compat"]>;
404
+ radioBridgeHealthy: z.ZodBoolean;
405
+ radioBridgeIssueCode: z.ZodNullable<z.ZodEnum<["TOKEN_REQUEST_FAILED", "SIGNALING_UNREACHABLE", "PUBLIC_URL_MISCONFIGURED", "ICE_CONNECTION_FAILED", "NO_AUDIO_TRACK", "AUDIO_PLAYBACK_BLOCKED", "SESSION_EXPIRED_OR_INVALID", "MEDIA_DEVICE_PERMISSION_DENIED", "UNKNOWN_REALTIME_ERROR"]>>;
406
+ credentialStatus: z.ZodObject<{
407
+ initialized: z.ZodBoolean;
408
+ source: z.ZodEnum<["managed-file", "environment-override", "missing"]>;
409
+ filePath: z.ZodNullable<z.ZodString>;
410
+ apiKeyPreview: z.ZodNullable<z.ZodString>;
411
+ createdAt: z.ZodNullable<z.ZodString>;
412
+ rotatedAt: z.ZodNullable<z.ZodString>;
413
+ }, "strip", z.ZodTypeAny, {
414
+ source: "managed-file" | "environment-override" | "missing";
415
+ filePath: string | null;
416
+ createdAt: string | null;
417
+ initialized: boolean;
418
+ apiKeyPreview: string | null;
419
+ rotatedAt: string | null;
420
+ }, {
421
+ source: "managed-file" | "environment-override" | "missing";
422
+ filePath: string | null;
423
+ createdAt: string | null;
424
+ initialized: boolean;
425
+ apiKeyPreview: string | null;
426
+ rotatedAt: string | null;
427
+ }>;
428
+ }, "strip", z.ZodTypeAny, {
429
+ connectivityHints: {
430
+ signalingUrl: string;
431
+ signalingPort: number;
432
+ rtcTcpPort: number;
433
+ udpPortRange: string;
434
+ publicUrlOverrideActive: boolean;
435
+ };
436
+ liveKitEnabled: boolean;
437
+ radioReceiveTransport: "livekit" | "ws-compat";
438
+ radioBridgeHealthy: boolean;
439
+ radioBridgeIssueCode: "TOKEN_REQUEST_FAILED" | "SIGNALING_UNREACHABLE" | "PUBLIC_URL_MISCONFIGURED" | "ICE_CONNECTION_FAILED" | "NO_AUDIO_TRACK" | "AUDIO_PLAYBACK_BLOCKED" | "SESSION_EXPIRED_OR_INVALID" | "MEDIA_DEVICE_PERMISSION_DENIED" | "UNKNOWN_REALTIME_ERROR" | null;
440
+ credentialStatus: {
441
+ source: "managed-file" | "environment-override" | "missing";
442
+ filePath: string | null;
443
+ createdAt: string | null;
444
+ initialized: boolean;
445
+ apiKeyPreview: string | null;
446
+ rotatedAt: string | null;
447
+ };
448
+ }, {
449
+ connectivityHints: {
450
+ signalingUrl: string;
451
+ signalingPort: number;
452
+ rtcTcpPort: number;
453
+ udpPortRange: string;
454
+ publicUrlOverrideActive: boolean;
455
+ };
456
+ liveKitEnabled: boolean;
457
+ radioReceiveTransport: "livekit" | "ws-compat";
458
+ radioBridgeHealthy: boolean;
459
+ radioBridgeIssueCode: "TOKEN_REQUEST_FAILED" | "SIGNALING_UNREACHABLE" | "PUBLIC_URL_MISCONFIGURED" | "ICE_CONNECTION_FAILED" | "NO_AUDIO_TRACK" | "AUDIO_PLAYBACK_BLOCKED" | "SESSION_EXPIRED_OR_INVALID" | "MEDIA_DEVICE_PERMISSION_DENIED" | "UNKNOWN_REALTIME_ERROR" | null;
460
+ credentialStatus: {
461
+ source: "managed-file" | "environment-override" | "missing";
462
+ filePath: string | null;
463
+ createdAt: string | null;
464
+ initialized: boolean;
465
+ apiKeyPreview: string | null;
466
+ rotatedAt: string | null;
467
+ };
468
+ }>;
469
+ export type RealtimeSettingsRuntime = z.infer<typeof RealtimeSettingsRuntimeSchema>;
470
+ export declare const RealtimeSettingsResponseDataSchema: z.ZodObject<{
471
+ publicWsUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
472
+ transportPolicy: z.ZodOptional<z.ZodEnum<["auto", "force-compat"]>>;
473
+ networkMode: z.ZodOptional<z.ZodEnum<["lan", "internet-auto", "internet-manual"]>>;
474
+ nodeIp: z.ZodOptional<z.ZodNullable<z.ZodString>>;
475
+ } & {
476
+ runtime: z.ZodOptional<z.ZodObject<{
477
+ liveKitEnabled: z.ZodBoolean;
478
+ connectivityHints: z.ZodObject<{
479
+ signalingUrl: z.ZodString;
480
+ signalingPort: z.ZodNumber;
481
+ rtcTcpPort: z.ZodNumber;
482
+ udpPortRange: z.ZodString;
483
+ publicUrlOverrideActive: z.ZodBoolean;
484
+ }, "strip", z.ZodTypeAny, {
485
+ signalingUrl: string;
486
+ signalingPort: number;
487
+ rtcTcpPort: number;
488
+ udpPortRange: string;
489
+ publicUrlOverrideActive: boolean;
490
+ }, {
491
+ signalingUrl: string;
492
+ signalingPort: number;
493
+ rtcTcpPort: number;
494
+ udpPortRange: string;
495
+ publicUrlOverrideActive: boolean;
496
+ }>;
497
+ radioReceiveTransport: z.ZodEnum<["livekit", "ws-compat"]>;
498
+ radioBridgeHealthy: z.ZodBoolean;
499
+ radioBridgeIssueCode: z.ZodNullable<z.ZodEnum<["TOKEN_REQUEST_FAILED", "SIGNALING_UNREACHABLE", "PUBLIC_URL_MISCONFIGURED", "ICE_CONNECTION_FAILED", "NO_AUDIO_TRACK", "AUDIO_PLAYBACK_BLOCKED", "SESSION_EXPIRED_OR_INVALID", "MEDIA_DEVICE_PERMISSION_DENIED", "UNKNOWN_REALTIME_ERROR"]>>;
500
+ credentialStatus: z.ZodObject<{
501
+ initialized: z.ZodBoolean;
502
+ source: z.ZodEnum<["managed-file", "environment-override", "missing"]>;
503
+ filePath: z.ZodNullable<z.ZodString>;
504
+ apiKeyPreview: z.ZodNullable<z.ZodString>;
505
+ createdAt: z.ZodNullable<z.ZodString>;
506
+ rotatedAt: z.ZodNullable<z.ZodString>;
507
+ }, "strip", z.ZodTypeAny, {
508
+ source: "managed-file" | "environment-override" | "missing";
509
+ filePath: string | null;
510
+ createdAt: string | null;
511
+ initialized: boolean;
512
+ apiKeyPreview: string | null;
513
+ rotatedAt: string | null;
514
+ }, {
515
+ source: "managed-file" | "environment-override" | "missing";
516
+ filePath: string | null;
517
+ createdAt: string | null;
518
+ initialized: boolean;
519
+ apiKeyPreview: string | null;
520
+ rotatedAt: string | null;
521
+ }>;
522
+ }, "strip", z.ZodTypeAny, {
523
+ connectivityHints: {
524
+ signalingUrl: string;
525
+ signalingPort: number;
526
+ rtcTcpPort: number;
527
+ udpPortRange: string;
528
+ publicUrlOverrideActive: boolean;
529
+ };
530
+ liveKitEnabled: boolean;
531
+ radioReceiveTransport: "livekit" | "ws-compat";
532
+ radioBridgeHealthy: boolean;
533
+ radioBridgeIssueCode: "TOKEN_REQUEST_FAILED" | "SIGNALING_UNREACHABLE" | "PUBLIC_URL_MISCONFIGURED" | "ICE_CONNECTION_FAILED" | "NO_AUDIO_TRACK" | "AUDIO_PLAYBACK_BLOCKED" | "SESSION_EXPIRED_OR_INVALID" | "MEDIA_DEVICE_PERMISSION_DENIED" | "UNKNOWN_REALTIME_ERROR" | null;
534
+ credentialStatus: {
535
+ source: "managed-file" | "environment-override" | "missing";
536
+ filePath: string | null;
537
+ createdAt: string | null;
538
+ initialized: boolean;
539
+ apiKeyPreview: string | null;
540
+ rotatedAt: string | null;
541
+ };
542
+ }, {
543
+ connectivityHints: {
544
+ signalingUrl: string;
545
+ signalingPort: number;
546
+ rtcTcpPort: number;
547
+ udpPortRange: string;
548
+ publicUrlOverrideActive: boolean;
549
+ };
550
+ liveKitEnabled: boolean;
551
+ radioReceiveTransport: "livekit" | "ws-compat";
552
+ radioBridgeHealthy: boolean;
553
+ radioBridgeIssueCode: "TOKEN_REQUEST_FAILED" | "SIGNALING_UNREACHABLE" | "PUBLIC_URL_MISCONFIGURED" | "ICE_CONNECTION_FAILED" | "NO_AUDIO_TRACK" | "AUDIO_PLAYBACK_BLOCKED" | "SESSION_EXPIRED_OR_INVALID" | "MEDIA_DEVICE_PERMISSION_DENIED" | "UNKNOWN_REALTIME_ERROR" | null;
554
+ credentialStatus: {
555
+ source: "managed-file" | "environment-override" | "missing";
556
+ filePath: string | null;
557
+ createdAt: string | null;
558
+ initialized: boolean;
559
+ apiKeyPreview: string | null;
560
+ rotatedAt: string | null;
561
+ };
562
+ }>>;
563
+ }, "strip", z.ZodTypeAny, {
564
+ runtime?: {
565
+ connectivityHints: {
566
+ signalingUrl: string;
567
+ signalingPort: number;
568
+ rtcTcpPort: number;
569
+ udpPortRange: string;
570
+ publicUrlOverrideActive: boolean;
571
+ };
572
+ liveKitEnabled: boolean;
573
+ radioReceiveTransport: "livekit" | "ws-compat";
574
+ radioBridgeHealthy: boolean;
575
+ radioBridgeIssueCode: "TOKEN_REQUEST_FAILED" | "SIGNALING_UNREACHABLE" | "PUBLIC_URL_MISCONFIGURED" | "ICE_CONNECTION_FAILED" | "NO_AUDIO_TRACK" | "AUDIO_PLAYBACK_BLOCKED" | "SESSION_EXPIRED_OR_INVALID" | "MEDIA_DEVICE_PERMISSION_DENIED" | "UNKNOWN_REALTIME_ERROR" | null;
576
+ credentialStatus: {
577
+ source: "managed-file" | "environment-override" | "missing";
578
+ filePath: string | null;
579
+ createdAt: string | null;
580
+ initialized: boolean;
581
+ apiKeyPreview: string | null;
582
+ rotatedAt: string | null;
583
+ };
584
+ } | undefined;
585
+ publicWsUrl?: string | null | undefined;
586
+ transportPolicy?: "auto" | "force-compat" | undefined;
587
+ networkMode?: "lan" | "internet-auto" | "internet-manual" | undefined;
588
+ nodeIp?: string | null | undefined;
589
+ }, {
590
+ runtime?: {
591
+ connectivityHints: {
592
+ signalingUrl: string;
593
+ signalingPort: number;
594
+ rtcTcpPort: number;
595
+ udpPortRange: string;
596
+ publicUrlOverrideActive: boolean;
597
+ };
598
+ liveKitEnabled: boolean;
599
+ radioReceiveTransport: "livekit" | "ws-compat";
600
+ radioBridgeHealthy: boolean;
601
+ radioBridgeIssueCode: "TOKEN_REQUEST_FAILED" | "SIGNALING_UNREACHABLE" | "PUBLIC_URL_MISCONFIGURED" | "ICE_CONNECTION_FAILED" | "NO_AUDIO_TRACK" | "AUDIO_PLAYBACK_BLOCKED" | "SESSION_EXPIRED_OR_INVALID" | "MEDIA_DEVICE_PERMISSION_DENIED" | "UNKNOWN_REALTIME_ERROR" | null;
602
+ credentialStatus: {
603
+ source: "managed-file" | "environment-override" | "missing";
604
+ filePath: string | null;
605
+ createdAt: string | null;
606
+ initialized: boolean;
607
+ apiKeyPreview: string | null;
608
+ rotatedAt: string | null;
609
+ };
610
+ } | undefined;
611
+ publicWsUrl?: string | null | undefined;
612
+ transportPolicy?: "auto" | "force-compat" | undefined;
613
+ networkMode?: "lan" | "internet-auto" | "internet-manual" | undefined;
614
+ nodeIp?: string | null | undefined;
615
+ }>;
616
+ export type RealtimeSettingsResponseData = z.infer<typeof RealtimeSettingsResponseDataSchema>;
617
+ export declare const RealtimeSourceStatsSchema: z.ZodObject<{
618
+ latencyMs: z.ZodNumber;
619
+ bufferFillPercent: z.ZodNumber;
620
+ isActive: z.ZodBoolean;
621
+ audioLevel: z.ZodOptional<z.ZodNumber>;
622
+ droppedSamples: z.ZodOptional<z.ZodNumber>;
623
+ sampleRate: z.ZodNumber;
624
+ }, "strip", z.ZodTypeAny, {
625
+ sampleRate: number;
626
+ isActive: boolean;
627
+ latencyMs: number;
628
+ bufferFillPercent: number;
629
+ audioLevel?: number | undefined;
630
+ droppedSamples?: number | undefined;
631
+ }, {
632
+ sampleRate: number;
633
+ isActive: boolean;
634
+ latencyMs: number;
635
+ bufferFillPercent: number;
636
+ audioLevel?: number | undefined;
637
+ droppedSamples?: number | undefined;
638
+ }>;
639
+ export type RealtimeSourceStats = z.infer<typeof RealtimeSourceStatsSchema>;
640
+ export declare const RealtimeStatsRequestSchema: z.ZodObject<{
641
+ scope: z.ZodEnum<["radio", "openwebrx-preview"]>;
642
+ previewSessionId: z.ZodOptional<z.ZodString>;
643
+ }, "strip", z.ZodTypeAny, {
644
+ scope: "radio" | "openwebrx-preview";
645
+ previewSessionId?: string | undefined;
646
+ }, {
647
+ scope: "radio" | "openwebrx-preview";
648
+ previewSessionId?: string | undefined;
649
+ }>;
650
+ export type RealtimeStatsRequest = z.infer<typeof RealtimeStatsRequestSchema>;
651
+ export declare const RealtimeStatsResponseSchema: z.ZodObject<{
652
+ scope: z.ZodEnum<["radio", "openwebrx-preview"]>;
653
+ previewSessionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
654
+ source: z.ZodNullable<z.ZodObject<{
655
+ latencyMs: z.ZodNumber;
656
+ bufferFillPercent: z.ZodNumber;
657
+ isActive: z.ZodBoolean;
658
+ audioLevel: z.ZodOptional<z.ZodNumber>;
659
+ droppedSamples: z.ZodOptional<z.ZodNumber>;
660
+ sampleRate: z.ZodNumber;
661
+ }, "strip", z.ZodTypeAny, {
662
+ sampleRate: number;
663
+ isActive: boolean;
664
+ latencyMs: number;
665
+ bufferFillPercent: number;
666
+ audioLevel?: number | undefined;
667
+ droppedSamples?: number | undefined;
668
+ }, {
669
+ sampleRate: number;
670
+ isActive: boolean;
671
+ latencyMs: number;
672
+ bufferFillPercent: number;
673
+ audioLevel?: number | undefined;
674
+ droppedSamples?: number | undefined;
675
+ }>>;
676
+ transport: z.ZodOptional<z.ZodNullable<z.ZodEnum<["livekit", "ws-compat"]>>>;
677
+ }, "strip", z.ZodTypeAny, {
678
+ scope: "radio" | "openwebrx-preview";
679
+ source: {
680
+ sampleRate: number;
681
+ isActive: boolean;
682
+ latencyMs: number;
683
+ bufferFillPercent: number;
684
+ audioLevel?: number | undefined;
685
+ droppedSamples?: number | undefined;
686
+ } | null;
687
+ previewSessionId?: string | null | undefined;
688
+ transport?: "livekit" | "ws-compat" | null | undefined;
689
+ }, {
690
+ scope: "radio" | "openwebrx-preview";
691
+ source: {
692
+ sampleRate: number;
693
+ isActive: boolean;
694
+ latencyMs: number;
695
+ bufferFillPercent: number;
696
+ audioLevel?: number | undefined;
697
+ droppedSamples?: number | undefined;
698
+ } | null;
699
+ previewSessionId?: string | null | undefined;
700
+ transport?: "livekit" | "ws-compat" | null | undefined;
701
+ }>;
702
+ export type RealtimeStatsResponse = z.infer<typeof RealtimeStatsResponseSchema>;
703
+ export declare const RealtimeVoiceTxMetricWindowSchema: z.ZodObject<{
704
+ current: z.ZodNullable<z.ZodNumber>;
705
+ rolling: z.ZodNullable<z.ZodNumber>;
706
+ peak: z.ZodNullable<z.ZodNumber>;
707
+ }, "strip", z.ZodTypeAny, {
708
+ current: number | null;
709
+ rolling: number | null;
710
+ peak: number | null;
711
+ }, {
712
+ current: number | null;
713
+ rolling: number | null;
714
+ peak: number | null;
715
+ }>;
716
+ export type RealtimeVoiceTxMetricWindow = z.infer<typeof RealtimeVoiceTxMetricWindowSchema>;
717
+ export declare const RealtimeVoiceTxBottleneckStageSchema: z.ZodEnum<["client-capture", "transport", "server-ingress", "server-queue", "server-output"]>;
718
+ export type RealtimeVoiceTxBottleneckStage = z.infer<typeof RealtimeVoiceTxBottleneckStageSchema>;
719
+ export declare const RealtimeVoiceTxSummarySchema: z.ZodObject<{
720
+ active: z.ZodBoolean;
721
+ transport: z.ZodNullable<z.ZodEnum<["livekit", "ws-compat"]>>;
722
+ bottleneckStage: z.ZodNullable<z.ZodEnum<["client-capture", "transport", "server-ingress", "server-queue", "server-output"]>>;
723
+ startedAt: z.ZodNullable<z.ZodNumber>;
724
+ updatedAt: z.ZodNullable<z.ZodNumber>;
725
+ clientId: z.ZodNullable<z.ZodString>;
726
+ label: z.ZodNullable<z.ZodString>;
727
+ }, "strip", z.ZodTypeAny, {
728
+ active: boolean;
729
+ label: string | null;
730
+ updatedAt: number | null;
731
+ transport: "livekit" | "ws-compat" | null;
732
+ bottleneckStage: "transport" | "client-capture" | "server-ingress" | "server-queue" | "server-output" | null;
733
+ startedAt: number | null;
734
+ clientId: string | null;
735
+ }, {
736
+ active: boolean;
737
+ label: string | null;
738
+ updatedAt: number | null;
739
+ transport: "livekit" | "ws-compat" | null;
740
+ bottleneckStage: "transport" | "client-capture" | "server-ingress" | "server-queue" | "server-output" | null;
741
+ startedAt: number | null;
742
+ clientId: string | null;
743
+ }>;
744
+ export type RealtimeVoiceTxSummary = z.infer<typeof RealtimeVoiceTxSummarySchema>;
745
+ export declare const RealtimeVoiceTxTransportStatsSchema: z.ZodObject<{
746
+ receivedFrames: z.ZodNumber;
747
+ sequenceGaps: z.ZodNumber;
748
+ lastSequence: z.ZodNullable<z.ZodNumber>;
749
+ clientToServerMs: z.ZodObject<{
750
+ current: z.ZodNullable<z.ZodNumber>;
751
+ rolling: z.ZodNullable<z.ZodNumber>;
752
+ peak: z.ZodNullable<z.ZodNumber>;
753
+ }, "strip", z.ZodTypeAny, {
754
+ current: number | null;
755
+ rolling: number | null;
756
+ peak: number | null;
757
+ }, {
758
+ current: number | null;
759
+ rolling: number | null;
760
+ peak: number | null;
761
+ }>;
762
+ }, "strip", z.ZodTypeAny, {
763
+ receivedFrames: number;
764
+ sequenceGaps: number;
765
+ lastSequence: number | null;
766
+ clientToServerMs: {
767
+ current: number | null;
768
+ rolling: number | null;
769
+ peak: number | null;
770
+ };
771
+ }, {
772
+ receivedFrames: number;
773
+ sequenceGaps: number;
774
+ lastSequence: number | null;
775
+ clientToServerMs: {
776
+ current: number | null;
777
+ rolling: number | null;
778
+ peak: number | null;
779
+ };
780
+ }>;
781
+ export type RealtimeVoiceTxTransportStats = z.infer<typeof RealtimeVoiceTxTransportStatsSchema>;
782
+ export declare const RealtimeVoiceTxServerIngressStatsSchema: z.ZodObject<{
783
+ frameIntervalMs: z.ZodObject<{
784
+ current: z.ZodNullable<z.ZodNumber>;
785
+ rolling: z.ZodNullable<z.ZodNumber>;
786
+ peak: z.ZodNullable<z.ZodNumber>;
787
+ }, "strip", z.ZodTypeAny, {
788
+ current: number | null;
789
+ rolling: number | null;
790
+ peak: number | null;
791
+ }, {
792
+ current: number | null;
793
+ rolling: number | null;
794
+ peak: number | null;
795
+ }>;
796
+ queueDepthFrames: z.ZodNumber;
797
+ queuedAudioMs: z.ZodNumber;
798
+ droppedFrames: z.ZodNumber;
799
+ }, "strip", z.ZodTypeAny, {
800
+ frameIntervalMs: {
801
+ current: number | null;
802
+ rolling: number | null;
803
+ peak: number | null;
804
+ };
805
+ queueDepthFrames: number;
806
+ queuedAudioMs: number;
807
+ droppedFrames: number;
808
+ }, {
809
+ frameIntervalMs: {
810
+ current: number | null;
811
+ rolling: number | null;
812
+ peak: number | null;
813
+ };
814
+ queueDepthFrames: number;
815
+ queuedAudioMs: number;
816
+ droppedFrames: number;
817
+ }>;
818
+ export type RealtimeVoiceTxServerIngressStats = z.infer<typeof RealtimeVoiceTxServerIngressStatsSchema>;
819
+ export declare const RealtimeVoiceTxServerOutputStatsSchema: z.ZodObject<{
820
+ resampleMs: z.ZodObject<{
821
+ current: z.ZodNullable<z.ZodNumber>;
822
+ rolling: z.ZodNullable<z.ZodNumber>;
823
+ peak: z.ZodNullable<z.ZodNumber>;
824
+ }, "strip", z.ZodTypeAny, {
825
+ current: number | null;
826
+ rolling: number | null;
827
+ peak: number | null;
828
+ }, {
829
+ current: number | null;
830
+ rolling: number | null;
831
+ peak: number | null;
832
+ }>;
833
+ queueWaitMs: z.ZodObject<{
834
+ current: z.ZodNullable<z.ZodNumber>;
835
+ rolling: z.ZodNullable<z.ZodNumber>;
836
+ peak: z.ZodNullable<z.ZodNumber>;
837
+ }, "strip", z.ZodTypeAny, {
838
+ current: number | null;
839
+ rolling: number | null;
840
+ peak: number | null;
841
+ }, {
842
+ current: number | null;
843
+ rolling: number | null;
844
+ peak: number | null;
845
+ }>;
846
+ writeMs: z.ZodObject<{
847
+ current: z.ZodNullable<z.ZodNumber>;
848
+ rolling: z.ZodNullable<z.ZodNumber>;
849
+ peak: z.ZodNullable<z.ZodNumber>;
850
+ }, "strip", z.ZodTypeAny, {
851
+ current: number | null;
852
+ rolling: number | null;
853
+ peak: number | null;
854
+ }, {
855
+ current: number | null;
856
+ rolling: number | null;
857
+ peak: number | null;
858
+ }>;
859
+ endToEndMs: z.ZodObject<{
860
+ current: z.ZodNullable<z.ZodNumber>;
861
+ rolling: z.ZodNullable<z.ZodNumber>;
862
+ peak: z.ZodNullable<z.ZodNumber>;
863
+ }, "strip", z.ZodTypeAny, {
864
+ current: number | null;
865
+ rolling: number | null;
866
+ peak: number | null;
867
+ }, {
868
+ current: number | null;
869
+ rolling: number | null;
870
+ peak: number | null;
871
+ }>;
872
+ outputBufferedMs: z.ZodObject<{
873
+ current: z.ZodNullable<z.ZodNumber>;
874
+ rolling: z.ZodNullable<z.ZodNumber>;
875
+ peak: z.ZodNullable<z.ZodNumber>;
876
+ }, "strip", z.ZodTypeAny, {
877
+ current: number | null;
878
+ rolling: number | null;
879
+ peak: number | null;
880
+ }, {
881
+ current: number | null;
882
+ rolling: number | null;
883
+ peak: number | null;
884
+ }>;
885
+ outputSampleRate: z.ZodNullable<z.ZodNumber>;
886
+ outputBufferSize: z.ZodNullable<z.ZodNumber>;
887
+ writeFailures: z.ZodNumber;
888
+ }, "strip", z.ZodTypeAny, {
889
+ resampleMs: {
890
+ current: number | null;
891
+ rolling: number | null;
892
+ peak: number | null;
893
+ };
894
+ queueWaitMs: {
895
+ current: number | null;
896
+ rolling: number | null;
897
+ peak: number | null;
898
+ };
899
+ writeMs: {
900
+ current: number | null;
901
+ rolling: number | null;
902
+ peak: number | null;
903
+ };
904
+ endToEndMs: {
905
+ current: number | null;
906
+ rolling: number | null;
907
+ peak: number | null;
908
+ };
909
+ outputBufferedMs: {
910
+ current: number | null;
911
+ rolling: number | null;
912
+ peak: number | null;
913
+ };
914
+ outputSampleRate: number | null;
915
+ outputBufferSize: number | null;
916
+ writeFailures: number;
917
+ }, {
918
+ resampleMs: {
919
+ current: number | null;
920
+ rolling: number | null;
921
+ peak: number | null;
922
+ };
923
+ queueWaitMs: {
924
+ current: number | null;
925
+ rolling: number | null;
926
+ peak: number | null;
927
+ };
928
+ writeMs: {
929
+ current: number | null;
930
+ rolling: number | null;
931
+ peak: number | null;
932
+ };
933
+ endToEndMs: {
934
+ current: number | null;
935
+ rolling: number | null;
936
+ peak: number | null;
937
+ };
938
+ outputBufferedMs: {
939
+ current: number | null;
940
+ rolling: number | null;
941
+ peak: number | null;
942
+ };
943
+ outputSampleRate: number | null;
944
+ outputBufferSize: number | null;
945
+ writeFailures: number;
946
+ }>;
947
+ export type RealtimeVoiceTxServerOutputStats = z.infer<typeof RealtimeVoiceTxServerOutputStatsSchema>;
948
+ export declare const RealtimeVoiceTxStatsResponseSchema: z.ZodObject<{
949
+ scope: z.ZodEnum<["radio", "openwebrx-preview"]>;
950
+ summary: z.ZodObject<{
951
+ active: z.ZodBoolean;
952
+ transport: z.ZodNullable<z.ZodEnum<["livekit", "ws-compat"]>>;
953
+ bottleneckStage: z.ZodNullable<z.ZodEnum<["client-capture", "transport", "server-ingress", "server-queue", "server-output"]>>;
954
+ startedAt: z.ZodNullable<z.ZodNumber>;
955
+ updatedAt: z.ZodNullable<z.ZodNumber>;
956
+ clientId: z.ZodNullable<z.ZodString>;
957
+ label: z.ZodNullable<z.ZodString>;
958
+ }, "strip", z.ZodTypeAny, {
959
+ active: boolean;
960
+ label: string | null;
961
+ updatedAt: number | null;
962
+ transport: "livekit" | "ws-compat" | null;
963
+ bottleneckStage: "transport" | "client-capture" | "server-ingress" | "server-queue" | "server-output" | null;
964
+ startedAt: number | null;
965
+ clientId: string | null;
966
+ }, {
967
+ active: boolean;
968
+ label: string | null;
969
+ updatedAt: number | null;
970
+ transport: "livekit" | "ws-compat" | null;
971
+ bottleneckStage: "transport" | "client-capture" | "server-ingress" | "server-queue" | "server-output" | null;
972
+ startedAt: number | null;
973
+ clientId: string | null;
974
+ }>;
975
+ transport: z.ZodObject<{
976
+ receivedFrames: z.ZodNumber;
977
+ sequenceGaps: z.ZodNumber;
978
+ lastSequence: z.ZodNullable<z.ZodNumber>;
979
+ clientToServerMs: z.ZodObject<{
980
+ current: z.ZodNullable<z.ZodNumber>;
981
+ rolling: z.ZodNullable<z.ZodNumber>;
982
+ peak: z.ZodNullable<z.ZodNumber>;
983
+ }, "strip", z.ZodTypeAny, {
984
+ current: number | null;
985
+ rolling: number | null;
986
+ peak: number | null;
987
+ }, {
988
+ current: number | null;
989
+ rolling: number | null;
990
+ peak: number | null;
991
+ }>;
992
+ }, "strip", z.ZodTypeAny, {
993
+ receivedFrames: number;
994
+ sequenceGaps: number;
995
+ lastSequence: number | null;
996
+ clientToServerMs: {
997
+ current: number | null;
998
+ rolling: number | null;
999
+ peak: number | null;
1000
+ };
1001
+ }, {
1002
+ receivedFrames: number;
1003
+ sequenceGaps: number;
1004
+ lastSequence: number | null;
1005
+ clientToServerMs: {
1006
+ current: number | null;
1007
+ rolling: number | null;
1008
+ peak: number | null;
1009
+ };
1010
+ }>;
1011
+ serverIngress: z.ZodObject<{
1012
+ frameIntervalMs: z.ZodObject<{
1013
+ current: z.ZodNullable<z.ZodNumber>;
1014
+ rolling: z.ZodNullable<z.ZodNumber>;
1015
+ peak: z.ZodNullable<z.ZodNumber>;
1016
+ }, "strip", z.ZodTypeAny, {
1017
+ current: number | null;
1018
+ rolling: number | null;
1019
+ peak: number | null;
1020
+ }, {
1021
+ current: number | null;
1022
+ rolling: number | null;
1023
+ peak: number | null;
1024
+ }>;
1025
+ queueDepthFrames: z.ZodNumber;
1026
+ queuedAudioMs: z.ZodNumber;
1027
+ droppedFrames: z.ZodNumber;
1028
+ }, "strip", z.ZodTypeAny, {
1029
+ frameIntervalMs: {
1030
+ current: number | null;
1031
+ rolling: number | null;
1032
+ peak: number | null;
1033
+ };
1034
+ queueDepthFrames: number;
1035
+ queuedAudioMs: number;
1036
+ droppedFrames: number;
1037
+ }, {
1038
+ frameIntervalMs: {
1039
+ current: number | null;
1040
+ rolling: number | null;
1041
+ peak: number | null;
1042
+ };
1043
+ queueDepthFrames: number;
1044
+ queuedAudioMs: number;
1045
+ droppedFrames: number;
1046
+ }>;
1047
+ serverOutput: z.ZodObject<{
1048
+ resampleMs: z.ZodObject<{
1049
+ current: z.ZodNullable<z.ZodNumber>;
1050
+ rolling: z.ZodNullable<z.ZodNumber>;
1051
+ peak: z.ZodNullable<z.ZodNumber>;
1052
+ }, "strip", z.ZodTypeAny, {
1053
+ current: number | null;
1054
+ rolling: number | null;
1055
+ peak: number | null;
1056
+ }, {
1057
+ current: number | null;
1058
+ rolling: number | null;
1059
+ peak: number | null;
1060
+ }>;
1061
+ queueWaitMs: z.ZodObject<{
1062
+ current: z.ZodNullable<z.ZodNumber>;
1063
+ rolling: z.ZodNullable<z.ZodNumber>;
1064
+ peak: z.ZodNullable<z.ZodNumber>;
1065
+ }, "strip", z.ZodTypeAny, {
1066
+ current: number | null;
1067
+ rolling: number | null;
1068
+ peak: number | null;
1069
+ }, {
1070
+ current: number | null;
1071
+ rolling: number | null;
1072
+ peak: number | null;
1073
+ }>;
1074
+ writeMs: z.ZodObject<{
1075
+ current: z.ZodNullable<z.ZodNumber>;
1076
+ rolling: z.ZodNullable<z.ZodNumber>;
1077
+ peak: z.ZodNullable<z.ZodNumber>;
1078
+ }, "strip", z.ZodTypeAny, {
1079
+ current: number | null;
1080
+ rolling: number | null;
1081
+ peak: number | null;
1082
+ }, {
1083
+ current: number | null;
1084
+ rolling: number | null;
1085
+ peak: number | null;
1086
+ }>;
1087
+ endToEndMs: z.ZodObject<{
1088
+ current: z.ZodNullable<z.ZodNumber>;
1089
+ rolling: z.ZodNullable<z.ZodNumber>;
1090
+ peak: z.ZodNullable<z.ZodNumber>;
1091
+ }, "strip", z.ZodTypeAny, {
1092
+ current: number | null;
1093
+ rolling: number | null;
1094
+ peak: number | null;
1095
+ }, {
1096
+ current: number | null;
1097
+ rolling: number | null;
1098
+ peak: number | null;
1099
+ }>;
1100
+ outputBufferedMs: z.ZodObject<{
1101
+ current: z.ZodNullable<z.ZodNumber>;
1102
+ rolling: z.ZodNullable<z.ZodNumber>;
1103
+ peak: z.ZodNullable<z.ZodNumber>;
1104
+ }, "strip", z.ZodTypeAny, {
1105
+ current: number | null;
1106
+ rolling: number | null;
1107
+ peak: number | null;
1108
+ }, {
1109
+ current: number | null;
1110
+ rolling: number | null;
1111
+ peak: number | null;
1112
+ }>;
1113
+ outputSampleRate: z.ZodNullable<z.ZodNumber>;
1114
+ outputBufferSize: z.ZodNullable<z.ZodNumber>;
1115
+ writeFailures: z.ZodNumber;
1116
+ }, "strip", z.ZodTypeAny, {
1117
+ resampleMs: {
1118
+ current: number | null;
1119
+ rolling: number | null;
1120
+ peak: number | null;
1121
+ };
1122
+ queueWaitMs: {
1123
+ current: number | null;
1124
+ rolling: number | null;
1125
+ peak: number | null;
1126
+ };
1127
+ writeMs: {
1128
+ current: number | null;
1129
+ rolling: number | null;
1130
+ peak: number | null;
1131
+ };
1132
+ endToEndMs: {
1133
+ current: number | null;
1134
+ rolling: number | null;
1135
+ peak: number | null;
1136
+ };
1137
+ outputBufferedMs: {
1138
+ current: number | null;
1139
+ rolling: number | null;
1140
+ peak: number | null;
1141
+ };
1142
+ outputSampleRate: number | null;
1143
+ outputBufferSize: number | null;
1144
+ writeFailures: number;
1145
+ }, {
1146
+ resampleMs: {
1147
+ current: number | null;
1148
+ rolling: number | null;
1149
+ peak: number | null;
1150
+ };
1151
+ queueWaitMs: {
1152
+ current: number | null;
1153
+ rolling: number | null;
1154
+ peak: number | null;
1155
+ };
1156
+ writeMs: {
1157
+ current: number | null;
1158
+ rolling: number | null;
1159
+ peak: number | null;
1160
+ };
1161
+ endToEndMs: {
1162
+ current: number | null;
1163
+ rolling: number | null;
1164
+ peak: number | null;
1165
+ };
1166
+ outputBufferedMs: {
1167
+ current: number | null;
1168
+ rolling: number | null;
1169
+ peak: number | null;
1170
+ };
1171
+ outputSampleRate: number | null;
1172
+ outputBufferSize: number | null;
1173
+ writeFailures: number;
1174
+ }>;
1175
+ }, "strip", z.ZodTypeAny, {
1176
+ summary: {
1177
+ active: boolean;
1178
+ label: string | null;
1179
+ updatedAt: number | null;
1180
+ transport: "livekit" | "ws-compat" | null;
1181
+ bottleneckStage: "transport" | "client-capture" | "server-ingress" | "server-queue" | "server-output" | null;
1182
+ startedAt: number | null;
1183
+ clientId: string | null;
1184
+ };
1185
+ scope: "radio" | "openwebrx-preview";
1186
+ transport: {
1187
+ receivedFrames: number;
1188
+ sequenceGaps: number;
1189
+ lastSequence: number | null;
1190
+ clientToServerMs: {
1191
+ current: number | null;
1192
+ rolling: number | null;
1193
+ peak: number | null;
1194
+ };
1195
+ };
1196
+ serverIngress: {
1197
+ frameIntervalMs: {
1198
+ current: number | null;
1199
+ rolling: number | null;
1200
+ peak: number | null;
1201
+ };
1202
+ queueDepthFrames: number;
1203
+ queuedAudioMs: number;
1204
+ droppedFrames: number;
1205
+ };
1206
+ serverOutput: {
1207
+ resampleMs: {
1208
+ current: number | null;
1209
+ rolling: number | null;
1210
+ peak: number | null;
1211
+ };
1212
+ queueWaitMs: {
1213
+ current: number | null;
1214
+ rolling: number | null;
1215
+ peak: number | null;
1216
+ };
1217
+ writeMs: {
1218
+ current: number | null;
1219
+ rolling: number | null;
1220
+ peak: number | null;
1221
+ };
1222
+ endToEndMs: {
1223
+ current: number | null;
1224
+ rolling: number | null;
1225
+ peak: number | null;
1226
+ };
1227
+ outputBufferedMs: {
1228
+ current: number | null;
1229
+ rolling: number | null;
1230
+ peak: number | null;
1231
+ };
1232
+ outputSampleRate: number | null;
1233
+ outputBufferSize: number | null;
1234
+ writeFailures: number;
1235
+ };
1236
+ }, {
1237
+ summary: {
1238
+ active: boolean;
1239
+ label: string | null;
1240
+ updatedAt: number | null;
1241
+ transport: "livekit" | "ws-compat" | null;
1242
+ bottleneckStage: "transport" | "client-capture" | "server-ingress" | "server-queue" | "server-output" | null;
1243
+ startedAt: number | null;
1244
+ clientId: string | null;
1245
+ };
1246
+ scope: "radio" | "openwebrx-preview";
1247
+ transport: {
1248
+ receivedFrames: number;
1249
+ sequenceGaps: number;
1250
+ lastSequence: number | null;
1251
+ clientToServerMs: {
1252
+ current: number | null;
1253
+ rolling: number | null;
1254
+ peak: number | null;
1255
+ };
1256
+ };
1257
+ serverIngress: {
1258
+ frameIntervalMs: {
1259
+ current: number | null;
1260
+ rolling: number | null;
1261
+ peak: number | null;
1262
+ };
1263
+ queueDepthFrames: number;
1264
+ queuedAudioMs: number;
1265
+ droppedFrames: number;
1266
+ };
1267
+ serverOutput: {
1268
+ resampleMs: {
1269
+ current: number | null;
1270
+ rolling: number | null;
1271
+ peak: number | null;
1272
+ };
1273
+ queueWaitMs: {
1274
+ current: number | null;
1275
+ rolling: number | null;
1276
+ peak: number | null;
1277
+ };
1278
+ writeMs: {
1279
+ current: number | null;
1280
+ rolling: number | null;
1281
+ peak: number | null;
1282
+ };
1283
+ endToEndMs: {
1284
+ current: number | null;
1285
+ rolling: number | null;
1286
+ peak: number | null;
1287
+ };
1288
+ outputBufferedMs: {
1289
+ current: number | null;
1290
+ rolling: number | null;
1291
+ peak: number | null;
1292
+ };
1293
+ outputSampleRate: number | null;
1294
+ outputBufferSize: number | null;
1295
+ writeFailures: number;
1296
+ };
1297
+ }>;
1298
+ export type RealtimeVoiceTxStatsResponse = z.infer<typeof RealtimeVoiceTxStatsResponseSchema>;
1299
+ //# sourceMappingURL=realtime.schema.d.ts.map