/**
 * Interface for loyalty profile data
 */
export interface IGuestProfile {
    completeness: IProfileCompleteness;
    consents: IConsent[];
    id: string;
    loyaltyInfo: ILoyaltyInfo;
    memberInfo: ILoyaltyMemberInfo;
    memberPreferences: IMemberPreferences;
}
export interface IProfileCompleteness {
    success: boolean;
    categories: any[];
    score: number;
}
export interface ILoyaltyMemberInfo {
    memberNumber: string;
    memberID: string;
    email: string;
    name: IGuestName;
    birthDate: string;
    primaryIdentifier: string;
    loginActivity: any[];
    statistics: ILoyaltyStatistics;
    addresses: IAddress[];
    phones: IGuestPhone[];
}
export interface IGuestPhone {
    phoneNumber: string;
    phoneType: string;
}
export interface IAddress {
    cityName: string;
    postalCode: string;
    addressLine: string[];
    stateProvince: IGuestState;
}
export interface IGuestState {
    code: string;
}
export interface IGuestName {
    namePrefix: string;
    firstName: string;
    lastName: string;
}
export interface ILoyaltyStatistics {
    totalNights: number;
    totalStays: number;
    totalRevenue: ILoyaltyGuestRevenue;
}
export interface ILoyaltyGuestRevenue {
    amount: number;
    currencyCode: string;
}
export interface IMemberPreferences {
    language: string;
}
export interface ILoyaltyInfo {
    level: ILoyaltyInfoLevel;
    nextLevel: any;
}
export interface ILoyaltyInfoLevel {
    levelName: string;
    levelCode: string;
    points: ILoyaltyInfoLevelPoints;
    numberOfNights: number;
    numberOfStays: number;
    uniqueProperties: number;
    revenueAmount: number;
    permanentIndicator: boolean;
    invitationOnly: boolean;
}
export interface ILoyaltyInfoLevelPoints {
    numberOfPoints: number;
    baseCurrencyCode: string;
    baseCurrencyConversionRatio: number;
    currencies: ILoyaltyCurrency[];
}
export interface ILoyaltyCurrency {
    currencyCode: string;
    cashValue: number;
    conversionRatio?: number;
}
export interface IConsent {
    type: string;
    accepted: boolean;
    action?: string;
    url?: string;
}
export interface IBookingsRetrieveResponse {
    bookings?: IBooking[];
}
export interface IBooking {
    propertyInfo?: IHotel;
    roomDetails?: IRoomDetails[];
}
export interface IHotel {
    ids?: IHotelID[];
    name?: string;
}
export interface IHotelID {
    id?: string;
    context?: string;
}
export interface IRoomDetails {
    roomInfo?: IRoomType;
    reservationInfo?: any[];
}
export interface IRoomType {
    code?: string;
    roomTypeName?: string;
    physicalRoomNumber?: string;
    numberOfUnits?: number;
}
