import { Module, ModuleOptions, PisellCore } from '../../types';
import { BaseModule } from '../BaseModule';
import { BookingContextConfig, BookingContextDateInput, BookingContextModuleAPI, BookingContextResource, BookingContextResourceMap, BookingContextState, InitBookingContextParams, LoadBookingConfigParams, LoadBookingResourcesParams } from './types';
export * from './types';
export * from './utils';
/** 稳定序列化 config 查询参数，用于判断是否与上次 loadBookingConfig 一致。 */
export declare function buildBookingConfigQueryKey(params?: LoadBookingConfigParams): string;
/** 稳定序列化资源列表查询（date + bookingIds），用于跳过重复 loadResources。 */
export declare function buildBookingResourcesQueryKey(params?: LoadBookingResourcesParams): string;
export declare class BookingContextModule extends BaseModule implements Module, BookingContextModuleAPI {
    protected defaultName: string;
    protected defaultVersion: string;
    private request;
    private store;
    /** 上次成功 loadBookingConfig 的 query key；命中则不再请求。 */
    private lastConfigQueryKey;
    /** 上次成功 loadResources 的 query key（date|bookingIds）；命中则不再请求。 */
    private lastResourcesQueryKey;
    constructor(name?: string, version?: string);
    initialize(core: PisellCore, options?: ModuleOptions): Promise<void>;
    loadBookingConfig(params?: LoadBookingConfigParams): Promise<BookingContextConfig | null>;
    loadResources(params?: LoadBookingResourcesParams): Promise<BookingContextResource[]>;
    /**
     * store 内是否已具备与本次 init 入参等价的 config / resources（不再打接口）。
     */
    isBookingContextReady(params?: InitBookingContextParams): boolean;
    initBookingContext(params?: InitBookingContextParams): Promise<BookingContextState>;
    setBookingConfig(config: BookingContextConfig | null): void;
    getBookingConfig(): BookingContextConfig | null;
    setResources(resources: BookingContextResource[] | null | undefined): void;
    getResourcesOrigin(): BookingContextResource[];
    getResourcesOriginMap(): BookingContextResourceMap;
    setDate(date: BookingContextDateInput): void;
    getDate(): string | null;
    getState(): BookingContextState;
    clear(): void;
}
