import { AuthFlow, AuthFlowState, AuthFlowData, ErrorState, ExtendedLabels } from './types'; import { BetterAuthClientInstance } from '../../types/better-auth-client'; import { NormalizedAuthConfig, RedirectOptions } from '../../types/config'; export interface AuthFlowManagerOptions { authClient: BetterAuthClientInstance; config: NormalizedAuthConfig; labels: ExtendedLabels; onLogin?: (payload: any) => void; onError?: (err: any) => void; redirects?: RedirectOptions; /** 订阅 token 变化(用于跨窗口 token 同步) */ onAuthStateChange?: (listener: () => void) => () => void; } export declare class AuthFlowManager { private options; private state; private listeners; private countdownInterval; private iframeModal; private tokenUnsubscribe; constructor(options: AuthFlowManagerOptions); getState(): AuthFlowState; subscribe(listener: (state: AuthFlowState) => void): () => void; private setState; private notifyListeners; /** * 切换认证流程 * 数据清理:切换流程时只保留必要数据(email/name),清除密码、验证码等敏感字段 * 倒计时管理:自动为需要倒计时的流程启动定时器 * 状态重置:清除错误、loading 状态 * @param flow 认证流程 * @param data 认证数据 * @returns void */ transitionTo(flow: AuthFlow, data?: Partial): void; /** * 更新数据(静默更新,不触发重新渲染) * 用于表单输入时的实时数据更新,避免频繁重新渲染导致输入框失去焦点 */ updateData(data: Partial): void; /** * 设置错误 */ setError(error: ErrorState, message?: string): void; /** * 清除错误 */ clearError(): void; /** * 获取错误消息 */ private getErrorMessage; /** * 处理登录 */ handleSignIn(): Promise; /** * 处理注册 */ handleSignUp(): Promise; /** * 处理 OAuth 登录 */ handleOAuthSignIn(provider: string): Promise; /** * 显示 Iframe OAuth Modal * 在 staging + iframe 环境下,拦截 OAuth 登录,提示用户在新标签页中打开 */ private showIframeOAuthModal; /** * 销毁 Iframe OAuth Modal */ private destroyIframeModal; /** * 重发密码重置 OTP */ handleResendPasswordResetCode(): Promise; /** * 匿名/临时账号登录 */ handleAnonymousSignIn(): Promise; /** * 重发验证邮件 */ handleResendVerificationEmail(): Promise; /** * 验证验证码 */ handleVerifyCode(): Promise; /** * 发送密码重置 OTP */ handleSendPasswordReset(): Promise; /** * 设置新密码(包含验证码验证) */ handleSetNewPassword(): Promise; /** * 修改密码(已登录用户) */ handleChangePassword(revokeOtherSessions?: boolean): Promise; private resolveEmailCallback; private redirectTo; /** * 开始重发倒计时 */ startResendCountdown(seconds?: number): void; /** * 启动倒计时定时器(不设置初始状态,只负责定时更新) */ private startCountdownTimer; /** * 通知倒计时更新(触发完整重新渲染,确保各视图倒计时文本刷新) */ private notifyCountdownUpdate; /** * 统一的 better-auth 错误处理:优先用 code,缺 code 时输出 console.error,UI 显示 message 或兜底文案 */ private handleBetterAuthError; private getErrorMessageByCode; }