import { type Sequelize } from 'sequelize';
export type TableRowEstimateEntry = {
    tableName: string;
    /** From pg_class.reltuples (approximate). */
    estimatedRowCount: number;
};
export type PreMigrationDbSnapshot = {
    /** From pg_database_size; **-1** if the size could not be read (do not treat as a real byte count). */
    databaseSizeBytes: number;
    /**
     * Largest tables first by planner row estimate (`reltuples` DESC).
     * Stored as an array so order is preserved in JSONB.
     * Tables with no estimate yet (`reltuples < 0`, common before ANALYZE) are omitted.
     */
    tableRowEstimates: TableRowEstimateEntry[];
};
/**
 * Fast, approximate snapshot using pg stats (reltuples) and database size.
 * reltuples accuracy depends on ANALYZE; use for trend / coarse sizing only.
 */
export declare function gatherPreMigrationDbSnapshot(sequelize: Sequelize): Promise<PreMigrationDbSnapshot>;
/** Best-effort snapshot for audit logs; logs a warning and returns undefined on failure. */
export declare function tryGatherPreMigrationDbSnapshot(log: {
    warn: (message: string, error: unknown) => void;
}, sequelize: Sequelize): Promise<PreMigrationDbSnapshot | undefined>;
//# sourceMappingURL=gatherPreMigrationDbSnapshot.d.ts.map