import { IDropdownOption } from 'amadeus-hos-res-wc-components';
import { ICountry, IPaymentInfo, IReservationGuestProfileCustomer } from 'amadeus-hos-res-wc-ibe-services';
/**
 * Component Error Model
 */
export interface IGuestDetailsError {
    type: string;
    errorCode: string;
    errorMessage: string;
    attribute?: string;
    httpStatusCode?: number;
}
export interface IGuestDetailPerReservation {
    id: number;
    guestDetails?: IReservationGuestProfileCustomer;
    bookerDetails?: IBookerDetails;
    frequentGuestId?: string;
    roomName?: string;
}
export interface IGuestFieldConfigurations {
    salutation: IFieldConfiguration;
    firstName: IFieldConfiguration;
    lastName: IFieldConfiguration;
    email: IFieldConfiguration;
    phoneNumber: IFieldConfiguration;
    addressLine1: IFieldConfiguration;
    addressLine2: IFieldConfiguration;
    postalCode: IFieldConfiguration;
    city: IFieldConfiguration;
    country: IFieldConfiguration;
    state: IFieldConfiguration;
    frequentGuestId: IFieldConfiguration;
}
export interface IBookerFieldConfigurations {
    salutation: IBookerFieldConfig;
    firstName: IBookerFieldConfig;
    lastName: IBookerFieldConfig;
    email: IBookerFieldConfig;
}
export interface IFieldConfiguration {
    mandatory: boolean;
    enable: boolean;
    hidden: boolean;
    readonly?: boolean;
}
export interface IBookerFieldConfig {
    enable: boolean;
}
export interface IGuestDetails {
    id: number;
    countryTypeVariation: string;
    fields: IGuestFields;
    stateDropdownList: IDropdownOption[];
    roomName: string;
    isCollapsed: boolean;
}
export interface IHotelContent {
    salutationList: string[];
    defaultCountry: string;
    enableGMSClickstream: boolean;
    paymentInfo?: IPaymentInfo;
}
export interface IBookerDetails {
    salutation: string;
    firstName: string;
    lastName: string;
    email: string;
}
export interface IBookerFields {
    salutation: IBookerField;
    firstName: IBookerField;
    lastName: IBookerField;
    email: IBookerField;
}
export interface IGuestFields {
    salutation: IGuestField;
    firstName: IGuestField;
    lastName: IGuestField;
    email: IGuestField;
    phone: IGuestField;
    addressLine1: IGuestField;
    addressLine2: IGuestField;
    countryCode: IGuestField;
    stateCode: IGuestField;
    city: IGuestField;
    postalCode: IGuestField;
    frequentGuestId: IGuestField;
}
export interface IGuestField {
    value: string;
    isInvalid: boolean;
    errorMessage: string;
}
export interface IBookerField {
    value: string;
    isInvalid: boolean;
    errorMessage: string;
}
export interface IGuestDetailsComponentData {
    guestDetailsList: IGuestDetails[];
    bookerDetails: IBookerFields;
    countries: ICountry[];
    salutationList: string[];
    salutationDropdownList: IDropdownOption[];
    countriesDropdownList: IDropdownOption[];
    enableGMSClickstream: boolean;
}
