/// <reference types="react" />
import { FormInstance } from "antd";

//#region src/plus/walletEditor/types.d.ts
interface MultiLanguageTitle {
  original?: string;
  'zh-CN'?: string;
  'zh-HK'?: string;
  'ja'?: string;
  'pt'?: string;
  en?: string;
}
interface ValidForConfig {
  unit: string;
  unit_type: 'day' | 'month' | 'year';
  type: 'normal' | 'custom' | 'forever';
  custom_date?: string;
}
type WalletPassType = 'balance' | 'point' | 'voucher' | 'discount' | 'rechargeable';
interface ShowcaseWalletPassItem {
  type: WalletPassType;
  display: 0 | 1;
  name?: MultiLanguageTitle;
  custom_title?: MultiLanguageTitle;
}
interface SendConfig {
  type: string;
  [key: string]: any;
}
interface WalletMetadata {
  showcaseWalletPass?: string[];
  showcaseWalletPassNew?: ShowcaseWalletPassItem[];
  welcomeText?: string;
  customerName?: string;
  coverImage?: string;
  send_config?: SendConfig;
}
interface WalletEditorValue {
  name?: MultiLanguageTitle;
  status: 'enable' | 'disable';
  valid_for: ValidForConfig;
  metadata: WalletMetadata;
}
interface WalletEditorRef {
  form: FormInstance;
  setInitialValues: (values: WalletEditorValue) => void;
  getValues: () => WalletEditorValue;
}
interface WalletEditorProps {
  value?: WalletEditorValue;
  onChange?: (value: WalletEditorValue) => void;
  onValuesChange?: (changedValue: any, values: WalletEditorValue) => void;
  disabled?: boolean;
  className?: string;
  style?: React.CSSProperties;
}
//#endregion
export { MultiLanguageTitle, SendConfig, ShowcaseWalletPassItem, ValidForConfig, WalletEditorProps, WalletEditorRef, WalletEditorValue, WalletMetadata, WalletPassType };