import type { BaseEngine, BaseEngineConfig } from '../../engines/BaseEngine';
import type Filter from '../../models/Room/Filters/Filter';
import type { RoomSort } from '../../providers/RoomSortProvider';
import type LocalStorageProvider from '../../providers/storage/LocalStorageProvider';
import type SessionProvider from '../../providers/storage/SessionProvider';
import type ScreenSize from '../../util/ScreenSize';
export interface RoomRateCalendarInteractivity {
    roomCode: string;
    rateCode: string;
}
export type BookingEngineContextType = {
    currentRoomSort: RoomSort;
    currentRoomRateSort?: RoomSort | undefined;
    currentFilters: EngineFilterType;
    currentGroupedRoomFilters: EngineFilterType;
    screenSize: ScreenSize;
    engine: BaseEngine<BaseEngineConfig>;
    sessionProvider: SessionProvider;
    storageProvider: LocalStorageProvider;
    setCurrentRoomSort: (sort: RoomSort) => void;
    setCurrentRoomRateSort: (sort: RoomSort | undefined) => void;
    setCurrentFilters: (filters: EngineFilterType) => void;
    setCurrentGroupedRoomFilters: (filters: GroupedRoomFilters) => void;
    roomRateCalendarInteractivity: RoomRateCalendarInteractivity | null;
    setRoomRateCalendarInteractivity: React.Dispatch<React.SetStateAction<RoomRateCalendarInteractivity | null>>;
};
export type EngineFilterType = {
    [code: string]: Filter | null;
};
export type GroupedRoomFilters = {
    [id: string]: any;
};
