import { F as FormFieldsEnum, l as IDefaultDBColumns, B as BooleanEnum, a as PermissionEnum, R as RoleEnum } from '../index-BiAQ1E-Y.js';

declare enum CleanlinessEnum {
    superClean = 1,
    clean = 2,
    lessClean = 3,
    normalClean = 4
}
declare enum SmokeEnum {
    no = 1,
    yes = 2,
    other = 3
}
declare enum PetsEnum {
    no = 1,
    yes = 2,
    dependsOnThePet = 3
}
declare enum GuestsEnum {
    no = 1,
    yes = 2,
    occasionally = 3
}
declare enum OccupationEnum {
    student = 1,
    haveWork = 2,
    other = 3
}
declare enum FoodPreferenceEnum {
    vegan = 1,
    vegetarian = 2,
    other = 3
}
declare enum WorkScheduleEnum {
    dayTime = 1,
    nightTime = 2,
    other = 3
}
declare enum GenderEnum {
    male = 1,
    female = 2,
    nonBinary = 3,
    all = 4
}
declare enum ConstellationsEnum {
    aries = 1,
    taurus = 2,
    gemini = 3,
    crabCancer = 4,
    leo = 5,
    virgo = 6,
    libra = 7,
    scorpion = 8,
    saggitarius = 9,
    capricorn = 10,
    aquarius = 11,
    pisces = 12
}
declare enum PlacePreferenceEnum {
    entirePlace = 1,
    sharedPlace = 2
}
declare enum BuildingTypeEnum {
    noPreference = 1,
    condo = 2,
    apartment = 3,
    twonHouse = 4,
    house = 5,
    basement = 6
}
declare enum PlaceAvailabilityTermEnum {
    shortTerm = 1,
    longTerm = 2
}
declare enum RMTimeUnitEnum {
    month = 1,
    year = 2
}
declare enum PrivateShareEnum {
    private = 1,
    share = 2
}
declare enum AgreementStatusEnum {
    yes = 1,
    no = 2,
    negotiated = 3
}
declare enum RentInclusionsEnum {
    wifi = 1,
    dishWash = 2,
    tv = 3,
    heater = 4,
    closet = 5,
    water = 6,
    balcony = 7,
    personalEnter = 8,
    electric = 9,
    laundry = 10,
    security = 11,
    parking = 12
}
declare enum PlaceStatusEnum {
    inProgress = 1,
    completed = 2
}

interface IRegisterFormData {
    [FormFieldsEnum.email]: string;
    [FormFieldsEnum.phoneNumber]: string;
    [FormFieldsEnum.password]: string;
    [FormFieldsEnum.firstName]?: string;
    [FormFieldsEnum.lastName]?: string;
    [FormFieldsEnum.age]?: string;
    [FormFieldsEnum.gender]?: GenderEnum;
    [FormFieldsEnum.constellation]?: ConstellationsEnum;
    [FormFieldsEnum.hometown]?: string;
    [FormFieldsEnum.language]?: Array<string>;
    [FormFieldsEnum.profileCompletePercentageNumber]?: number;
    [FormFieldsEnum.birthdayDate]?: string | number;
    [FormFieldsEnum.role]?: string;
}

interface IHobby {
    [FormFieldsEnum.music]?: Array<string>;
    [FormFieldsEnum.movies]?: Array<string>;
    [FormFieldsEnum.travel]?: Array<string>;
    [FormFieldsEnum.books]?: Array<string>;
    [FormFieldsEnum.gym]?: Array<string>;
    [FormFieldsEnum.food]?: Array<string>;
}

interface ILifeStyle {
    [FormFieldsEnum.cleanliness]?: CleanlinessEnum;
    [FormFieldsEnum.smoke]?: SmokeEnum;
    [FormFieldsEnum.pets]?: PetsEnum;
    [FormFieldsEnum.guests]?: GuestsEnum;
    [FormFieldsEnum.occupation]?: OccupationEnum;
    [FormFieldsEnum.foodPreference]?: FoodPreferenceEnum;
    [FormFieldsEnum.workSchedule]?: WorkScheduleEnum;
    [FormFieldsEnum.overnightGuests]?: GenderEnum;
    [FormFieldsEnum.getUpTime]?: string;
    [FormFieldsEnum.goToBedTime]?: string;
}

