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; } 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; /** 数钱按钮透传属性 */ buttonProps?: ButtonProps; /** 自定义类名 */ className?: string; /** 自定义样式 */ style?: React.CSSProperties; /** 金额变化 */ onChange?: (value: number | string, meta?: { source: 'manual' | 'count'; }) => void; /** 点钞确认 */ onCountConfirm?: (payload: CashCountingConfirmPayload) => void; /** 取消点钞 */ onCountCancel?: () => void; }