import { z } from 'zod'; /** * 模式描述符 - 定义 FT8/FT4 等模式的时序参数 */ export declare const ModeDescriptorSchema: z.ZodObject<{ /** 模式名称,如 "FT8", "FT4" */ name: z.ZodString; /** 时隙长度(毫秒),FT8=15000, FT4=7500, VOICE=0 */ slotMs: z.ZodNumber; /** 时钟容差(毫秒) */ toleranceMs: z.ZodDefault; /** * 窗口时机(毫秒)- 必需 * 使用这些时机作为从时隙结束时间的偏移量 * 每个窗口都会获取固定长度的解码数据(FT8: 15秒,FT4: 7.5秒) * 数组长度决定了子窗口的数量 * 支持负偏移,可以获取时隙结束前或其他周期的音频数据 */ windowTiming: z.ZodArray; /** * 发射时机(毫秒)- 从时隙开始的延迟 * 对齐 WSJT-X 标准:信号在时隙边界后 ~0.5s 开始 * FT8: 500ms(信号 T+0.5s 起,12.64s 长,T+13.14s 结束) * FT4: 500ms(信号 T+0.5s 起,6.0s 长,T+6.5s 结束,留 1.0s 给末端解码) */ transmitTiming: z.ZodNumber; /** * 编码提前量(毫秒)- 在transmitTiming之前多久开始编码 * 默认400ms,用于补偿编码+混音时间 */ encodeAdvance: z.ZodDefault; }, "strip", z.ZodTypeAny, { name: string; slotMs: number; toleranceMs: number; windowTiming: number[]; transmitTiming: number; encodeAdvance: number; }, { name: string; slotMs: number; windowTiming: number[]; transmitTiming: number; toleranceMs?: number | undefined; encodeAdvance?: number | undefined; }>; export type ModeDescriptor = z.infer; /** * 预定义的模式 */ export declare const MODES: { readonly FT8: ModeDescriptor; readonly FT4: ModeDescriptor; readonly VOICE: ModeDescriptor; readonly CW: ModeDescriptor; }; /** * 解码窗口预设 */ export declare const DecodeWindowPreset: { readonly MAXIMUM: "maximum"; readonly BALANCED: "balanced"; readonly LIGHTWEIGHT: "lightweight"; readonly MINIMUM: "minimum"; readonly CUSTOM: "custom"; }; /** * FT8 解码窗口预设映射 * 偏移量基于时隙结束时间(T+15000ms),即 offset = 实际触发时间 - 15000 * FT8 信号:T+500ms 开始,T+13140ms 结束(12.64s) * WSJT-X 标准三轮:T+11.8s(-3200) / T+13.5s(-1500) / T+14.7s(-300) */ export declare const FT8_WINDOW_PRESETS: Record; /** * FT4 解码窗口预设映射 * 偏移量基于时隙结束时间(T+7500ms) * FT4 信号:T+500ms 开始,T+6500ms 结束(6.0s) * 双 pass 设计对齐 WSJT-X/JTDX:早 pass 让下一周期 encodeStart 前能用上结果 */ export declare const FT4_WINDOW_PRESETS: Record; /** * 解码窗口设置 Schema */ export declare const DecodeWindowSettingsSchema: z.ZodObject<{ ft8: z.ZodOptional>; customWindowTiming: z.ZodOptional>; }, "strip", z.ZodTypeAny, { preset: "minimum" | "maximum" | "custom" | "balanced" | "lightweight"; customWindowTiming?: number[] | undefined; }, { preset?: "minimum" | "maximum" | "custom" | "balanced" | "lightweight" | undefined; customWindowTiming?: number[] | undefined; }>>; ft4: z.ZodOptional>; customWindowTiming: z.ZodOptional>; }, "strip", z.ZodTypeAny, { preset: "maximum" | "custom" | "balanced" | "lightweight"; customWindowTiming?: number[] | undefined; }, { preset?: "maximum" | "custom" | "balanced" | "lightweight" | undefined; customWindowTiming?: number[] | undefined; }>>; }, "strip", z.ZodTypeAny, { ft8?: { preset: "minimum" | "maximum" | "custom" | "balanced" | "lightweight"; customWindowTiming?: number[] | undefined; } | undefined; ft4?: { preset: "maximum" | "custom" | "balanced" | "lightweight"; customWindowTiming?: number[] | undefined; } | undefined; }, { ft8?: { preset?: "minimum" | "maximum" | "custom" | "balanced" | "lightweight" | undefined; customWindowTiming?: number[] | undefined; } | undefined; ft4?: { preset?: "maximum" | "custom" | "balanced" | "lightweight" | undefined; customWindowTiming?: number[] | undefined; } | undefined; }>; export type DecodeWindowSettings = z.infer; export declare const DEFAULT_DECODE_WINDOW_SETTINGS: DecodeWindowSettings; /** * 根据模式名和设置解析实际的 windowTiming * 返回 null 表示使用 MODES 中的默认值 */ export declare function resolveWindowTiming(modeName: string, settings?: DecodeWindowSettings): number[] | null; //# sourceMappingURL=mode.schema.d.ts.map