import { schemaDiff } from '@immich/sql-tools';
import { UserAdminResponseDto } from "../dtos/user.dto";
import { BaseService } from "./base.service";
export type SchemaReport = {
    migrations: MigrationStatus[];
    drift: ReturnType<typeof schemaDiff>;
};
type MigrationStatus = {
    name: string;
    status: 'applied' | 'missing' | 'deleted';
};
export declare class CliService extends BaseService {
    schemaReport(): Promise<SchemaReport>;
    listUsers(): Promise<UserAdminResponseDto[]>;
    resetAdminPassword(ask: (admin: UserAdminResponseDto) => Promise<{
        newPassword: string | undefined;
        invalidateSessions: boolean;
    }>): Promise<{
        admin: {
            id: string;
            createdAt: Date;
            email: string;
            name: string;
            profileImagePath: string;
            isAdmin: boolean;
            shouldChangePassword: boolean;
            updatedAt: Date;
            avatarColor: import("src/enum").UserAvatarColor | null;
            deletedAt: Date | null;
            oauthId: string;
            storageLabel: string | null;
            quotaSizeInBytes: number | null;
            quotaUsageInBytes: number;
            status: import("src/enum").UserStatus;
            profileChangedAt: Date;
            metadata: {
                key: import("src/enum").UserMetadataKey;
                value: {
                    isOnboarded: boolean;
                } | {
                    licenseKey: string;
                    activationKey: string;
                    activatedAt: string;
                } | {
                    albums?: {
                        defaultAssetOrder?: import("src/enum").AssetOrder | undefined;
                    } | undefined;
                    folders?: {
                        enabled?: boolean | undefined;
                        sidebarWeb?: boolean | undefined;
                    } | undefined;
                    memories?: {
                        enabled?: boolean | undefined;
                        duration?: number | undefined;
                    } | undefined;
                    people?: {
                        enabled?: boolean | undefined;
                        sidebarWeb?: boolean | undefined;
                        minimumFaces?: number | undefined;
                    } | undefined;
                    ratings?: {
                        enabled?: boolean | undefined;
                    } | undefined;
                    sharedLinks?: {
                        enabled?: boolean | undefined;
                        sidebarWeb?: boolean | undefined;
                    } | undefined;
                    tags?: {
                        enabled?: boolean | undefined;
                        sidebarWeb?: boolean | undefined;
                    } | undefined;
                    emailNotifications?: {
                        enabled?: boolean | undefined;
                        albumInvite?: boolean | undefined;
                        albumUpdate?: boolean | undefined;
                    } | undefined;
                    download?: {
                        archiveSize?: number | undefined;
                        includeEmbeddedVideos?: boolean | undefined;
                    } | undefined;
                    purchase?: {
                        showSupportBadge?: boolean | undefined;
                        hideBuyButtonUntil?: string | undefined;
                    } | undefined;
                    cast?: {
                        gCastEnabled?: boolean | undefined;
                    } | undefined;
                    recentlyAdded?: {
                        sidebarWeb?: boolean | undefined;
                    } | undefined;
                };
            }[];
        };
        password: string;
        provided: boolean;
    }>;
    disablePasswordLogin(): Promise<void>;
    enablePasswordLogin(): Promise<void>;
    disableMaintenanceMode(): Promise<{
        alreadyDisabled: boolean;
    }>;
    enableMaintenanceMode(): Promise<{
        authUrl: string;
        alreadyEnabled: boolean;
    }>;
    grantAdminAccess(email: string): Promise<void>;
    revokeAdminAccess(email: string): Promise<void>;
    disableOAuthLogin(): Promise<void>;
    enableOAuthLogin(): Promise<void>;
    getSampleFilePaths(): Promise<string[]>;
    migrateFilePaths({ oldValue, newValue, confirm, }: {
        oldValue: string;
        newValue: string;
        confirm: (data: {
            sourceFolder: string;
            targetFolder: string;
        }) => Promise<boolean>;
    }): Promise<boolean>;
    cleanup(): Promise<void>;
}
export {};
