/**
 * CLI: Weixin QR login — start poll, show terminal QR, persist token + optional config merge.
 */
import type { Config } from '@xopcai/xopc/config/schema.js';
export type WeixinQrLoginCliOptions = {
    /** Config file path (same as CLI --config / XOPC_CONFIG). */
    configPath?: string;
    verbose?: boolean;
    /** Client wait for scan (ms). */
    timeoutMs?: number;
    /** Existing account id to re-login, or omit for a new account session. */
    account?: string;
    /** When true, merge `channels.weixin.enabled` and accounts entry after success. */
    writeConfig?: boolean;
    /**
     * When set (e.g. interactive onboard), merges Weixin after login into this in-memory snapshot
     * instead of reloading from disk so prior unsaved onboarding edits are preserved when saving.
     */
    existingConfig?: Config;
};
export declare function getWeixinLoginApiContext(cfg: Config, accountHint?: string): {
    baseUrl: string;
    routeTag?: string;
};
export declare function mergeWeixinConfigAfterLogin(cfg: Config, normalizedAccountId: string): Config;
/**
 * Run interactive Weixin QR login (terminal QR + long-poll until confirmed or timeout).
 */
export declare function runWeixinQrLoginCli(opts: WeixinQrLoginCliOptions): Promise<{
    ok: boolean;
    accountId?: string;
    message: string;
}>;
