import dayjs from 'dayjs';
export interface CachedObject {
    cachedSince: dayjs.Dayjs;
    validUntil: dayjs.Dayjs;
}
export declare const API_DATE_FORMAT = "YYYY-MM-DD";
export declare enum APIEndpoint {
    Availability = "availability",
    AvailabilityByHotelIds = "availability/by-hotel-ids",
    Calendar = "availability/calendar",
    MinNightStay = "availability/min-nights",
    AreaAvailability = "availability/areas",
    Reservations = "reservations",
    Packages = "packages",
    Member = "member",
    Session = "session"
}
export type ApiGetParameters = {
    [x: string]: string | number | any;
};
export default class BaseAPI {
    protected static roomstaySession: string;
    static getBaseHeaders(): Promise<{
        [name: string]: string;
    } | undefined>;
    /**
     * Checks if the provided cache object does not need to be reloaded
     * @param obj CacheObject
     */
    isCacheObjectStillValid(obj: CachedObject): boolean;
    getApiPath(): string;
    protected post: (endpoint: APIEndpoint, params: ApiGetParameters, hotelID: string, getParams?: ApiGetParameters, extraPath?: string) => Promise<any>;
    protected delete: (endpoint: APIEndpoint, params: ApiGetParameters, hotelID: string, getParams?: ApiGetParameters, extraPath?: string) => Promise<any>;
    protected get: (endpoint: APIEndpoint, params: ApiGetParameters, extraPath: string | undefined, hotelId: string) => Promise<any>;
    private getUrl;
    private formatParams;
    private postOrDeleteOrUpdate;
}
