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<string, number>;
}
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<string, ResourceItem>;
}
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<string, Array<{
        children: any[];
        form_id: number;
        relation_id: number;
        like_status: string;
        errors: any[];
        metadata: {
            form_name: string;
            resource_name: string;
        };
    }>>;
    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<string, ResourceTypeInfo>;
}
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<ProductData>;
    /** 是否调用商品详情接口 */
    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;
}
