// property Response Interface
export interface PropertyResponse {
    meta: {
        status: number;
        message: string;
    };
    data: PropertyData;
    statusCode: number;
}

export type Image = {
    imageId: string;
    imageUrl: string;
};

export type CountryData = {
    countryId: string;
    name: string;
    sortCode: string;
    timezone: string[];
    capital: string;
    currency: string;
    flagImage: string;
    status: number;
};

export type PropertyLocation = {
    zip: string;
    city: string;
    state: string;
    countryId: string;
    streetName: string;
    countryData: CountryData;
};

export type BedType = {
    type: string;
    count: number;
};

export type Bedroom = {
    bedType: BedType[];
};

export type Bathroom = {
    other: string[];
    amenitiesId: string[];
};

export type SleepSpace = {
    number: number;
    roomType: string;
    spaceType: string;
};

export type PropertyTypeData = {
    propertyTypeId: string;
    title: string;
    description: string;
    icon: string;
    selectedIcon: string;
    listingIcon: string;
    slug: string;
};

export type InternetInfo = {
    ping: string;
    jitter: string;
    uploadSpeed: string;
    downloadSpeed: string;
};

export type NoiseLevelInfo = {
    avgDb: number;
    maxDb: number;
};

export type CRS = {
    type: string;
    properties: { name: string };
};

export type Coordinates = {
    crs: CRS;
    type: string;
    coordinates: [number, number];
};

export type Fee = {
    type: string;
    price: number;
    currency: string;
    currencySymbol: string;
};

export type Duration = {
    number: number;
    duration: string;
};

export type Amenity = {
    amenitiesId: string;
    title: string;
    slug: string;
    icon: string;
};

export type BillingAddressData = {
    billingAddressId: string;
    userId: string;
    address: string;
    countryId: string;
    city: string;
    state: string;
    zip: string;
    countryData: CountryData;
};

export type BankData = {
    bankId: string;
    bankName: string;
};

export type UserBankData = {
    userBankId: string;
    userId: string;
    bankId: string;
    accountHolderName: string;
    accountNumber: string;
    swiftCode: string;
    bankData: BankData;
};

export type HostDetails = {
    userId: string;
    firstName: string;
    lastName: string;
    email: string;
    profilePicture: Image;
    status: number;
};

export type BathroomData = {
    amenitiesData: Amenity[];
    otherAmenitiesData: Amenity[];
};

export type propertyTypeData = {
    title: string;
    slug: string;
    icon?: string;
    listingIcon?: string;
    selectedIcon: string;
};

export type PropertyData = {
    propertyId: string;
    userId: string;
    isVerified: boolean;
    propertyLocation: PropertyLocation;
    name: string;
    slug: string;
    headline: string;
    currencySymbol: string;
    propertyType: string;
    propertyTypeData: PropertyTypeData;
    totalGuests: number;
    workspaceId: string[];
    workspaceIsIn: string;
    workspaceType: string;
    workspaceData: Amenity[];
    workspaceIsInData: Amenity;
    workspaceImage: Image;
    propertyImage: Image[];
    internet: string;
    internetInfo: InternetInfo;
    minimumStay: Duration;
    maximumStay: Duration;
    coordinates: Coordinates;
    propertyStatus: string;
    needsModification: boolean;
    modificationReason: string;
    isBanned: boolean;
    banReason: string;
    isDetailsComplete: boolean;
    savedAsDraft: boolean;
    step: number;
    substep: number;
    createdAt: string;
    updatedAt: string;
    hostDetails: HostDetails;
    totalPrice?: string;
    homebaseId?: string[];
    otherAmenitiesId?: string[];
    bedrooms?: Bedroom[];
    bathrooms?: Bathroom[];
    additionalSleepSpace?: SleepSpace;
    totalBedrooms?: number;
    totalBathrooms?: number;
    totalBeds?: number;
    description?: string;
    location?: string[];
    infrastructureId?: string[];
    checkIn?: string;
    checkOut?: string;
    anytimeCheckIn?: boolean;
    anytimeCheckOut?: boolean;
    isLateCheckOutAllowed?: boolean;
    lateCheckout?: string;
    smoking?: boolean;
    pet?: boolean;
    children?: boolean;
    notesForGuest?: string;
    houseRules?: string;
    cancellationPolicy?: string;
    bankingCountryId?: string;
    price: number;
    currency: string;
    deposit?: { amount: number; currency: string; currencySymbol: string };
    negotiable?: boolean;
    cleaningFee?: Fee;
    petFee?: Fee;
    serviceFee?: Fee;
    hasAcceptedTermsAndConditions?: boolean;
    latestBeforeCheckin?: Duration;
    earliestBeforeCheckin?: Duration;
    blockDates?: string[];
    rentingType?: string;
    billingAddressId?: string;
    userBankId?: string;
    legalNameSameAsAccountHolderName?: boolean;
    firstName?: string;
    lastName?: string;
    status: number;
    infrastructureData?: any[];
    homebaseData?: Amenity[];
    billingAddressData?: BillingAddressData;
    userBankData?: UserBankData;
    otherAmenitiesData?: Amenity[];
    locationData?: Amenity[];
    bathroomData?: BathroomData[];
    bankingCountryData?: Record<string, unknown>;
    cancellationPolicyData?: any[];
    propertyFeatureMappingData?: any[];
    availableInMonths?: any;
    allLocationAmenities?: any[];
    checkInTo?: any;
    checkOutTo?: any;
};

