import { ProductList, OrderModule } from '../../modules';
import { BookingContextModule } from '../../modules/BookingContext';
import { CustomerModule } from '../../modules/Customer';
import { SalesSummaryModule } from '../../modules/SalesSummary';
import { ScheduleModule } from '../../modules/Schedule';
import type { BaseSalesState } from '../BaseSales';
import type { BaseSalesOrderProduct } from '../BaseSales';
import type { ISalesBooking } from '../BaseSales/utils/parseSalesResponse';
import type { ProductData } from '../../modules/Product/types';
/**
 * BookingTicket 子模块清单：在 BaseSales 自带的 products/order/salesSummary/schedule 之上
 * 追加业务向的 customer 模块；不再注册 cart/accountList（无外部消费）。
 */
export interface BookingTicketState extends BaseSalesState {
    products: ProductList;
    order: OrderModule;
    salesSummary: SalesSummaryModule;
    schedule: ScheduleModule;
    customer: CustomerModule;
    bookingContext: BookingContextModule;
}
export declare function createBookingTicketModule<T extends keyof BookingTicketState>(moduleName: T, solutionName: string, name?: string, version?: string): BookingTicketState[T] | null;
export declare enum BookingTicketHooks {
    onInited = "bookingTicket:onInited",
    onDestroy = "bookingTicket:onDestroy",
    onProductsLoaded = "bookingTicket:onProductsLoaded",
    onCustomerSelected = "bookingTicket:onCustomerSelected",
    onCustomerListUpdate = "bookingTicket:onCustomerListUpdate",
    onCustomerListReset = "bookingTicket:onCustomerListReset"
}
/**
 * 获取客户列表的参数
 */
export interface IGetCustomerListParams {
    /** 页码 */
    skip?: number;
    /** 每页数量 */
    num?: number;
    /** 搜索关键词 */
    search?: string;
    /** 其他筛选参数 */
    [key: string]: any;
}
/**
 * 客户信息
 */
export interface ICustomer {
    /** 客户ID */
    id: string | number;
    /** 客户姓名 */
    name: string;
    /** 客户电话 */
    phone?: string;
    /** 客户邮箱 */
    email?: string;
    /** 其他客户信息 */
    [key: string]: any;
}
/**
 * 加载商品列表的参数
 */
export interface ILoadProductsParams {
    /** 商品分类ID */
    category_ids?: number[];
    /** 商品ID */
    product_ids?: number[];
    /** 商品集合ID */
    collection?: number | string[];
    /** 日期 格式：YYYY-MM-DD */
    schedule_date?: string;
    /** 客户ID */
    customer_id?: number;
    /** 餐牌列表ID */
    menu_list_ids?: number[];
    /** 时间 格式：YYYY-MM-DD HH:mm:ss*/
    schedule_datetime?: string;
    /** 关联统计字段 */
    with_count?: string[];
    /** 是否返回日程信息 */
    with_schedule?: number;
}
/**
 * 加载商品详情的参数
 */
export interface ILoadProductDetailParams extends Omit<ILoadProductsParams, 'product_ids'> {
    /** 商品ID */
    product_id: number;
}
/**
 * 扫描结果
 */
export interface IScanResult {
    status: 'success' | 'fail';
    scanType: string;
    scanCode: string;
    result: any;
}
/**
 * BookingTicket 面向 UI 的购物车商品行视图。
 *
 * 直接透传 tempOrder.products 协议行，不做 Solution 层 enrichment。
 */
export type BookingTicketCartItemView = BaseSalesOrderProduct;
/**
 * BookingTicket 面向 UI 的 booking 行视图（平铺，附带关联商品）。
 */
export interface BookingTicketCartBookingView extends ISalesBooking {
    _extend: {
        product: BookingTicketCartItemView | null;
    };
}
/**
 * BookingTicket 面向 UI 的购物车视图。
 */
export interface BookingTicketCartView {
    bookings: BookingTicketCartBookingView[];
    items: BookingTicketCartItemView[];
}
/**
 * BookingTicket 面向 UI 的客户展示视图。
 */
export interface BookingTicketCustomerView {
    id: number | string;
    name: string;
    phone?: string;
    email?: string;
    country_calling_code?: string;
    cover?: string;
    isWalkIn: boolean;
}
/**
 * BookingTicket 当前已加载的商品池视图。
 */
export interface BookingTicketProductCatalogView {
    products: ProductData[];
}