interface IMinMax {
    [FormFieldsEnum.min]?: number;
    [FormFieldsEnum.max]?: number;
}
interface ILocation {
    [FormFieldsEnum.latitude]?: number;
    [FormFieldsEnum.longitude]?: number;
    [FormFieldsEnum.placeId]?: string | number;
    [FormFieldsEnum.country]?: string;
    [FormFieldsEnum.city]?: string;
    [FormFieldsEnum.streetAddress]?: string;
    [FormFieldsEnum.apartmentSuit]?: string;
    [FormFieldsEnum.province]?: string;
    [FormFieldsEnum.postCode]?: string;
}

interface IRent {
    [FormFieldsEnum.amount]?: number;
    [FormFieldsEnum.period]?: number;
    [FormFieldsEnum.currency]?: string;
}
interface IPlaceGeneralInfo {
    [FormFieldsEnum.title]?: string;
    [FormFieldsEnum.buildingType]?: BuildingTypeEnum;
    [FormFieldsEnum.place]?: PlacePreferenceEnum;
    [FormFieldsEnum.rent]?: IRent;
}
interface IPlaceImages {
    [FormFieldsEnum.bedroomImages]?: string;
    [FormFieldsEnum.washroomImages]?: string;
    [FormFieldsEnum.kitchenImages]?: string;
    [FormFieldsEnum.otherImages]?: string;
}
interface IMinimumLease {
    [FormFieldsEnum.leaseTime]?: number;
    [FormFieldsEnum.leaseTimeUnit]?: RMTimeUnitEnum;
}
interface IHouseInfo {
    [FormFieldsEnum.bedrooms]?: number;
    [FormFieldsEnum.washrooms]?: number;
    [FormFieldsEnum.parking]?: number;
    [FormFieldsEnum.other]?: Array<{
        [FormFieldsEnum.type]?: string;
        [FormFieldsEnum.units]?: number;
        [FormFieldsEnum.detail]?: string;
    }>;
}
interface IPlaceSharingUnit {
    [FormFieldsEnum.type]?: PrivateShareEnum;
    [FormFieldsEnum.detail]?: string;
}
interface IPlaceSharing {
    [FormFieldsEnum.bedroom]?: IPlaceSharingUnit;
    [FormFieldsEnum.livingRoom]?: IPlaceSharingUnit;
    [FormFieldsEnum.kitchen]?: IPlaceSharingUnit;
    [FormFieldsEnum.washroom]?: IPlaceSharingUnit;
    [FormFieldsEnum.livingWithLandlord]?: boolean;
    [FormFieldsEnum.livingWithPersonDetails]?: string;
}
interface IOtherRequirements {
    [FormFieldsEnum.pets]?: AgreementStatusEnum;
    [FormFieldsEnum.smoke]?: AgreementStatusEnum;
    [FormFieldsEnum.furnished]?: AgreementStatusEnum;
}
interface IPlaceBenefits {
    [FormFieldsEnum.benefits]?: RentInclusionsEnum;
    [FormFieldsEnum.otherBenefits]?: string;
}
interface IPlaceDetail {
    [FormFieldsEnum.availabilityTerm]?: PlaceAvailabilityTermEnum;
    [FormFieldsEnum.moveInDate]?: string | number;
    [FormFieldsEnum.moveOutDate]?: string | number;
    [FormFieldsEnum.minimumLease]?: IMinimumLease;
    [FormFieldsEnum.houseInfo]?: IHouseInfo;
    [FormFieldsEnum.otherRequirements]?: IOtherRequirements;
    [FormFieldsEnum.description]?: string;
    [FormFieldsEnum.placeSharingDetail]?: IPlaceSharing;
    [FormFieldsEnum.placeBenefits]?: IPlaceBenefits;
}
interface IPlace extends IDefaultDBColumns {
    [FormFieldsEnum.generalInfo]?: IPlaceGeneralInfo;
    [FormFieldsEnum.location]?: ILocation;
    [FormFieldsEnum.images]?: IPlaceImages;
    [FormFieldsEnum.details]?: IPlaceDetail;
    [FormFieldsEnum.status]?: PlaceStatusEnum;
}

