/**
  * Interface for Alternate Properties Request Payload Options model
  */
export interface IAlternatePropertiesRequestPayloadOptions {
    languageCode: string;
    roomCount: number;
    adults: number;
    infants: number;
    children: number;
    dateIn: string;
    dateOut: string;
    sortOrderPreference: string;
    includeUnavailable: boolean;
    ratePlanType?: string;
    reservationCode?: number;
    accessCodes?: IAlternatePropertiesAccessCode[];
    productId?: number;
    roomTypeId?: number;
    loyaltyTierId?: number;
    childAges?: number[];
    roomSequenceNumber?: any;
    bookerIdentifier?: string;
    partnerIdentifier?: string;
    groupCode?: string;
    promotionId?: number;
    includeMemberRate?: boolean;
}
/**
 * Defines Alternate Properties payload object.
 */
export interface IAlternatePropertiesPayload {
    excludeNightlyRates?: boolean;
    languageCode?: string;
    reservationCode?: number;
    roomStay: IAlternatePropertiesPayloadRoomStayData;
    accessCodes?: IAlternatePropertiesAccessCode[];
    tpaExtension?: IAlternatePropertiesTpaExtension[];
    bookerIdentifier?: string;
    partnerIdentifier?: string;
    includeMemberRate?: boolean;
    disableLocaitonSharing?: boolean;
    currencyCode?: string;
    includeNightlyRates?: boolean;
    promotionId?: number;
}
/**
 * Defines Alternate Properties payload room stay model.
 */
export interface IAlternatePropertiesPayloadRoomStayData {
    endDate: string;
    guestCount: IAlternatePropertiesGuestCount;
    nights?: number;
    productSearchCriteria?: IAlternatePropertiesProductSearchCriteria;
    roomQuantity: number;
    startDate: string;
}
/**
 * Defines Alternate Properties payload Product Search Criteria model
 */
export interface IAlternatePropertiesProductSearchCriteria {
    type?: string;
    includeUnavailable: boolean;
    sortingPreference: string;
    productId?: number;
    roomTypeId?: number;
}
/**
 * Defines Alternate Properties payload guest details model
 */
export interface IAlternatePropertiesGuestCount {
    adults: number;
    infants: number;
    children: IAlternatePropertiesSelectedChild;
}
/**
 * Defines Alternate Properties payload children details model
 */
export interface IAlternatePropertiesSelectedChild {
    ages?: number[];
    count: number;
}
/**
 * Alternate Properties API Response Structure
 */
export interface IAlternatePropertiesResponse {
    alternateHotels: IAlternateHotel[];
}
export interface IAlternateHotel {
    hotelCode: number;
    hotelName: string;
    currencyCode: string;
    shortDescription?: string;
    cityName?: string;
    rating: string;
    rate: number;
    distances?: IAlternatePropertiesDistances[];
    hotelUrl: string;
    media?: IAlternatePropertiesMedia[];
    address?: IAlternatePropertiesAddress;
}
export interface IAlternatePropertiesDistances {
    distance: string;
    distanceUnit: string;
}
export interface IAlternatePropertiesMedia {
    type: string;
    source: string;
    sortOrder: number;
}
/**
 * Alternate Properties payload access code model
 */
export interface IAlternatePropertiesAccessCode {
    code: string;
    type: string;
}
/**
 * Alternate Properties payload tpaExtension model
 */
export interface IAlternatePropertiesTpaExtension {
    name: string;
    value: string;
}
/**
  * Defines address model
  */
export interface IAlternatePropertiesAddress {
    countryCode?: string;
    countryName?: string;
    stateName?: string;
    cityName?: string;
    postalCode?: string;
    addressLine1?: string;
    addressLine2?: string;
    telephone?: IAlternatePropertiesPhone[];
}
/**
  * Defines Phone model
  */
export interface IAlternatePropertiesPhone {
    phoneType?: string;
    phoneLocationType?: string;
    phoneNumber?: string;
    phoneUseType?: string;
}
