import { Module, PisellCore } from '../../types';
import { BaseModule } from '../../modules/BaseModule';
import { RequestPlugin, WindowPlugin } from '../../plugins';
import { IGetCustomerListParams, ICustomer, ILoadProductsParams, IScanResult } from './types';
import { ProductData } from '../../modules';
export declare class BookingTicketImpl extends BaseModule implements Module {
    protected defaultName: string;
    protected defaultVersion: string;
    isSolution: boolean;
    request: RequestPlugin;
    window: WindowPlugin;
    private shopStore;
    private store;
    private otherParams;
    private cacheId;
    private platform;
    private scan;
    initialize(core: PisellCore, options: any): Promise<void>;
    /**
     * 获取商品列表
     * @param params 包含 schedule_date 的参数
     * @returns 商品列表
     */
    loadProducts(params?: ILoadProductsParams, options?: {
        callback?: (result: any) => void;
        subscriberId?: string;
    }): Promise<any>;
    /**
     * 取消商品查询订阅
     * @param subscriberId 订阅时传入的 subscriberId
     */
    unsubscribeProductQuery(subscriberId?: string): void;
    /**
     * 初始化外设扫码结果监听
     */
    initPeripheralsListener(): void;
    /**
     * 获取商品列表（不加载到模块中）
     * @returns 商品列表
     */
    getProducts(): Promise<ProductData[]>;
    /**
     * 获取日程时间段点
     * @param params 参数
     * @returns 日程时间段点
     */
    getScheduleTimePoints(params: {
        menu_list_ids: number[];
    }): Promise<any>;
    /**
     * 获取客户列表
     * @param params 查询参数
     * @returns 客户列表响应
     */
    getCustomerList(params?: IGetCustomerListParams): Promise<import("../../modules").ICustomerListResponse>;
    /**
     * 设置活跃客户
     * @param customer 客户信息
     */
    setActiveCustomer(customer: ICustomer): void;
    /**
     * 获取当前活跃客户
     * @returns 当前活跃客户
     */
    getActiveCustomer(): ICustomer | null;
    /**
     * 根据ID设置选中的客户
     * @param customerId 客户ID
     */
    setSelectedCustomerById(customerId: string | number): void;
    /**
     * 获取所有客户
     * @returns 客户列表
     */
    getCustomers(): ICustomer[];
    /**
     * 根据ID获取客户
     * @param customerId 客户ID
     * @returns 客户信息
     */
    getCustomerById(customerId: string | number): ICustomer | null;
    /**
     * 清空客户列表
     */
    clearCustomers(): void;
    /**
     * 添加客户到列表第一位
     * @param customer 要添加的客户信息
     */
    addCustomerToFirst(customer: ICustomer): void;
    /**
     * 获取客户分页信息
     * @returns 分页信息
     */
    getCustomerPaginationInfo(): import("../../modules").IPaginationInfo;
    /**
     * 获取客户列表总数
     * @returns 总数
     */
    getCustomerTotal(): number;
    /**
     * 设置客户分页信息
     * @param page 页码
     * @param pageSize 每页数量
     */
    setCustomerPaginationInfo(page: number, pageSize: number): void;
    /**
     * 便捷方法：切换客户分页并自动获取数据
     * @param page 页码
     * @param pageSize 每页数量（可选）
     * @returns 客户列表响应
     */
    changeCustomerPage(page: number, pageSize?: number): Promise<import("../../modules").ICustomerListResponse>;
    /**
     * 滚动加载更多客户数据 - 数据会追加到现有列表中
     * @returns 客户列表响应
     */
    loadMoreCustomers(): Promise<import("../../modules").ICustomerListResponse>;
    /**
     * 重置并重新开始滚动加载客户数据
     * @param params 查询参数
     * @returns 客户列表响应
     */
    resetAndLoadCustomers(params?: IGetCustomerListParams): Promise<import("../../modules").ICustomerListResponse>;
    /**
     * 检查是否还有更多客户数据可以加载
     * @returns 是否还有更多数据
     */
    hasMoreCustomers(): boolean;
    /**
     * 获取当前的客户搜索条件
     * @returns 当前搜索条件
     */
    getCurrentCustomerSearchParams(): Omit<import("../../modules").ShopGetCustomerListParams, "num" | "skip">;
    /**
     * 获取客户列表状态（包含滚动加载相关状态）
     * @returns 客户状态
     */
    getCustomerState(): import("../../modules").CustomerState;
    /**
     * 全局扫描监听
     * @param callback 回调
     */
    scanGlobalListener(callback: (data: IScanResult) => void): {
        remove: () => void;
    };
    /**
     * 客户扫描监听
     * @param callback 回调
     */
    scanCustomerListener(callback: (data: IScanResult) => void): {
        remove: () => void;
    };
    /**
     * @title 通用扫描监听
     * @description 直接将扫描结果返回给调用方
     * @param callback 回调
     */
    scanUniversalListener(callback: (data: IScanResult) => void, key: string): {
        remove: () => void;
    };
    /**
     * 调用摄像头
     * @param data 用户自定义数据
     */
    activateCamera(data?: {
        [key: string]: any;
    }): void;
    /**
     * 禁用所有扫描监听
     */
    disableAllScanListeners(): void;
    /**
     * 启用所有扫描监听
     */
    enableAllScanListeners(): void;
    /**
     * 清空所有扫描监听对应的任务执行队列
     */
    clearAllScanListenersTaskQueue(): void;
    /**
     * 设置其他参数
     * @param params 参数
     * @param options 选项
     */
    setOtherParams(params: Record<string, any>, { cover }?: {
        cover?: boolean;
    }): Promise<void>;
    /**
     * 获取其他参数
     * @returns 其他参数
     */
    getOtherParams(): Promise<Record<string, any>>;
    /**
     * 销毁模块
     */
    destroy(): void;
}
export * from './types';
export { BookingTicketImpl as BookingTicket };
