/**
 * WxAuth.ts — 微信网页授权登录模块（完整 TypeScript 实现）
 *
 * 提供微信 OAuth2.0 网页授权登录：环境检测、跳转授权、code 换 token、
 * code 探测绑定状态、自动授权流程。依赖 WxUtils 工具函数。
 */
import { detectWxEnvironment } from './WxUtils';
/** WxAuth 构造选项 */
export interface WxAuthOptions {
    /** 微信 App ID（默认 'wx7935c49369d421c1'） */
    appId?: string;
    /** 麦思星球微信 App ID */
    maisiAppId?: string;
    /** 授权 scope（'snsapi_base' / 'snsapi_userinfo'，默认后者） */
    scope?: string;
    /** 是否自动注册（默认 false） */
    autoRegister?: boolean;
    /** token Cookie 过期天数（默认 14） */
    tokenCookieDays?: number;
}
/** authorize() 选项 */
export interface WxAuthorizeOptions {
    appId?: string;
    redirectUri?: string;
    scope?: string;
    state?: string;
    extraParams?: Record<string, string>;
}
/** codeToToken() 选项 */
export interface CodeToTokenOptions {
    appId?: string;
    autoRegister?: boolean;
    channel?: string;
    onSuccess?: (response: unknown) => void;
    onFail?: (error: Error) => void;
    refreshPage?: boolean;
}
/** codeToToken() / codeToProbe() 返回结果 */
export interface WxAuthResult {
    success: boolean;
    data?: unknown;
    error?: string;
    isMaisi?: boolean;
}
/** autoAuth() 选项 */
export interface AutoAuthOptions extends WxAuthorizeOptions {
    autoRegister?: boolean;
    channel?: string;
    onSuccess?: (response: unknown) => void;
    onFail?: (error: Error) => void;
    /** 是否仅在生产环境执行（默认 true） */
    productionOnly?: boolean;
    refreshPage?: boolean;
}
/** autoAuth() 返回结果 */
export interface AutoAuthResult {
    success: boolean;
    reason?: string;
    message?: string;
    data?: unknown;
    error?: string;
    isMaisi?: boolean;
}
/** 当前配置 */
export interface WxAuthConfig {
    appId: string;
    maisiAppId: string;
    scope: string;
    autoRegister: boolean;
    isAuthFailed: boolean;
}
/** sdk 需提供的最小接口 */
interface WxAuthSdk {
    setToken(token: string): void;
}
export default class WxAuth {
    sdk: WxAuthSdk | null;
    appId: string;
    maisiAppId: string;
    scope: string;
    autoRegister: boolean;
    wxAuthUrl: string;
    tokenCookieDays: number;
    /** 授权失败状态标记，防止循环授权 */
    isAuthFailed: boolean;
    constructor(sdk: unknown, options?: WxAuthOptions);
    /** 是否在微信浏览器中。 */
    isWechatBrowser(): boolean;
    /** 获取微信环境详细信息。 */
    getEnvironment(): ReturnType<typeof detectWxEnvironment>;
    /** 是否在 iframe 中。 */
    isInIframe(): boolean;
    /** 获取当前 URL 中的授权 code。 */
    getCodeFromUrl(): string | null;
    /** 检查当前是否已登录（有 token）。 */
    isLoggedIn(): boolean;
    /**
     * 跳转到微信授权页面。
     */
    authorize(options?: WxAuthorizeOptions): void;
    /**
     * 使用授权 code 换取 token。
     */
    codeToToken(code: string, options?: CodeToTokenOptions): Promise<WxAuthResult>;
    /**
     * 使用授权 code「探测」是否已绑定账号（微信内公众号网页授权，不自动注册）。
     * 已绑定返回用户信息+token；未绑定返回 { needBind, ticket, ... } 由调用方确认。
     */
    codeToProbe(code: string, options?: {
        appId?: string;
    }): Promise<WxAuthResult>;
    /**
     * 自动授权流程入口：检测环境/登录状态，自动发起授权或处理回调。
     */
    autoAuth(options?: AutoAuthOptions): Promise<AutoAuthResult>;
    /** 重置授权失败状态（用户手动登录或重试授权时调用）。 */
    resetAuthFailedState(): void;
    /** 设置默认 App ID。 */
    setAppId(appId: string): void;
    /** 设置授权作用域。 */
    setScope(scope: string): void;
    /** 获取当前配置。 */
    getConfig(): WxAuthConfig;
}
export {};
//# sourceMappingURL=WxAuth.d.ts.map