// auto_detect_type — infiere ColumnType muestreando celdas de una columna.
// Promovido del playground tables (issue 0081-F). Pura — sin I/O ni estado.
#pragma once

#include "core/data_table_types.h"

namespace data_table {

// Devuelve true si la cadena s es un literal booleano ("true" / "false").
bool is_bool_text(const char* s);

// Devuelve true si s tiene formato de fecha ISO YYYY-MM-DD (minimo 10 chars).
bool is_date_iso(const char* s);

// Devuelve true si s empieza por '{' o '[' (ignora espacios iniciales).
bool is_json_text(const char* s);

// Devuelve true si s es un entero decimal con signo opcional.
bool is_integer_text(const char* s);

// Parsea s como double. Devuelve false si s esta vacio o no es numerico.
bool parse_number(const char* s, double& out);

// auto_detect_type: escanea hasta sample_n celdas no-vacias de la columna col
// en la matriz cells (row-major, rows x cols) y devuelve el ColumnType inferido.
// Retorna ColumnType::String si no hay celdas validas o si hay mezcla.
ColumnType auto_detect_type(const char* const* cells, int rows, int cols,
                            int col, int sample_n = 64);

} // namespace data_table
