import React from 'react';
import { ButtonProps, InputNumberProps } from 'antd';
export declare type CashDenominationType = 'bill' | 'coin';
/** 金额输入与数钱按钮的排列：`vertical` 上下，`horizontal` 左右 */
export declare type PisellCashCountingLayout = 'vertical' | 'horizontal';
export interface CurrencyDenominationConfig {
    /** 币种编码，例如 AUD、JPY、USD */
    currency_code: string;
    /** 面额数值 */
    denomination_value: number;
    /** 展示文案，例如 $100、¥10,000、50¢ */
    denomination_label: string;
    /** 面额类型：纸币或硬币 */
    denomination_type: CashDenominationType;
    /** 展示顺序 */
    sort_order: number;
    /** 金额小数位，JPY 为 0，AUD 为 2 */
    decimal_places: number;
    /** 是否启用 */
    is_enabled: boolean;
    /** 国家/地区，可选扩展字段 */
    country_region?: string;
    /** 当前是否生效，可选扩展字段 */
    effective_status?: boolean | 'active' | 'inactive';
}
export interface CashCountingDetail {
    denomination: CurrencyDenominationConfig;
    quantity: number;
    amount: number;
}
export interface CashCountingConfirmPayload {
    amount: number | string;
    currencyCode: string;
    decimalPlaces: number;
    billSubtotal: number | string;
    coinSubtotal: number | string;
    details: CashCountingDetail[];
    quantities: Record<string, number>;
}
export interface PisellCashCountingProps {
    /** 当前金额，受控模式 */
    value?: number;
    /** 默认金额，非受控模式 */
    defaultValue?: number | string;
    /** 币种编码 */
    currencyCode?: string;
    /** 货币符号，不传时按币种默认推断 */
    currencySymbol?: string;
    /** 金额小数位，不传时按面额配置推断 */
    amountPrecision?: number;
    /** 可扩展的币种面额 JSON 配置 */
    denominations?: CurrencyDenominationConfig[];
    /** 禁用整体输入 */
    disabled?: boolean;
    /** 禁用数钱按钮 */
    countDisabled?: boolean;
    /** 金额输入占位 */
    placeholder?: string;
    /** 输入框与数钱按钮的布局，默认上下排列 */
    layout?: PisellCashCountingLayout;
    /** 数钱按钮文案 */
    countCashButtonText?: React.ReactNode;
    /** 弹窗宽度 */
    modalWidth?: number | string;
    /** 价格键盘是否显示货币符号 */
    showCurrencySymbol?: boolean;
    /** 价格键盘是否使用千分位 */
    useThousandsSeparator?: boolean;
    /** 输入框透传属性 */
    inputNumberProps?: Omit<InputNumberProps, 'value' | 'defaultValue' | 'onChange'>;
    /** 数钱按钮透传属性 */
    buttonProps?: ButtonProps;
    /** 自定义类名 */
    className?: string;
    /** 自定义样式 */
    style?: React.CSSProperties;
    /** 金额变化 */
    onChange?: (value: number | string, meta?: {
        source: 'manual' | 'count';
    }) => void;
    /** 点钞确认 */
    onCountConfirm?: (payload: CashCountingConfirmPayload) => void;
    /** 取消点钞 */
    onCountCancel?: () => void;
}
