/**
 * Backup-related data shapes for Onebox
 */
import type { TPlatformServiceType } from './platform.js';
export type TBackupRestoreMode = 'restore' | 'import' | 'clone';
export type TBackupScheduleScope = 'all' | 'pattern' | 'service';
export interface IRetentionPolicy {
    hourly: number;
    daily: number;
    weekly: number;
    monthly: number;
}
export declare const RETENTION_PRESETS: {
    readonly standard: {
        readonly hourly: 0;
        readonly daily: 7;
        readonly weekly: 4;
        readonly monthly: 12;
    };
    readonly frequent: {
        readonly hourly: 24;
        readonly daily: 7;
        readonly weekly: 4;
        readonly monthly: 12;
    };
    readonly minimal: {
        readonly hourly: 0;
        readonly daily: 3;
        readonly weekly: 2;
        readonly monthly: 6;
    };
    readonly longterm: {
        readonly hourly: 0;
        readonly daily: 14;
        readonly weekly: 8;
        readonly monthly: 24;
    };
};
export type TRetentionPreset = keyof typeof RETENTION_PRESETS | 'custom';
export interface IBackup {
    id?: number;
    serviceId: number;
    serviceName: string;
    filename: string;
    snapshotId?: string;
    sizeBytes: number;
    storedSizeBytes?: number;
    createdAt: number;
    includesImage: boolean;
    platformResources: TPlatformServiceType[];
    checksum: string;
    scheduleId?: number;
}
export interface IBackupSchedule {
    id?: number;
    scopeType: TBackupScheduleScope;
    scopePattern?: string;
    serviceId?: number;
    serviceName?: string;
    cronExpression: string;
    retention: IRetentionPolicy;
    enabled: boolean;
    lastRunAt: number | null;
    nextRunAt: number | null;
    lastStatus: 'success' | 'failed' | null;
    lastError: string | null;
    createdAt: number;
    updatedAt: number;
}
export interface IBackupScheduleCreate {
    scopeType: TBackupScheduleScope;
    scopePattern?: string;
    serviceName?: string;
    cronExpression: string;
    retention: IRetentionPolicy;
    enabled?: boolean;
}
export interface IBackupScheduleUpdate {
    cronExpression?: string;
    retention?: IRetentionPolicy;
    enabled?: boolean;
}
export interface IRestoreOptions {
    mode: TBackupRestoreMode;
    newServiceName?: string;
    overwriteExisting?: boolean;
    skipPlatformData?: boolean;
}
export interface IRestoreResult {
    service: {
        name: string;
        status: string;
    };
    platformResourcesRestored: number;
    warnings: string[];
}
export interface IBackupPasswordStatus {
    isConfigured: boolean;
}
