import { ServiceType, SpecialityKey } from './serviceType';
import { AppointmentType, AvailabilitySettingsType } from './availabilityExpertTypes';
import { LanguageKey } from './languageTypes';
export declare enum Gender {
    Male = "Male",
    Female = "Female"
}
export declare enum RoleKey {
    Admin = "Admin",
    Expert = "Expert",
    Curious = "Curious"
}
export type CompanyType = {
    id?: string;
    specialityKey?: SpecialityKey;
    keywords?: string[];
    description?: string;
    location?: string;
    web?: string;
    color?: string;
    icon?: string;
    img?: string;
    name: string;
    position?: string;
};
export type UserConciseType = {
    id?: string;
    nameShort?: string;
    job?: string;
    avatar?: string;
    is_connected?: boolean;
    avgReview?: number;
    nReviews?: number;
    isVerified?: boolean;
};
export type UserBackendType = UserConciseType & {
    username?: string;
    name?: string;
    phone?: string;
    creation_date?: Date | string;
    birthday?: Date | string;
    sex?: Gender;
    languages?: LanguageKey[];
    score?: number;
    headline?: string;
    education?: string;
    email?: string;
    role?: RoleKey;
    email_verified?: boolean;
    phone_verified?: boolean;
    provider?: 'phone' | 'password' | 'google.com';
    last_sign_in?: string;
    speciality?: SpecialityKey[];
};
/** 1 - user*/
/** 2 - availability []*/
/** 3 - services[] */
/** 4 - for each => backend generates timeSlots[] */
/** User type to frontend to generate the whole users*/
export type UserType = UserBackendType & {
    services?: ServiceType[];
    reviews?: number | ReviewType[];
    highlights?: CompanyType;
    notifications?: AppointmentType[];
    availabilityexpert?: AvailabilitySettingsType[];
    history?: AppointmentType[];
};
export type ShownUserType = UserConciseType & {
    services?: ServiceType[];
    availabilityexpert?: AvailabilitySettingsType[];
};
export type ReviewType = {
    id?: string;
    curiousId: string;
    review: number;
    serviceId: string;
    comment?: string;
    expertId: string;
    date: Date;
};
export type ShownReviewType = ReviewType & {
    curiousUser: UserConciseType;
    service: ServiceType;
};
/** Roles*/
export declare const roleMap: {
    Curious: {
        icon: string;
        img: string;
        name: string;
        subtitle: string;
        key: RoleKey;
    };
    Expert: {
        icon: string;
        img: string;
        name: string;
        subtitle: string;
        key: RoleKey;
    };
};
