import { AuthDto } from "../dtos/auth.dto";
import { CalendarHeatmapDto, CalendarHeatmapResponseDto } from "../dtos/calendar-heatmap.dto";
import { LicenseKeyDto, LicenseResponseDto } from "../dtos/license.dto";
import { OnboardingDto, OnboardingResponseDto } from "../dtos/onboarding.dto";
import { UserPreferencesResponseDto, UserPreferencesUpdateDto } from "../dtos/user-preferences.dto";
import { CreateProfileImageResponseDto } from "../dtos/user-profile.dto";
import { UserAdminResponseDto, UserResponseDto, UserUpdateMeDto } from "../dtos/user.dto";
import { JobName, JobStatus } from "../enum";
import { ArgOf } from "../repositories/event.repository";
import { BaseService } from "./base.service";
import { JobOf } from "../types";
import { ImmichFileResponse } from "../utils/file";
export declare class UserService extends BaseService {
    search(auth: AuthDto): Promise<UserResponseDto[]>;
    getMe(auth: AuthDto): Promise<UserAdminResponseDto>;
    getCalendarHeatmap(auth: AuthDto, dto: CalendarHeatmapDto): Promise<CalendarHeatmapResponseDto>;
    updateMe({ user }: AuthDto, dto: UserUpdateMeDto): Promise<UserAdminResponseDto>;
    getMyPreferences(auth: AuthDto): Promise<UserPreferencesResponseDto>;
    updateMyPreferences(auth: AuthDto, dto: UserPreferencesUpdateDto): Promise<UserPreferencesResponseDto>;
    get(id: string): Promise<UserResponseDto>;
    createProfileImage(auth: AuthDto, file: Express.Multer.File): Promise<CreateProfileImageResponseDto>;
    deleteProfileImage(auth: AuthDto): Promise<void>;
    getProfileImage(id: string): Promise<ImmichFileResponse>;
    getLicense(auth: AuthDto): Promise<LicenseResponseDto>;
    deleteLicense({ user }: AuthDto): Promise<void>;
    setLicense(auth: AuthDto, license: LicenseKeyDto): Promise<LicenseResponseDto>;
    getOnboarding(auth: AuthDto): Promise<OnboardingResponseDto>;
    deleteOnboarding({ user }: AuthDto): Promise<void>;
    setOnboarding(auth: AuthDto, onboarding: OnboardingDto): Promise<OnboardingResponseDto>;
    onAssetCreate({ asset, file }: ArgOf<'AssetCreate'>): Promise<void>;
    handleUserSyncUsage(): Promise<JobStatus>;
    handleUserDeleteCheck(): Promise<JobStatus>;
    handleUserDelete({ id, force }: JobOf<JobName.UserDelete>): Promise<void>;
    private isReadyForDeletion;
    private findOrFail;
}