interface IRoomPreference {
    [FormFieldsEnum.whereWantToLive]?: string;
    [FormFieldsEnum.moveInDate]?: string | number;
    [FormFieldsEnum.budget]?: IMinMax;
    [FormFieldsEnum.placePreference]?: PlacePreferenceEnum;
    [FormFieldsEnum.buildingType]?: BuildingTypeEnum;
}
interface IRoommatePreference {
    [FormFieldsEnum.gender]?: GenderEnum;
    [FormFieldsEnum.age]?: IMinMax;
    [FormFieldsEnum.smoke]?: SmokeEnum;
    [FormFieldsEnum.pets]?: PetsEnum;
    [FormFieldsEnum.guests]?: GuestsEnum;
    [FormFieldsEnum.cleanliness]?: CleanlinessEnum;
    [FormFieldsEnum.other]?: string;
}

interface IUserInfo extends IDefaultDBColumns {
    [FormFieldsEnum.aboutMe]?: string;
    [FormFieldsEnum.cnic]?: string;
    [FormFieldsEnum.city]?: string;
    [FormFieldsEnum.country]?: string;
    [FormFieldsEnum.address]?: string;
    [FormFieldsEnum.hobbies]?: IHobby;
    [FormFieldsEnum.lifeStyle]?: ILifeStyle;
}
interface IUserPreference extends IDefaultDBColumns {
    [FormFieldsEnum.roomPreference]?: IRoomPreference;
    [FormFieldsEnum.roommatePreference]?: IRoommatePreference;
}
interface IRoommateUser extends Omit<IDefaultDBColumns, FormFieldsEnum.userId> {
    [FormFieldsEnum.email]?: string;
    [FormFieldsEnum.phoneNumber]?: string;
    [FormFieldsEnum.firstName]?: string;
    [FormFieldsEnum.lastName]?: string;
    [FormFieldsEnum.birthdayDate]?: string;
    [FormFieldsEnum.photoURL]?: string;
    [FormFieldsEnum.age]?: string;
    [FormFieldsEnum.disabled]?: boolean;
    [FormFieldsEnum.gender]?: GenderEnum | null;
    [FormFieldsEnum.constellation]?: ConstellationsEnum | null;
    [FormFieldsEnum.hometown]?: string;
    [FormFieldsEnum.emailVerified]?: BooleanEnum;
    [FormFieldsEnum.language]?: string;
    [FormFieldsEnum.permissions]?: Array<PermissionEnum>;
    [FormFieldsEnum.role]?: RoleEnum;
    [FormFieldsEnum.emailVerifiedAt]?: string | number;
    [FormFieldsEnum.profileCompletePercentageNumber]?: string;
    [FormFieldsEnum.actions]?: string;
}

