import { EnvironmentName } from '@planpay/web/src/lib/shared-lib-duplicates';
import type { EBookingPaymentMethod, EHotelCardProcessor, EHotelStateFieldConfiguration, EIntegration, IAuxiliaryFilter } from '@roomstay/core';
import { DeepPartial } from 'react-hook-form';
import ColorProfile from '../Client/Hotel/ColorProfile';
import { DistanceUnitType } from '../Client/Hotel/DistanceUnitType.types';
import { AdminHotelConfig, ClientHotelConfig, ConfigHotel, EPaymentCardType } from '../Client/Hotel/Hotel';
import HotelAddress from '../Client/Hotel/HotelAddress';
import { HotelDataSource } from '../Client/Hotel/HotelDataSource.types';
import { WeekdayStartsOn } from '../Client/Hotel/WeekdayStartsOn.types';
export type HotelServiceDTO = {
    detail: string;
    included: boolean;
    name: string;
    onsite: boolean;
};
export type HotelRoomsDTO = {
    [roomTypeCode: string]: HotelRoomDTO;
};
export type HotelRoomGroupsDTO = {
    groupName: string;
    id: string;
    checkInTime?: string | null;
    checkOutTime?: string | null;
    filters: {
        [id: string]: {
            name: string;
            type: 'select';
            includeAllAbove: boolean;
            requireInput: boolean;
            options: IAuxiliaryFilter['options'];
            requireSelection: boolean;
            order: number;
        };
    };
}[];
export type HotelRoomAmenitiesDTO = {
    type: string;
    description: string;
};
export type HotelRoomDTO = {
    code: string;
    name: string;
    shortDescription: string;
    longDescription: string;
    images: string[];
    quantity: number;
    maxOccupancy: number;
    bedQuantity: number;
    showBedType?: boolean;
    standardNumBeds: number;
    maxRollaways: number;
    bedType: string;
    amenities: HotelRoomAmenitiesDTO[];
    features: HotelRoomAmenitiesDTO[];
    bedTypeOverride?: string;
    roomGroupId?: string;
    roomSize?: number;
    prePerkDisclaimer?: string;
    perks?: ConfigHotel['perks'];
    petFriendly?: boolean;
};
export type HotelDTO = {
    id: number;
    name: string;
    chainId: number;
    chainName: string;
    address: HotelAddress;
    phone: string;
    latitude: string;
    longitude: string;
    utcOffset: string;
    timeZone: string;
    languageCode: string;
    currencyCode: string;
    checkInTime: string;
    checkOutTime: string;
    paymentCardTypes: EPaymentCardType[];
    description: string;
    locationDescription: string;
    policies: string;
    hotelServices: HotelServiceDTO[];
    businessServices: HotelServiceDTO[];
    rooms: {
        [roomTypeCode: string]: HotelRoomDTO;
    };
    dataSource: HotelDataSource;
    logo?: string;
    colors: DeepPartial<ColorProfile>;
    distanceUnitType?: DistanceUnitType;
    weekdayStartsOn?: WeekdayStartsOn;
    crossSellHotelIds?: string[];
    paymentMethods: EBookingPaymentMethod[];
    cardProcessor: EHotelCardProcessor;
    planpay?: {
        username: string;
        minDaysShowPlanpay: number;
        env: EnvironmentName;
    };
    windcave?: {
        enableDropInMode: boolean;
    };
    email?: string;
    hotelUrl?: string;
    heroImage?: string;
    images?: string[];
    integrations?: EIntegration[];
    roomGroups: HotelRoomGroupsDTO;
    rmsUseDepositQuote?: boolean;
    checkAreaAvailabilityOnRoomStep?: boolean;
    /** @deprecated Use the new Fees model instead */
    enableCreditCardSurcharge?: boolean;
    availableCountries?: {
        name: string;
        value: string;
    }[];
    preventCancellation?: boolean;
    maxAdults?: number;
    maxChildren?: number;
    maxInfants?: number;
    stateFieldConfiguration?: EHotelStateFieldConfiguration;
    itineraryNote: string;
    disableSavedPayments: boolean;
    enableRoomUpsells?: boolean;
    enableRateUpsells?: boolean;
} & Pick<AdminHotelConfig, 'childConfiguration' | 'perks' | 'perkTitle' | 'countryPrefix' | 'quoteImageDesktop' | 'quoteImageMobile' | 'memberOnlyImage' | 'captureChildAge' | 'company' | 'fees' | 'addDepositFeeToBookingTotal' | 'minAdultAge' | 'maxAdultAge' | 'countInfantsInOccupancy' | 'occupancyLimits' | 'preferProviderBookingId' | 'showUnavailableRooms' | 'isRACMemberNoRequired' | 'metaPixelId' | 'enableAnalyticsDebug' | 'countryCode' | 'calendarHighlights' | 'addressRequirement' | 'maxRoomsPerBooking' | 'bookingFlow'> & Pick<ClientHotelConfig, 'memberOnlyRenderRateLast'>;
export declare enum VGSCardName {
    Visa = "visa",
    Mastercard = "mastercard",
    JCB = "jcb",
    DinersClub = "dinersclub",
    AmericanExpress = "amex",
    UnionPay = "unionpay"
}
export declare const SynxisToVGSCardNameMapping: {
    [synxisName in EPaymentCardType]: VGSCardName;
};
