export declare type ChannelApplication = 'online-store' | 'pos' | 'wholesalebusiness' | 'kiosk'; export declare type ProductType = 'physical' | 'virtual'; export declare type WeightUnit = 'KILOGRAMS' | 'GRAMS' | 'POUNDS' | 'OUNCES'; export declare type DurationType = 'minutes' | 'hours' | 'days'; export declare type ResourceType = 'single' | 'multiple'; export declare type RelationType = 'form'; export declare type EventType = 'schedule_event'; export declare type MaxParticipantsType = 'custom-limit' | 'unlimited'; export interface TimeSlice { label: string; value: string; } export interface DurationSlice { label: string; value: number; } export interface MultiLanguageName { en?: string; 'zh-CN'?: string; 'zh-HK'?: string; original?: string; 'ja'?: string; 'pt'?: string; auto?: string; } export interface MultiLanguageTitle { label: { type: 'i18n'; 'en-US': string; 'zh-CN': string; 'ja'?: string; 'pt'?: string; }; } export interface SelectType { type: 'single' | 'multiple'; min: number; max: number; } export interface Duration { type: DurationType; value: number; } export interface CutOffTime { unit: number; unit_type: DurationType; future_day: number; type: 'advance'; ongoing: { type: 'before_end'; unit: number; }; } export interface MachineCode { make_over: number; beforehand: number; limit_count: number; customer: number; send_action: string; hide_recharge: number; distributor_automatic: number; } export interface Form { id: number; shop_id: number; title: string; navigation_display: number; button: string; describe: string; status: 'published' | 'draft'; resource_sort: number; code: string; type: 'manual' | 'auto'; version: number; setting: any; created_at: string; updated_at: string; } export interface PartyroomPackage { type: 'product_all' | 'product_part'; } export interface EventListItem { id: number; start_date?: string; start_time?: string; end_date?: string; end_time?: string; relation_id: number; number?: number; start_at?: string; end_at?: string; keys?: string; pax: number; type: EventType; pax_list: Record; } export interface TimeConfig { keys: string; schedule_id: number; item_type: string; item_id: number; start_date: string; end_date: string; start_time: string; end_time: string; is_all: number; relation_type: RelationType; start_at: string; end_at: string; event_list: EventListItem[]; max_participants_type?: MaxParticipantsType; max_participants_limit?: number; is_blocked?: number; blocked_times?: any[]; order_event_count?: number; unique?: string; _extend?: { isMaxLimitRange: boolean; isDateRange: boolean; isCountRange: boolean; isUsable: boolean; }; } export interface ResourceMetadata { combined_resource: any; } export interface ResourceItem { id: number; main_field: string; sort: number; form_id: number; times: TimeConfig[]; capacity: number; combined_resource: any; resource_form_id: string | number; form_code: string; resourceType: ResourceType; children: any[]; metadata: ResourceMetadata; form_tag?: any; policy?: number; partyroom_package?: PartyroomPackage; status?: string; description?: string; media?: string; subtitle?: string; room_name?: string; labelText?: string; form_record_id?: number; item_type?: string; form_resource_sort?: number; form_title?: string; form?: Form; _extend?: { usableTime?: TimeConfig; }; usable?: boolean; label?: any; } export interface ResourceTypeInfo { id: number; title: string; status: number; code: string; created_at: string; updated_at: string | null; type: ResourceType; optional_resource: number[]; default_resource: any[]; select_type: SelectType; resource_type_id: number; renderList?: ResourceItem[]; form_id?: number; renderListMaps?: Record; } export interface ProductResource { resources: ResourceTypeInfo[]; } export interface CapacityCustom { name: MultiLanguageName; min: number; max: number; id: string; } export interface CapacityPackage { } export interface Capacity { type: 'product' | 'package'; custom: CapacityCustom[]; package: CapacityPackage[]; } export interface ProductDisplaySetting { kiosk: { use_display_mode: number; product_option_mode: any; product_option_mode_paging: any; product_bundle_mode: any; product_bundle_mode_paging: any; }; } export interface ShelfProductData { } export interface Category { id: number; name: string; icon: string; slug: string; sort: number; } export interface Collection { id: number; title: string; cover: string; } export interface ExtendData { duration: number; start_time: string; start_date: string; quantity: number; price: string; product_name: string; other: { bundle: any[]; key: number; option: any[]; product_id: number; product_variant_id: number; quantity: number; rowKey: number; session: any; unique: string; }; total: number; origin_total: number; startDate: string; endDate: string; capacity: Array<{ id: number; value: number; name: string; }>; resource: Record>; note?: string; _skuValue?: { bundle: any[]; option: any[]; product_id: number; product_variant_id: number; }; priceOverride?: number; } export interface TimeObj { timeSlices: TimeSlice[]; durationSlicesBasedOnTime: DurationSlice[]; } export interface DataObj { timeObj: TimeObj; capacitys: Capacity; resourcesOrigin: ResourceTypeInfo[]; resources: ResourceTypeInfo[]; resourceMaps: Record; } export interface DiscountItem { amount: number; type: 'discount_card' | 'discount_code' | 'discount_package'; discount: { resource_id: number; title: MultiLanguageTitle; original_amount: number; product_id: number; percent: string; }; num: number; } export interface ProductData { id: number; extension_id: number; extension_type: string; shop_id: number; title: string; slug: string; status: 'published' | 'draft' | 'archived'; stock_quantity: number; sales_quantity: number; sum_stock: number; price: string; original_price: string; cost_price: string; cover: string; channel_application: ChannelApplication[]; is_track: number; over_sold: number; is_gst: number; code: string; barcode: string; is_delivery: number; weight_unit: WeightUnit; weight_value: string; type: ProductType; unit: string; sort: number; subtitle: string; minimum_markup_price: string; is_bundle: number; bundle_group_count: number; option_group_count: number; is_variant: number; variant_count: number; cut_off_time: CutOffTime; policy: number; machine_code: MachineCode; duration: Duration; product_resource: ProductResource; capacity: Capacity; product_display_setting: ProductDisplaySetting; shelf_product_datas: ShelfProductData[]; step_value: number; min_num_unit: number; schedules: any[]; is_charge_tax: number; base_price: string; variant: any[]; variant_group: any[]; category: Category[]; collection: Collection[]; product_id: number; _id: string; _key: number; _extend: ExtendData; new: number; currentDefaultTime: string; _data: DataObj; autoClose: boolean; _serviceKey: string; _holderKey: string; discount_list: DiscountItem[]; } export declare type SkuDetailModalData = ProductData; export interface SkuDetailModalProps { /** 确认回调 */ onConfirm?: (data: ProductData) => void; /** 删除回调 */ onRemove?: (productData: ProductData) => void; /** 关闭回调 */ onClose?: () => void; } export interface SkuDetailModalRef { /** 打开弹窗 */ open: (data: ProductData | SkuDetailModalOpenParams) => void; } export interface ExternalVariantProps { /** 是否开启自定义组合规格功能 */ isCustom?: boolean; /** 自定义组合规格函数 */ formatVariant?: (variant: any[]) => any[]; } export interface ConfigProps { /** 是否显示数量步进器 */ isShowStepper?: boolean; /** 是否显示备注 */ isShowNote?: boolean; /** 是否使用外部传递的 variant 数据,而不是组件内部从接口获取的数据。默认 false(使用接口数据) */ externalVariant?: ExternalVariantProps; /** 是否使用自定义数据覆盖接口字段 */ useCustomData?: boolean; /** 自定义数据,用于覆盖接口返回的特定字段,如 { price: 0, origin_price: 17 } */ customData?: Partial; /** 是否调用商品详情接口 */ isCallProductDetail?: boolean; /** 自定义取消按钮 */ onCancel?: () => void; /** 自定义确认按钮 */ onConfirm?: (data: ProductData) => void; /** 自定义移除按钮 */ onRemove?: (data: ProductData) => void; /** 自定义关闭按钮 */ onClose?: () => void; } export interface SkuDetailModalOpenParams { id: number; date: string; is_eject?: 0 | 1; productData?: ProductData; skuDetailConfig?: ConfigProps; }