import { IScopedLogger, IEventBus, IStorageLocation, BackupManifest, ICamstackAddon, IConfigurable, AddonManifest, AddonContext, CapabilityProviderMap, ConfigUISchema } from '@camstack/types';
export { BackupManifest } from '@camstack/types';

interface BackupConfig {
    readonly backupDir: string;
    readonly retentionCount: number;
}
declare class LocalBackupService {
    private readonly config;
    private readonly logger;
    private readonly eventBus;
    private readonly storage;
    private manifests;
    constructor(config: BackupConfig, logger: IScopedLogger, eventBus: IEventBus, storage: IStorageLocation);
    /** Create a backup of specified locations */
    backup(options?: {
        locations?: string[];
        label?: string;
    }): Promise<BackupManifest>;
    /** Restore from a backup */
    restore(backupId: string): Promise<void>;
    /** List all backups sorted by timestamp descending */
    list(): readonly BackupManifest[];
    /** Delete a specific backup */
    delete(backupId: string): Promise<void>;
    private pruneOldBackups;
}

declare class LocalBackupAddon implements ICamstackAddon, IConfigurable {
    readonly manifest: AddonManifest;
    private service;
    private currentConfig;
    initialize(context: AddonContext): Promise<void>;
    shutdown(): Promise<void>;
    getService(): LocalBackupService;
    getCapabilityProvider<K extends keyof CapabilityProviderMap>(name: K): CapabilityProviderMap[K] | null;
    getConfigSchema(): ConfigUISchema;
    getConfig(): Record<string, unknown>;
    onConfigChange(config: Record<string, unknown>): Promise<void>;
}

export { type BackupConfig, LocalBackupAddon, LocalBackupService, LocalBackupAddon as default };
