import { Module, ModuleOptions, PisellCore } from '../../../types';
import { BaseModule } from '../../../modules/BaseModule';
import type { RouteDefinition } from '../../types';
import { OrderData, OrderId } from './types';
/**
 * Order 模块 - 基础框架
 */
export declare class OrderModule extends BaseModule implements Module {
    protected defaultName: string;
    protected defaultVersion: string;
    private store;
    private dbManager;
    private orderDataSource;
    private pendingSyncMessages;
    private syncTimer?;
    private readonly ORDER_SYNC_DEBOUNCE_MS;
    private resourceIdIndex;
    private logger;
    private storage;
    constructor(name?: string, version?: string);
    initialize(core: PisellCore, options?: ModuleOptions): Promise<void>;
    /**
   * 记录信息日志
   * @param title 日志标题
   * @param metadata 日志元数据
   */
    private logInfo;
    /**
     * 记录错误日志
     * @param title 日志标题
     * @param metadata 日志元数据
     */
    private logError;
    preload(): Promise<void>;
    getOrders(): OrderData[];
    getOrderById(id: OrderId): OrderData | undefined;
    /** 按 order_id 查询（推荐） */
    getOrderByOrderId(orderId: OrderId): OrderData | undefined;
    loadOrdersByServer(): Promise<OrderData[]>;
    getOrdersByResourceId(resourceId: string | number): OrderData[];
    getRoutes(): RouteDefinition[];
    destroy(): void;
    private syncOrdersMap;
    private extractResourceIds;
    private getOrderDateKey;
    /**
     * 初始化 OrderDataSource 实例
     */
    private initOrderDataSource;
    /**
     * 初始化 pubsub 订阅，监听订单变更
     */
    private setupOrderSync;
    /**
     * 处理防抖后的同步消息批次
     *
     * 后端统一发送 change 消息，不再区分新增/编辑/删除。
     * - 单条（id/order_id）：若携带 body/data 则直接 upsert 到本地
     * - 批量（ids）：通过 HTTP 按 ids 增量拉取，再 merge 到本地
     */
    private processOrderSyncMessages;
    /**
     * 通过 HTTP 按 ids 增量拉取订单
     */
    private fetchOrdersByHttp;
    /**
     * 将增量订单合并到 store
     */
    private mergeOrdersToStore;
    private normalizeOrderSyncMessage;
    private normalizeOrderSyncPayload;
    private uniqueOrderIds;
    private getIdKey;
    /**
     * 当前订单拉取窗口：
     * - 优先使用 createdAtQuery.sales_time_between（已按营业日边界初始化）
     * - 无法解析时退化为自然日窗口
     */
    private getCurrentPullWindow;
    private hasPulledOrdersToday;
    private markOrderPulledAtNow;
    private getStorageItem;
    private setStorageItem;
    private loadOrdersFromSQLite;
    private saveOrdersToSQLite;
    clear(): Promise<void>;
}
