import { RoomstaySession } from '../models/RoomstaySession';
import LocalStorageProvider from '../providers/storage/LocalStorageProvider';
import SessionProvider from '../providers/storage/SessionProvider';
export interface BaseEngineConfig {
    disableChild?: boolean;
    maxAdults?: number;
}
export declare enum BookingEngineSource {
    Inline = "inline",
    RecentSearches = "recent-searches",
    Fullpage = "fullpage",
    BookingWizard = "booking-wizard",
    Auth = "auth"
}
export declare abstract class BaseEngine<C extends BaseEngineConfig> {
    protected source: BookingEngineSource;
    protected readonly bookingContainer: HTMLElement;
    protected sessionProvider: SessionProvider;
    protected initialSession: RoomstaySession;
    protected storageProvider: LocalStorageProvider;
    protected engineConfig: C;
    constructor(bookingContainer: HTMLElement, config?: C);
    readonly start: () => Promise<void>;
    getInitialSession(): RoomstaySession | null;
    getSessionProvider(): SessionProvider;
    getStorageProvider(): LocalStorageProvider;
    setConfig(config: C): void;
    getConfig(): C;
    getSource(): BookingEngineSource;
    protected abstract render(): Promise<void>;
}
