import type { MultipartFile } from '@fastify/multipart';
import type { FastifyReply } from 'fastify';
import { EventEmitter } from 'node:events';
import { StreamableFile } from '@nestjs/common';
import { ConfigService } from '../../core/config/config.service.js';
import { HomebridgeIpcService } from '../../core/homebridge-ipc/homebridge-ipc.service.js';
import { Logger } from '../../core/logger/logger.service.js';
import { SchedulerService } from '../../core/scheduler/scheduler.service.js';
import { PluginsService } from '../plugins/plugins.service.js';
export declare class BackupService {
    private readonly configService;
    private readonly pluginsService;
    private readonly schedulerService;
    private readonly homebridgeIpcService;
    private readonly logger;
    private restoreDirectory;
    constructor(configService: ConfigService, pluginsService: PluginsService, schedulerService: SchedulerService, homebridgeIpcService: HomebridgeIpcService, logger: Logger);
    scheduleInstanceBackups(): void;
    private createBackup;
    ensureScheduledBackupPath(): Promise<void>;
    runScheduledBackupJob(): Promise<void>;
    getNextBackupTime(): Promise<{
        next: boolean | Date;
    }>;
    listScheduledBackups(): Promise<{
        id: string;
        instanceId: string;
        timestamp: Date;
        fileName: string;
        size: string;
        maxBackupSize: number;
        maxBackupSizeText: any;
    }[]>;
    getScheduledBackup(backupId: string): Promise<StreamableFile>;
    deleteScheduledBackup(backupId: string): Promise<void>;
    restoreScheduledBackup(backupId: string): Promise<void>;
    downloadBackup(reply: FastifyReply): Promise<StreamableFile>;
    createBackupInDirectory(): Promise<void>;
    uploadBackupRestore(data: MultipartFile): Promise<void>;
    removeRestoreDirectory(): Promise<void>;
    triggerHeadlessRestore(): Promise<{
        status: number;
    }>;
    restoreFromBackup(client: EventEmitter, autoRestart?: boolean): Promise<{
        status: number;
    }>;
    uploadHbfxRestore(data: MultipartFile): Promise<void>;
    restoreHbfxBackup(client: EventEmitter): Promise<{
        status: number;
    }>;
    postBackupRestoreRestart(): {
        status: number;
    };
    private checkBridgeBindConfig;
}
