/**
 * Provider-side VM-level backup. Distinct from the Velero+Kopia application
 * backup pipeline — this is whole-VM imaging done by the cloud provider
 * (e.g. Hetzner Cloud Backups: +20% on server price, daily snapshots, 7-day
 * retention). Each provider that offers something equivalent implements this.
 */
export type VmBackupScope = 'whole-vm-no-volumes' | 'whole-vm-with-volumes';
export type VmBackupPricingModel = 'percent-of-server-monthly';
export interface VmBackupCapability {
    supported: boolean;
    retentionDays: number;
    scope: VmBackupScope;
    pricingModel: VmBackupPricingModel;
    /** For 'percent-of-server-monthly': percentage added to the node's monthly price (e.g. 20 = +20%). */
    pricingPercent: number;
    notes?: string;
}
export interface VmBackupStatus {
    serverProviderId: string;
    enabled: boolean;
    /** Provider-reported backup window (UTC, free-form), null when disabled. */
    backupWindow?: string | null;
}
export interface VmBackupSnapshot {
    id: string;
    serverProviderId: string;
    name?: string | null;
    description?: string | null;
    createdAt: string;
    sizeGb?: number | null;
    imageType?: string;
}
export interface IVmBackupProvider {
    getCapability(): VmBackupCapability;
    enableForServer(serverProviderId: string): Promise<void>;
    disableForServer(serverProviderId: string): Promise<void>;
    getStatusForServer(serverProviderId: string): Promise<VmBackupStatus>;
    listBackupsForServer(serverProviderId: string): Promise<VmBackupSnapshot[]>;
}
