/** * 注册流程配置和状态管理 * 支持多种验证方式的不同步骤流程 */ import type { PhoneValueObject } from './types'; /** 注册步骤类型 */ export declare enum RegisterStep { /** 初始表单 - 输入账号密码 */ INITIAL_FORM = "INITIAL_FORM", /** 等待邮件链接验证 */ WAIT_EMAIL_LINK = "WAIT_EMAIL_LINK", /** 输入验证码 */ INPUT_VERIFICATION_CODE = "INPUT_VERIFICATION_CODE", /** 验证成功提示 */ VERIFICATION_SUCCESS = "VERIFICATION_SUCCESS", /** 设置密码 */ SET_PASSWORD = "SET_PASSWORD", /** 邮箱已注册错误 */ EMAIL_ALREADY_REGISTERED = "EMAIL_ALREADY_REGISTERED", /** 注册完成 */ COMPLETE = "COMPLETE" } /** 验证方式类型 */ export declare enum VerificationMethod { /** 邮件链接验证 */ EMAIL_LINK = "EMAIL_LINK", /** 邮箱验证码验证 */ EMAIL_CODE = "EMAIL_CODE", /** 手机验证码验证 */ PHONE_CODE = "PHONE_CODE", /** 密码验证(无需验证码) */ PASSWORD_ONLY = "PASSWORD_ONLY" } /** 注册流程配置 */ export interface RegisterFlowConfig { /** 验证方式 */ verificationMethod: VerificationMethod; /** 是否需要密码(某些流程可能在验证后才设置密码) */ requirePasswordAtStart?: boolean; /** 自动跳转设置(某些步骤后自动跳转到下一步) */ autoTransition?: { [key in RegisterStep]?: { delay: number; nextStep: RegisterStep; }; }; } /** 注册流程步骤定义 */ export interface RegisterStepDefinition { /** 步骤标识 */ step: RegisterStep; /** 步骤显示的组件类型 */ component: 'form' | 'waiting' | 'error' | 'success' | 'code-input' | 'password-set'; /** 步骤配置 */ config?: { /** 是否显示返回按钮 */ showBack?: boolean; /** 是否显示关闭按钮 */ showClose?: boolean; /** 是否可以编辑账号 */ canEditAccount?: boolean; /** 是否显示重发按钮 */ showResend?: boolean; }; } /** 注册流程数据 */ export interface RegisterFlowData { /** 当前步骤 */ currentStep: RegisterStep; /** 账号(邮箱字符串或手机号对象) */ account: string | PhoneValueObject; /** 账号类型 */ accountType: 'email' | 'phone'; /** 密码(如果在第一步就输入了) */ password?: string; /** 验证码 */ verificationCode?: string; /** 邮件链接验证码 */ emailLinkCode?: string; /** 验证方式 */ verificationMethod: VerificationMethod; /** 错误信息 */ error?: { code: string; message: string; }; /** 额外数据 */ extraData?: Record; } /** 预定义流程配置 */ export declare const REGISTER_FLOW_CONFIGS: Record; /** 步骤流转映射 */ export declare const STEP_TRANSITIONS: Record>; /** 步骤定义映射 */ export declare const STEP_DEFINITIONS: Record; /** * 验证步骤流转是否合法 */ export declare function isValidTransition(verificationMethod: VerificationMethod, fromStep: RegisterStep, toStep: RegisterStep): boolean; /** * 获取步骤配置 */ export declare function getStepDefinition(step: RegisterStep): RegisterStepDefinition; /** * 获取流程配置 */ export declare function getFlowConfig(verificationMethod: VerificationMethod): RegisterFlowConfig; /** * 根据认证配置决定使用哪种验证方式 */ export declare function determineVerificationMethod(accountType: 'email' | 'phone', emailConfig?: { enable_email?: boolean; require_email_verification?: boolean; }, phoneConfig?: { enable_phone_number?: boolean; require_phone_verification?: boolean; }): VerificationMethod;