export type RegisterBrand = 'feishu' | 'lark'; export type RegisterAppOk = { ok: true; appId: string; appSecret: string; brand: RegisterBrand; /** * 扫码人的 open_id(飞书 device flow `request_user_info=open_id tenant_brand` * 字段返回)。它只是 owner candidate:必须由目标应用验证并尽量转换为 * union_id 后才能持久化,验证失败不得把这个 open_id fallback 写入 * `allowedUsers`。没拿到时为 undefined(理论上不会,但接口可能改)。 */ userOpenId?: string; }; export type RegisterAppErr = { ok: false; /** * - `aborted`: 用户 Ctrl-C / 主动取消 * - `expired`: 二维码过期 (默认 10 分钟) * - `denied`: 用户在浏览器里拒绝 * - `network`: 网络错误 / 端点不可达 * - `unknown`: 其它 (含 SDK 抛非预期错误) */ error: 'aborted' | 'expired' | 'denied' | 'network' | 'unknown'; /** 给用户看的简短错误描述, 不含 secret. */ message: string; }; export type RegisterAppResult = RegisterAppOk | RegisterAppErr; export interface RegisterAppOptions { /** 取消信号 (Ctrl-C 时填充). */ signal?: AbortSignal; /** * 渲染前回调, 测试时可注入静默打印. 默认在 stdout 打印二维码 + 链接. */ onQRCodeReady?: (info: { url: string; expireIn: number; }) => void; /** 状态变更回调, 主要用于"已切换到 Lark 域名"提示. */ onStatusChange?: (info: { status: string; interval?: number; }) => void; } /** * 尝试扫码建应用. 任何失败都返回 RegisterAppErr (不抛), 调用方可以回退手动粘. * * Secret 安全约束: * - SDK 返回的 client_secret 只放进返回值, 不打印, 不写日志 * - 错误链里只放错误 code / 阶段, 不带 secret */ export declare function tryRegisterApp(opts?: RegisterAppOptions): Promise; //# sourceMappingURL=register-app.d.ts.map