import { z } from 'zod'; /** * OpenWebRX SDR Profile 频率覆盖范围(持久化缓存) * Profile API 只返回 {id, name},覆盖范围需切换到该 profile 后从 config 获取。 * 缓存后避免重复探测(每次探测需 11s 冷却以规避 bot 检测)。 */ export declare const OpenWebRXProfileCoverageSchema: z.ZodObject<{ profileId: z.ZodString; profileName: z.ZodString; centerFreq: z.ZodNumber; sampRate: z.ZodNumber; lastUpdated: z.ZodNumber; }, "strip", z.ZodTypeAny, { lastUpdated: number; profileId: string; profileName: string; centerFreq: number; sampRate: number; }, { lastUpdated: number; profileId: string; profileName: string; centerFreq: number; sampRate: number; }>; /** * OpenWebRX SDR 站点配置 Schema */ export declare const OpenWebRXStationConfigSchema: z.ZodObject<{ /** 站点唯一ID */ id: z.ZodString; /** 用户定义的站点名称 */ name: z.ZodString; /** WebSocket URL,如 "ws://host:8073" 或 "wss://..." */ url: z.ZodString; /** 站点描述 */ description: z.ZodOptional; /** 已知的 Profile 频率覆盖范围缓存(持久化,重启后无需重新探测) */ profileCoverages: z.ZodOptional, "many">>; }, "strip", z.ZodTypeAny, { id: string; name: string; url: string; description?: string | undefined; profileCoverages?: { lastUpdated: number; profileId: string; profileName: string; centerFreq: number; sampRate: number; }[] | undefined; }, { id: string; name: string; url: string; description?: string | undefined; profileCoverages?: { lastUpdated: number; profileId: string; profileName: string; centerFreq: number; sampRate: number; }[] | undefined; }>; /** * OpenWebRX SDR Profile 信息(远端服务器返回) */ export declare const OpenWebRXProfileSchema: z.ZodObject<{ /** Profile ID,格式为 "sdr_id|profile_id" */ id: z.ZodString; /** 显示名称 */ name: z.ZodString; }, "strip", z.ZodTypeAny, { id: string; name: string; }, { id: string; name: string; }>; /** * OpenWebRX 连接测试结果 */ export declare const OpenWebRXTestResultSchema: z.ZodObject<{ success: z.ZodBoolean; /** 服务器版本 */ serverVersion: z.ZodOptional; /** 可用的 SDR Profile 列表 */ profiles: z.ZodOptional, "many">>; /** 错误信息 */ error: z.ZodOptional; }, "strip", z.ZodTypeAny, { success: boolean; error?: string | undefined; profiles?: { id: string; name: string; }[] | undefined; serverVersion?: string | undefined; }, { success: boolean; error?: string | undefined; profiles?: { id: string; name: string; }[] | undefined; serverVersion?: string | undefined; }>; /** * OpenWebRX 试听状态 */ export declare const OpenWebRXListenStatusSchema: z.ZodObject<{ /** 试听会话 ID,用于生成实时音频 preview 会话 */ previewSessionId: z.ZodOptional; /** 站点ID */ stationId: z.ZodString; /** 是否已连接 */ connected: z.ZodBoolean; /** 服务器版本 */ serverVersion: z.ZodOptional; /** 可用 Profile 列表 */ profiles: z.ZodArray, "many">; /** 当前选中的 Profile ID */ currentProfileId: z.ZodOptional; /** 当前中心频率 (Hz) */ centerFreq: z.ZodOptional; /** 当前采样率 (Hz) */ sampleRate: z.ZodOptional; /** 当前 tune 频率 (Hz) */ frequency: z.ZodOptional; /** 当前调制模式 */ modulation: z.ZodOptional; /** S-Meter 读数 (dBFS) */ smeterDb: z.ZodOptional; /** 是否正在试听 */ isListening: z.ZodBoolean; /** 错误信息 */ error: z.ZodOptional; }, "strip", z.ZodTypeAny, { connected: boolean; profiles: { id: string; name: string; }[]; stationId: string; isListening: boolean; sampleRate?: number | undefined; error?: string | undefined; frequency?: number | undefined; previewSessionId?: string | undefined; centerFreq?: number | undefined; serverVersion?: string | undefined; currentProfileId?: string | undefined; modulation?: string | undefined; smeterDb?: number | undefined; }, { connected: boolean; profiles: { id: string; name: string; }[]; stationId: string; isListening: boolean; sampleRate?: number | undefined; error?: string | undefined; frequency?: number | undefined; previewSessionId?: string | undefined; centerFreq?: number | undefined; serverVersion?: string | undefined; currentProfileId?: string | undefined; modulation?: string | undefined; smeterDb?: number | undefined; }>; /** * OpenWebRX 试听启动参数 */ export declare const OpenWebRXListenStartSchema: z.ZodObject<{ /** 站点ID */ stationId: z.ZodString; /** 指定 Profile ID(可选,不指定则使用默认) */ profileId: z.ZodOptional; /** 频率 (Hz) */ frequency: z.ZodOptional; /** 调制模式 */ modulation: z.ZodOptional; }, "strip", z.ZodTypeAny, { stationId: string; frequency?: number | undefined; profileId?: string | undefined; modulation?: string | undefined; }, { stationId: string; frequency?: number | undefined; profileId?: string | undefined; modulation?: string | undefined; }>; /** * OpenWebRX 试听调整参数 */ export declare const OpenWebRXListenTuneSchema: z.ZodObject<{ /** 切换到的 Profile ID */ profileId: z.ZodOptional; /** 频率 (Hz) */ frequency: z.ZodOptional; /** 调制模式 */ modulation: z.ZodOptional; /** 带通滤波器低端 (Hz) */ bandpassLow: z.ZodOptional; /** 带通滤波器高端 (Hz) */ bandpassHigh: z.ZodOptional; }, "strip", z.ZodTypeAny, { frequency?: number | undefined; profileId?: string | undefined; modulation?: string | undefined; bandpassLow?: number | undefined; bandpassHigh?: number | undefined; }, { frequency?: number | undefined; profileId?: string | undefined; modulation?: string | undefined; bandpassLow?: number | undefined; bandpassHigh?: number | undefined; }>; /** * Server → Client: 请求管理员手动选择 SDR Profile * 当引擎自动匹配(缓存 + 名称启发式)全部失败时发出 */ export declare const OpenWebRXProfileSelectRequestSchema: z.ZodObject<{ requestId: z.ZodString; targetFrequency: z.ZodNumber; profiles: z.ZodArray, "many">; currentProfileId: z.ZodOptional; }, "strip", z.ZodTypeAny, { profiles: { id: string; name: string; }[]; requestId: string; targetFrequency: number; currentProfileId?: string | undefined; }, { profiles: { id: string; name: string; }[]; requestId: string; targetFrequency: number; currentProfileId?: string | undefined; }>; /** * Client → Server: 用户选择了 Profile 并请求验证 */ export declare const OpenWebRXProfileSelectResponseSchema: z.ZodObject<{ requestId: z.ZodString; profileId: z.ZodString; targetFrequency: z.ZodNumber; }, "strip", z.ZodTypeAny, { profileId: string; requestId: string; targetFrequency: number; }, { profileId: string; requestId: string; targetFrequency: number; }>; /** * Server → Client: Profile 验证结果 */ export declare const OpenWebRXProfileVerifyResultSchema: z.ZodObject<{ requestId: z.ZodString; success: z.ZodBoolean; profileId: z.ZodString; profileName: z.ZodOptional; centerFreq: z.ZodOptional; sampRate: z.ZodOptional; error: z.ZodOptional; }, "strip", z.ZodTypeAny, { success: boolean; profileId: string; requestId: string; error?: string | undefined; profileName?: string | undefined; centerFreq?: number | undefined; sampRate?: number | undefined; }, { success: boolean; profileId: string; requestId: string; error?: string | undefined; profileName?: string | undefined; centerFreq?: number | undefined; sampRate?: number | undefined; }>; export type OpenWebRXStationConfig = z.infer; export type OpenWebRXProfile = z.infer; export type OpenWebRXProfileCoverage = z.infer; export type OpenWebRXTestResult = z.infer; export type OpenWebRXListenStatus = z.infer; export type OpenWebRXListenStart = z.infer; export type OpenWebRXListenTune = z.infer; export type OpenWebRXProfileSelectRequest = z.infer; export type OpenWebRXProfileSelectResponse = z.infer; export type OpenWebRXProfileVerifyResult = z.infer; //# sourceMappingURL=openwebrx.schema.d.ts.map