import { formatDatabaseBackupResult, getDatabaseBackupSizeGuardDecision, type DatabaseBackupSizeEstimate, type RunDatabaseBackupResult } from "@rudderhq/db";
type BackupLogger = {
    info(fields: Record<string, unknown>, message: string): void;
    warn(fields: Record<string, unknown>, message: string): void;
};
type ScheduledDatabaseBackupDeps = {
    estimateDatabaseBackupSize: (opts: {
        connectionString: string;
    }) => Promise<DatabaseBackupSizeEstimate>;
    getDatabaseBackupSizeGuardDecision: typeof getDatabaseBackupSizeGuardDecision;
    runDatabaseBackup: (opts: {
        connectionString: string;
        backupDir: string;
        retentionDays: number;
        filenamePrefix: string;
    }) => Promise<RunDatabaseBackupResult>;
    formatDatabaseBackupResult: typeof formatDatabaseBackupResult;
    logger: BackupLogger;
};
export type ScheduledDatabaseBackupConfig = {
    connectionString: string;
    backupDir: string;
    retentionDays: number;
    maxEstimatedBytes: number;
};
export type ScheduledDatabaseBackupRunResult = {
    status: "completed";
    result: RunDatabaseBackupResult;
} | {
    status: "skipped";
    reason: "database_too_large_for_in_process_backup";
    estimatedBytes: number;
    maxEstimatedBytes: number;
};
export declare function runScheduledDatabaseBackupOnce(config: ScheduledDatabaseBackupConfig, deps?: ScheduledDatabaseBackupDeps): Promise<ScheduledDatabaseBackupRunResult>;
export {};
//# sourceMappingURL=database-backup-scheduler.d.ts.map