import { ModelService } from '../model/model.service';
import { CreateStylistDto } from './dto/create-stylist.dto';
import { UpdateStylistDto } from './dto/update-stylist.dto';
import { Types } from 'mongoose';
import { SpacesService } from '../spaces/spaces.service';
import { AddVacationDto } from './dto/add-vacation.dto';
import { CommonService } from '../common/common.service';
import { AuthService } from '../auth/auth.service';
import { ConfigService } from '@nestjs/config';
export interface StylistResponse {
    _id: Types.ObjectId;
    name: string;
    services: any[];
    email?: string;
    phone?: string;
    imageKey?: string;
    countryCode?: string;
    role?: string;
    active: boolean;
    onVacation: boolean;
    image: string | null;
    workingHours?: any;
    vacations?: any[];
}
export interface StylistsWithMeta {
    data: StylistResponse[];
    meta: {
        total: number;
        total_active: number;
        total_inactive: number;
        total_on_vacation: number;
        page: number;
        limit: number;
        totalPages: number;
    };
}
export declare class StylistService {
    private readonly model;
    private readonly spacesService;
    private readonly commonService;
    private readonly authService;
    private readonly configService;
    private readonly mobileAppUrl;
    constructor(model: ModelService, spacesService: SpacesService, commonService: CommonService, authService: AuthService, configService: ConfigService);
    create(salonId: string, dto: CreateStylistDto): Promise<import("mongoose").Document<unknown, {}, import("../model/schemas/stylist.schema").Stylist, {}, {}> & import("../model/schemas/stylist.schema").Stylist & Required<{
        _id: Types.ObjectId;
    }> & {
        __v: number;
    }>;
    onboard(stylistId: string): Promise<import("mongoose").Document<unknown, {}, import("../model/schemas/stylist.schema").Stylist, {}, {}> & import("../model/schemas/stylist.schema").Stylist & Required<{
        _id: Types.ObjectId;
    }> & {
        __v: number;
    }>;
    findAll(salonId: string, page?: number, limit?: number, active?: boolean, onVacation?: boolean): Promise<StylistsWithMeta>;
    findStylistByService(serviceId: string): Promise<(import("mongoose").FlattenMaps<import("../model/schemas/stylist.schema").Stylist> & Required<{
        _id: Types.ObjectId;
    }> & {
        __v: number;
    })[]>;
    addImage(stylistId: string, imageKey: string): Promise<void>;
    findOne(id: string): Promise<StylistResponse>;
    update(id: string, dto: UpdateStylistDto): Promise<import("mongoose").FlattenMaps<import("../model/schemas/stylist.schema").Stylist> & Required<{
        _id: Types.ObjectId;
    }> & {
        __v: number;
    }>;
    remove(id: string): Promise<{
        message: string;
    }>;
    verifyOnboardingToken(token: string): Promise<{
        stylist: {
            id: any;
            name: string;
            email: string;
        };
        salon: {
            id: any;
            name: string;
        };
        token: string;
    }>;
    addVacation(stylistId: string, dto: AddVacationDto): Promise<{
        start: Date;
        end: Date;
        reason?: string;
    }[]>;
    deleteVacation(vacationId: string): Promise<{
        message: string;
    }>;
}
