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`
     * 字段返回). 给 setup 用作 `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<RegisterAppResult>;
//# sourceMappingURL=register-app.d.ts.map