/**
 * Hotel Content Response model
 */
export interface IHotelContentResponse {
    hotelCode: number;
    hotelName: string;
    chainCode: string;
    bid: number;
    timezone: string;
    gmtOffset: number;
    unitOfMeasurement: string;
    latitude: number;
    longitude: number;
    starRating: number;
    minRate: number;
    maxRate: number;
    contactInfos: IHotelContactInfo[];
    languages: IHotelContentResponseLanguage[];
    currencies: IHotelContentResponseCurrency[];
    descriptions: IHotelContentResponseDescription[];
    policyInfo: IHotelContentResponsePolicyInfo;
    roomtypes: IHotelContentResponseRoomType[];
    ratePlans: IHotelContentResponseRatePlan[];
    amenities: IHotelContentResponseAmenity[];
    categories: IHotelContentResponseCategory;
    paymentInfo: IPaymentInfo;
    cancellationLeadHours: number;
    checkinTIme: string;
    checkoutTime: string;
    dateRenovated: string;
    goLiveDate: string;
    packages: IHotelContentResponsePackages[];
    totalFloors: number;
    totalRooms: number;
    setting: IHotelContentResponseSettings;
    voucher?: IHotelContentVoucherDetails;
    generalInformation?: IHotelContentGeneralInformation;
    merchandisedCurrencies?: string[];
    ratePlanMerchandisedCurrencies?: string[];
    consents?: IPropertyConsent[];
    insuranceProviders?: ITravelInsuranceProvider[];
}
export interface IPropertyConsent {
    id: number;
    category: string;
    text: string;
    isPreChecked: boolean;
}
export interface IHotelContentGeneralInformation {
    additional: IAdditional[];
    airportDirections?: IAirportDirection[];
}
export interface IAdditional {
    type: string;
    text: string;
}
export interface IAirportDirection {
    airportName: string;
    distanceUnit: string;
    direction: string;
    distance: string;
}
export interface IHotelContentVoucherDetails {
    incertVoucherEnabled: boolean;
    voucherConfigs?: IVoucherConfig[];
}
export interface IVoucherConfig {
    redemptionMode: number;
    redemptionValue: string;
    rewardPartnerId: number;
    rewardPartnerName: string;
}
/**
  * Defines HotelContent API response - Contact info model
  */
export interface IHotelContactInfo {
    contactType: string;
    address: IHotelContactAddress;
    phones: IHotelContactPhone[];
    webContacts: IHotelContentResponseWebContact[];
    contactDesignation: string;
    contactName: string;
}
/**
  * Defines HotelContent API response - Contact info-address model
  */
export interface IHotelContactAddress {
    addressLine1: string;
    addressLine2: string;
    cityName: string;
    stateName: string;
    countryCode: string;
    countryName: string;
    postalCode: string;
}
/**
  * Defines HotelContent API response - Contact info-Phone model
  */
export interface IHotelContactPhone {
    phoneType: string;
    phoneLocationType: string;
    phoneNumber: string;
}
/**
  * Defines HotelContent API response - Web Contact info model
  */
export interface IHotelContentResponseWebContact {
    webType: string;
    webLocationType: string;
    webAddress: string;
}
/**
  * Defines HotelContent API response - language model
  */
export interface IHotelContentResponseLanguage {
    languageId: number;
    languageCode: string;
    languageName: string;
    nativeLanguageName: string;
    default: boolean;
}
/**
  * Defines HotelContent API response - currency model
  */
export interface IHotelContentResponseCurrency {
    currencyId: number;
    currencyCode: string;
    isDefault: boolean;
}
/**
  * Defines HotelContent API response - description model
  */
export interface IHotelContentResponseDescription {
    textType: string;
    text: string;
}
/**
  * Defines HotelContent API response - Policy Info model
  */
export interface IHotelContentResponsePolicyInfo {
    checkinTime: string;
    checkoutTime: string;
    reservationLeadHours: string;
    descriptions: IHotelContentResponsePolicyDescription[];
}
/**
  * Defines HotelContent API response - RoomType model
  */
export interface IHotelContentResponseRoomType {
    roomTypeId: number;
    roomTypeCode: string;
    roomTypeName: string;
    status: string;
    sortorder: number;
    descriptions: IHotelContentResponseRoomTypeDescription[];
    roomCategoryId?: number;
    roomUpgradeOptions: IRoomUpgradeOptions[];
    roomAmenities: IRoomAmenities[];
    beddingConfiguration: IBeddingConfiguration[];
    settings: IHotelContentRoomSettings;
    availableInventoryThreshold?: string;
}
/**
  * Defines HotelContent API response - RoomType description model
  */
export interface IHotelContentResponseRoomTypeDescription {
    textType: string;
    text: string;
}
/**
  * Defines HotelContent API response - RoomType Room Upgrade Options model
  */
