import type { CSSProperties } from 'react';
import type { BaseTextInputProps } from '@pisell/utils';
/**
 * 国家码配置类型
 */
export interface CountryCode {
    /**
     * 国家码
     * @example '+86', '+1', '+44'
     */
    code: string;
    /**
     * 国家名称
     * @example '中国', '美国', '英国'
     */
    name: string;
    /**
     * 国旗 emoji 或图标
     * @example '🇨🇳', '🇺🇸', '🇬🇧'
     */
    flag: string;
    /**
     * 号码格式（可选，用于显示占位符）
     * @example 'XXX XXXX XXXX', '(XXX) XXX-XXXX'
     */
    format?: string;
    /**
     * 最大长度
     * @example 11 (中国), 10 (美国)
     */
    maxLength: number;
    /**
     * 校验正则
     * @example /^1[3-9]\d{9}$/ (中国手机号)
     */
    pattern: RegExp;
}
/**
 * PisellPhone 组件 Props 类型定义
 *
 * 继承 BaseTextInputProps，添加电话号码特有的配置
 */
export interface PisellPhoneProps extends BaseTextInputProps {
    /**
     * 状态模式
     * @default 'edit'
     */
    mode?: 'read' | 'edit';
    /**
     * 是否禁用
     * @default false
     */
    disabled?: boolean;
    /**
     * 当前选中的国家码
     * @default '+86'
     * @example '+86', '+1', '+44'
     */
    countryCode?: string;
    /**
     * 默认国家码（非受控模式）
     * @default '+86'
     */
    defaultCountryCode?: string;
    /**
     * 是否显示国家码选择器
     * @default true
     */
    showCountrySelector?: boolean;
    /**
     * 可用的国家码列表（从预设24个中过滤）
     * @example ['+86', '+1', '+44']
     */
    availableCountryCodes?: string[];
    /**
     * 常用国家码（置顶显示）
     * @example ['+86', '+1']
     */
    commonCountryCodes?: string[];
    /**
     * 完全自定义国家码列表（覆盖预设）
     */
    countryCodes?: CountryCode[];
    /**
     * 国家码变更回调
     * @param code 新的国家码
     */
    onCountryCodeChange?: (code: string) => void;
    /**
     * 是否自动格式化
     * @default true
     */
    autoFormat?: boolean;
    /**
     * 格式化规则
     * @default 'auto'
     */
    formatRule?: 'mobile' | 'landline' | 'auto';
    /**
     * 格式化分隔符
     * @default ' '
     */
    separator?: string;
    /**
     * 是否启用拨号（移动端）
     * @default true
     */
    enableDial?: boolean;
    /**
     * 是否显示拨号图标
     * @default false
     */
    showDialIcon?: boolean;
    /**
     * 拨号回调
     * @param phone 完整的电话号码（含国家码）
     */
    onDial?: (phone: string) => void;
    /**
     * 是否脱敏显示（只读态）
     * @default false
     */
    enableMasking?: boolean;
    /**
     * 脱敏模式
     * - middle: 中间4位脱敏（138****0000）
     * - last: 后4位脱敏（1380000****）
     * - custom: 使用自定义函数
     * @default 'middle'
     */
    maskPattern?: 'middle' | 'last' | 'custom';
    /**
     * 自定义脱敏函数
     * @param phone 电话号码
     * @returns 脱敏后的号码
     */
    customMask?: (phone: string) => string;
    /**
     * 是否显示国旗图标
     * @default true
     */
    showFlag?: boolean;
    /**
     * 字号
     * @example '14px' 或 14
     * @default 16
     */
    fontSize?: string | number;
    /**
     * 字重
     * @example 'bold' 或 600
     * @default 500
     */
    fontWeight?: string | number;
    /**
     * 文本颜色
     * @example '#000000'
     * @default '#101828'
     */
    color?: string;
    /**
     * 占位文本
     * @default '请输入电话号码'
     */
    placeholder?: string;
    /**
     * 最大长度（根据国家码自动设置）
     */
    maxLength?: number;
    /**
     * 是否显示清空按钮
     * @default false
     */
    allowClear?: boolean;
    /**
     * 是否自动聚焦
     * @default false
     */
    autoFocus?: boolean;
    /**
     * 是否校验格式
     * @default true
     */
    validateFormat?: boolean;
    /**
     * 自定义校验函数
     * @param phone 电话号码（纯数字）
     * @param countryCode 国家码
     * @returns true 表示校验通过，string 表示错误信息
     */
    customValidator?: (phone: string, countryCode: string) => boolean | string;
    /**
     * 自定义类名
     */
    className?: string;
    /**
     * 自定义样式
     */
    style?: CSSProperties;
    /**
     * ARIA 标签
     */
    'aria-label'?: string;
    /**
     * ARIA 描述
     */
    'aria-describedby'?: string;
}
export type { DisplayState, ValidationResult, TextInputState } from '@pisell/utils';
