import { ProductData } from '../../../modules/Product/types';
/**
 * Products 模块状态
 */
export interface ProductsState {
    /** 完整商品列表 */
    list: ProductData[];
    /** 商品 Map 缓存（以 id 为 key，加速查询） */
    map: Map<number, ProductData>;
}
/**
 * 商品格式化后数据
 */
export interface FormattedProductData extends ProductData {
    /** 是否打开详情弹窗 */
    isOpenDetailModal?: boolean;
    /** 购物车详情值 */
    cartDetailValue?: any;
}
/**
 * 商品轻量查询范围
 */
export interface ProductIdScope {
    /** 是否返回全部商品 ID */
    isAllProducts?: boolean;
    /** 指定商品 ID */
    productIds?: number[];
    /** 指定商品集合 ID */
    collectionIds?: number[];
}
/**
 * 加载报价单商品价格参数
 */
export interface LoadProductsPriceParams {
    ids: number[];
    schedule_date: string;
    schedule_datetime?: string;
    customer_id?: number | string;
}
/**
 * 加载报价单商品价格返回数据
 */
export interface LoadProductsPriceData {
    id: number;
    price: string;
    base_price: string;
    variant: {
        id: number;
        product_id: number;
        base_price: number;
        price: number;
    }[];
    bundle_group: {
        id: number;
        bundle_item: {
            id: number;
            product_id: number;
            group_id: number;
            bundle_product_id: number;
            bundle_variant_id: number;
            price: number;
            base_price?: number | string;
            price_type: string;
            price_type_ext: string;
        }[];
    }[];
}
/**
 * 加载报价单商品价格返回数据
 */
export interface LoadProductsPriceResponse {
    code: number;
    data: LoadProductsPriceData[];
    message: string;
    status: boolean;
}
/**
 * Products 模块状态
 */
export interface ProductsState {
    /** 完整商品列表 */
    list: ProductData[];
    /** 商品 Map 缓存（以 id 为 key，加速查询） */
    map: Map<number, ProductData>;
}
/**
 * Products 模块钩子
 */
export declare enum ProductsHooks {
    onProductsLoaded = "products:onProductsLoaded",
    onProductsChanged = "products:onProductsChanged",
    onProductSelected = "products:onProductSelected",
    onProductsPriceApplied = "products:onProductsPriceApplied",
    /** pubsub 同步批次处理完成后触发，Server 层监听此事件重新计算并推送 */
    onProductsSyncCompleted = "products:onProductsSyncCompleted"
}
/** pubsub 商品同步消息结构 */
export interface ProductSyncMessage {
    shop_id?: number;
    module?: string;
    action?: string;
    id?: number;
    /** 批量操作的商品 ID 列表 */
    ids?: number[];
    /** 完整商品数据（普通字段修改时携带） */
    body?: any;
    /** 操作类型（如 "delete" 表示删除） */
    operation?: string;
    /** 变更字段类型（如 ["price"]、["stock"]） */
    change_types?: string[];
    /** 关联商品 ID（product_collection / product_category / product_quotation 变更时携带） */
    relation_product_ids?: number[];
    message_uuid?: string;
    timestamp?: string;
    /** 内部标记：来源频道 key */
    _channelKey?: string;
}
/**
 * 商品格式化器上下文
 */
export interface ProductFormatterContext {
    schedule_date: string;
    schedule_datetime?: string;
    customer_id?: number | string;
    priceData?: LoadProductsPriceData[];
    scheduleModule?: any;
    locale?: string;
}
/**
 * 商品格式化器类型
 * 用于对商品数据进行处理和格式化（包括价格应用、字段扩展等）
 */
export type ProductFormatter = (products: ProductData[], context: ProductFormatterContext) => ProductData[] | Promise<ProductData[]>;