declare const cleanlinessVal: readonly [
    CleanlinessEnum.clean,
    CleanlinessEnum.lessClean,
    CleanlinessEnum.normalClean,
    CleanlinessEnum.superClean
];
declare const smokeVal: readonly [SmokeEnum.no, SmokeEnum.yes, SmokeEnum.other];
declare const petsVal: readonly [
    PetsEnum.no,
    PetsEnum.yes,
    PetsEnum.dependsOnThePet
];
declare const guestsVal: readonly [
    GuestsEnum.no,
    GuestsEnum.yes,
    GuestsEnum.occasionally
];
declare const occupationVal: readonly [
    OccupationEnum.student,
    OccupationEnum.haveWork,
    OccupationEnum.other
];
declare const foodPreferenceVal: readonly [
    FoodPreferenceEnum.vegan,
    FoodPreferenceEnum.vegetarian,
    FoodPreferenceEnum.other
];
declare const workScheduleVal: readonly [
    WorkScheduleEnum.dayTime,
    WorkScheduleEnum.nightTime,
    WorkScheduleEnum.other
];
declare const genderVal: readonly [
    GenderEnum.male,
    GenderEnum.female,
    GenderEnum.nonBinary,
    GenderEnum.all
];
declare const constellationsVal: readonly [
    ConstellationsEnum.aquarius,
    ConstellationsEnum.aries,
    ConstellationsEnum.capricorn,
    ConstellationsEnum.crabCancer,
    ConstellationsEnum.gemini,
    ConstellationsEnum.leo,
    ConstellationsEnum.libra,
    ConstellationsEnum.pisces,
    ConstellationsEnum.saggitarius,
    ConstellationsEnum.scorpion,
    ConstellationsEnum.taurus,
    ConstellationsEnum.virgo
];
declare const placePreferenceVal: readonly [
    PlacePreferenceEnum.entirePlace,
    PlacePreferenceEnum.sharedPlace
];
declare const buildingTypeVal: readonly [
    BuildingTypeEnum.apartment,
    BuildingTypeEnum.basement,
    BuildingTypeEnum.condo,
    BuildingTypeEnum.house,
    BuildingTypeEnum.noPreference,
    BuildingTypeEnum.twonHouse
];
declare const placeAvailabilityTermVal: readonly [
    PlaceAvailabilityTermEnum.shortTerm,
    PlaceAvailabilityTermEnum.longTerm
];
declare const timeUnitVal: readonly [RMTimeUnitEnum.month, RMTimeUnitEnum.year];
declare const privateShareVal: readonly [
    PrivateShareEnum.private,
    PrivateShareEnum.share
];
declare const agreementStatusVal: readonly [
    AgreementStatusEnum.yes,
    AgreementStatusEnum.no,
    AgreementStatusEnum.negotiated
];
declare const rentInclusionsVal: readonly [
    RentInclusionsEnum.wifi,
    RentInclusionsEnum.dishWash,
    RentInclusionsEnum.tv,
    RentInclusionsEnum.heater,
    RentInclusionsEnum.closet,
    RentInclusionsEnum.water,
    RentInclusionsEnum.balcony,
    RentInclusionsEnum.personalEnter,
    RentInclusionsEnum.electric,
    RentInclusionsEnum.laundry,
    RentInclusionsEnum.security,
    RentInclusionsEnum.parking
];
declare const placeStatusVal: readonly [
    PlaceStatusEnum.completed,
    PlaceStatusEnum.inProgress
];

export { AgreementStatusEnum, BuildingTypeEnum, CleanlinessEnum, ConstellationsEnum, FoodPreferenceEnum, GenderEnum, GuestsEnum, type IHobby, type IHouseInfo, type ILifeStyle, type IMinimumLease, type IOtherRequirements, type IPlace, type IPlaceBenefits, type IPlaceDetail, type IPlaceGeneralInfo, type IPlaceImages, type IPlaceSharing, type IPlaceSharingUnit, type IRegisterFormData, type IRent, type IRoomPreference, type IRoommatePreference, type IRoommateUser, type IUserInfo, type IUserPreference, OccupationEnum, PetsEnum, PlaceAvailabilityTermEnum, PlacePreferenceEnum, PlaceStatusEnum, PrivateShareEnum, RMTimeUnitEnum, RentInclusionsEnum, SmokeEnum, WorkScheduleEnum, agreementStatusVal, buildingTypeVal, cleanlinessVal, constellationsVal, foodPreferenceVal, genderVal, guestsVal, occupationVal, petsVal, placeAvailabilityTermVal, placePreferenceVal, placeStatusVal, privateShareVal, rentInclusionsVal, smokeVal, timeUnitVal, workScheduleVal };