export interface IRoomUpgradeOptions {
    upgradeType: string;
    upgradableRooms: IUpgradableRooms[];
}
/**
  * Defines HotelContent API response - RoomType Room Upgradable Rooms model
  */
export interface IUpgradableRooms {
    roomTypeId: number;
    roomTypeName: string;
    sortOrder: number;
}
/**
  * Defines HotelContent API response - RoomType Room Amenities model
  */
export interface IRoomAmenities {
    amenityId: number;
    amenityName: string;
    sortOrder: number;
    isPremium: boolean;
}
/**
  * Defines HotelContent API response - Payment Info model
  */
export interface IPaymentInfo {
    acceptedPayments: IAcceptedPayment[];
    paymentModes: IPaymentModes[];
    processingMode: string;
    paymentProviders: IPaymentProvider[];
    paymentAuxConfigs?: IPaymentAuxConfig[];
}
/**
  * Defines HotelContent API response - Accepted Payments model
  */
export interface IAcceptedPayment {
    cardId: number;
    cardCode: string;
    cvvNumberRequired: boolean;
}
/**
  * Defines HotelContent API response - Payment Modes model
  */
export interface IPaymentModes {
    paymentModeId: number;
    name: string;
}
/**
  * Defines HotelContent API response - payment info- Payment Providers model
  */
export interface IPaymentProvider {
    paymentMethodId: number;
    customValidationAmount: number;
    vendorKey: string;
    category?: string;
}
/**
 * Defines HotelContent API response - Packages model
 */
export interface IHotelContentResponsePackages {
    descriptions: IHotelContentPackageDescription[];
    packageCategoryId?: number;
    packageId: number;
    packageName: string;
    sortOrder: number;
    startDate: string;
    endDate: string;
    settings: IPackageTypeSetting;
    policies?: IPackagePolicy[];
    merchandisedCurrency?: string;
}
/**
 * Defines package policies
 */
export interface IPackagePolicy {
    text: string;
    name: string;
}
/**
  * Defines HotelContent API response - Packages description model
  */
export interface IHotelContentPackageDescription {
    textType: string;
    text: string;
}
/**
  * Defines HotelContent API response - settings model
  */
export interface IHotelContentResponseSettings {
    isStopSellEnabled: boolean;
    isChildAsAdultRateEnabled: boolean;
    maxRoomsPerBooking: number;
    enabledFlexibleTaxes: boolean;
    enabledMultiRate: boolean;
    occupancySettings: IHotelContentOccupancySettings;
    guestFormFieldsSetting: IHotelContentGuestFormFieldsSettings;
    webChannelSetting: IHotelContentWebChannelSettings;
    loyaltySetting: IHotelContentLoyaltySettings;
    enableGuarantee3DS: boolean;
    privateOffersEnabled: boolean;
    privateOfferLoyaltyInfo?: IHotelContentLoyaltySettingsLoyaltyInfo;
    enabledMemberRateMerchandising: boolean;
    enableMediaManagerAsBESource?: boolean;
    enable3DSv1PaymentProcessing: boolean;
    enableBookingEngineInsurance: boolean;
    isEnableAudienceEvaluation: boolean;
    roomSorting?: string;
    isEnableABTesting?: boolean;
    features?: IFeatureActivationToggle[];
}
/**
  * Defines HotelContent API response - Hotel ContentOccupancy Settings model
  */
export interface IHotelContentOccupancySettings {
    familyPricingEnabled: boolean;
    allowChildren: boolean;
    allowInfants: boolean;
    maxOccupancy: number;
    maxAdult: number;
    maxChildren: number;
    minChildAge: number;
    maxChildAge: number;
    isAdditionalChildrenBucketEnabled: boolean;
    childBuckets: IHotelContentOccupancyChildBucket[];
}
/**
  * Defines HotelContent API response - Hotel ContentOccupancy ChildBucket model
  */
export interface IHotelContentOccupancyChildBucket {
    bucketName: string;
    childAgeFrom: number;
    childAgeTo: number;
}
/**
  * Defines HotelContent API response - Hotel Guest FormFields Settings model
  */
export interface IHotelContentGuestFormFieldsSettings {
    isAdressLine1Required: boolean;
    isAdressLine2Required: boolean;
    isCityRequired: boolean;
    isCompanyRequired: boolean;
    isCountryRequired: boolean;
    isCreditCardRequired: boolean;
    isEmailIdRequired: boolean;
    isFaxRequired: boolean;
    isFirstNameRequired: boolean;
    isLastNameRequired: boolean;
    isPhoneRequired: boolean;
    isPostalCodeRequired: boolean;
    isStateRequired: boolean;
    isTitleRequired: boolean;
    titles: string[];
}
/**
  * Defines HotelContent API response - Hotel Web Channel Settings model
  */
