export type RunDatabaseBackupOptions = {
    connectionString: string;
    backupDir: string;
    retentionDays: number;
    filenamePrefix?: string;
    connectTimeoutSeconds?: number;
    includeMigrationJournal?: boolean;
    excludeTables?: string[];
    nullifyColumns?: Record<string, string[]>;
};
export type RunDatabaseBackupResult = {
    backupFile: string;
    sizeBytes: number;
    prunedCount: number;
};
export type EstimateDatabaseBackupSizeOptions = {
    connectionString: string;
    connectTimeoutSeconds?: number;
    includeMigrationJournal?: boolean;
    excludeTables?: string[];
};
export type DatabaseBackupTableSizeEstimate = {
    schemaName: string;
    tableName: string;
    totalBytes: number;
    rowEstimate: number;
};
export type DatabaseBackupSizeEstimate = {
    databaseSizeBytes: number;
    includedTableTotalBytes: number;
    tableCount: number;
    largestTables: DatabaseBackupTableSizeEstimate[];
};
export type DatabaseBackupSizeGuardDecision = {
    shouldSkip: boolean;
    reason: "database_too_large_for_in_process_backup" | null;
    estimatedBytes: number;
    maxEstimatedBytes: number;
};
export type RunDatabaseRestoreOptions = {
    connectionString: string;
    backupFile: string;
    connectTimeoutSeconds?: number;
};
export declare function getDatabaseBackupSizeGuardDecision(estimate: DatabaseBackupSizeEstimate, maxEstimatedBytes: number): DatabaseBackupSizeGuardDecision;
export declare function estimateDatabaseBackupSize(opts: EstimateDatabaseBackupSizeOptions): Promise<DatabaseBackupSizeEstimate>;
export declare function runDatabaseBackup(opts: RunDatabaseBackupOptions): Promise<RunDatabaseBackupResult>;
export declare function runDatabaseRestore(opts: RunDatabaseRestoreOptions): Promise<void>;
export declare function formatDatabaseBackupResult(result: RunDatabaseBackupResult): string;
//# sourceMappingURL=backup-lib.d.ts.map