import type { RawSettingValue } from "../model/type.js"; /** 草稿解析结论:成功带回还原后的频道数组(原始形态,调用方再归一化);失败只带一句话。 */ export type ResolvedDraft = { readonly ok: true; readonly channels: readonly RawSettingValue[]; } | { readonly ok: false; readonly hint: string; }; /** * 解析 dry-run 草稿:draft 必须是对象,其 channels 必须是数组;按 id 还原掩码、扫残留、 * 再逐项校验。三步任一失败即整体拒绝——半条还原的草稿没有「测一半」的语义。 * * **掩码两步排在逐项校验之前**(#1016 S2):写面不再透传陌生键,于是「webhook 条目上带一个 * bark 的 deviceKey 占位」会先被陌生键判据接住,而那句话(`deviceKey 不是已知键`)对用户是 * 误导——他真正要知道的是「你贴进来的凭据对不上任何已存值」。安全信号优先于形状信号。 * * @param draft 请求体里的 draft(顶层其它键与 revision 由调用方忽略,不进这里)。 * @param secrets 掩码还原的原值来源(调用方传已生效设置的 channels,含明文凭据、不外发)。 */ export declare function resolveDraftChannels(draft: unknown, secrets: readonly RawSettingValue[] | undefined): ResolvedDraft;