/**
 * 注册流程配置和状态管理
 * 支持多种验证方式的不同步骤流程
 */
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<string, any>;
}
/** 预定义流程配置 */
export declare const REGISTER_FLOW_CONFIGS: Record<VerificationMethod, RegisterFlowConfig>;
/** 步骤流转映射 */
export declare const STEP_TRANSITIONS: Record<VerificationMethod, Record<RegisterStep, RegisterStep[]>>;
/** 步骤定义映射 */
export declare const STEP_DEFINITIONS: Record<RegisterStep, RegisterStepDefinition>;
/**
 * 验证步骤流转是否合法
 */
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;