export interface IHotelContentWebChannelSettings {
    enabledBrandedUrl: boolean;
    isCancelCommentEnabled: boolean;
    emailOptIn: boolean;
    isCancelCommentRequired: boolean;
    isScheduledPkgEnabled: boolean;
    isCallcenterServiceEnabled: boolean;
    numberOfServiceRequestsDisplayed: number;
    isHotelIStay2Enabled: boolean;
    maxMultiRoomLimit: number;
    enableGMSClickstream: boolean;
    isNor1Enabled?: boolean;
    enableBookingEngineInsurance?: boolean;
}
/**
  * Defines HotelContent API response - Loyalty Settings model
  */
export interface IHotelContentLoyaltySettings {
    isRedeemPointsEnabled: boolean;
    isEarnPointsEnabled: boolean;
    isLoyaltyEnabled: boolean;
    loyaltyInfo?: IHotelContentLoyaltySettingsLoyaltyInfo;
}
export interface IHotelContentLoyaltySettingsLoyaltyInfo {
    loyaltyCurrencyLabel: string;
    loyaltyId: number;
    loyaltyTypeId: number;
    programName: string;
    programTierMapping: IHotelContentLoyaltySettingsLoyaltyInfoProgramTierMapping[];
    minimumRedeemPoints: number;
}
export interface IHotelContentLoyaltySettingsLoyaltyInfoProgramTierMapping {
    externalId: string;
    isDefault: boolean;
    tierId: number;
    tierLevel: number;
    tierName: string;
}
/**
  * Defines HotelContent API response - RatePlan model
  */
export interface IHotelContentResponseRatePlan {
    rateplanId: number;
    rateplanCode: string;
    rateplanName: string;
    rateplanCategory: string;
    sortOrder: number;
    description: IHotelContentResponseRatePlanDescription[];
    confidential?: boolean;
    merchandisedCurrency?: string;
}
/**
  * Defines HotelContent API response - RatePlan description model
  */
export interface IHotelContentResponseRatePlanDescription {
    textType: string;
    text: string;
}
/**
  * Defines HotelContent API response - Amenity model
  */
export interface IHotelContentResponseAmenity {
    amenityId: number;
    amenityName: string;
    sortOrder: number;
    isPremium: boolean;
}
/**
  * Defines HotelContent API response - category model
  */
export interface IHotelContentResponseCategory {
    roomCategories: IHotelContentResponseRoomCategory[];
    packageCategories: IHotelContentResponsePackageCategory[];
}
/**
  * Defines HotelContent API response - roomCategory model
  */
export interface IHotelContentResponseRoomCategory {
    categoryId: number;
    categoryName: string;
    sortorder: number;
    descriptions: IHotelContentResponseRoomCategoryDescription[];
}
/**
  * Defines HotelContent API response - roomCategory description model
  */
export interface IHotelContentResponseRoomCategoryDescription {
    textType: string;
    text: string;
}
/**
  * Defines HotelContent API response - packageCategory model
  */
export interface IHotelContentResponsePackageCategory {
    categoryId: number;
    categoryName: string;
    sortorder: number;
    descriptions: IHotelContentResponsePackageCategoryDescription[];
}
/**
  * Defines HotelContent API response - packageCategory description model
  */
export interface IHotelContentResponsePackageCategoryDescription {
    textType: string;
    text: string;
}
/**
  * Defines HotelContent API response - Policy Description model
  */
export interface IHotelContentResponsePolicyDescription {
    textType: string;
    text: string;
}
/**
  * Defines HotelContent API response - RoomType bedding config model
  */
export interface IBeddingConfiguration {
    bedType: string;
    quanity: number;
}
/**
 * Hotel Content response - Room Type Settings
 */
export interface IHotelContentRoomSettings {
    roomSize: number;
    maxOccupancy: number;
    numberOfBeds: number;
    maxAdultOccupancy: number;
    maxChildOccupancy: number;
}
/**
 * Defines package type settings
 */
export interface IPackageTypeSetting {
    isExtendedStayAllowed: boolean;
    isHideDailyRate: boolean;
    isHideMaxMinNight: boolean;
    isRatePlanBasedPkg: boolean;
    isconfidential: boolean;
    maxStay: number;
    minStay: number;
}
export interface IGroupDetail {
    groupId: number;
    groupCode: string;
    groupName: string;
}
/**
  * Defines HotelContent API response - PaymentAuxConfigs
  */
export interface IPaymentAuxConfig {
    auxConfigTypeId: number;
    auxConfigValue: string;
}
/**
* Defines the model of what an activation feature toggle looks like.
* Used for release activation of features.
*/
export interface IFeatureActivationToggle {
    code: number;
    isActive: boolean;
}
/**
* Hotel Content response - Insurance Form Of Payment
*/
export interface ITravelInsuranceFormOfPayment {
    code: string;
    id: number;
}
/**
* Hotel Content response - Insurance Providers
*/
export interface ITravelInsuranceProvider {
    code: string;
    id: number;
    name: string;
    formsOfPayment: ITravelInsuranceFormOfPayment[];
}
