/** * Pure utility functions for ClickHouse HTTP interface communication. * Uses ONLY Node.js built-ins — no npm imports. */ export interface ClickHouseCredentials { host: string; port: number; database: string; username: string; password: string; protocol: string; authMethod?: string; jwtToken?: string; } export interface QueryParam { name: string; value: string; } export interface ColumnMapping { sourceField: string; targetColumn: string; } export interface QueryStats { read_rows: string; read_bytes: string; written_rows: string; written_bytes: string; total_rows_to_read: string; elapsed_ns: string; } export interface SchemaColumn { name: string; type: string; default_kind?: string; default_expression?: string; comment?: string; is_in_sorting_key?: number; is_in_primary_key?: number; is_in_partition_key?: number; } export interface SchemaTable { name: string; engine: string; total_rows: number | string; total_bytes: number | string; sorting_key?: string; partition_key?: string; primary_key?: string; comment?: string; columns: SchemaColumn[]; sampleData?: Record[]; } /** * Validates a ClickHouse identifier (database name, table name). * Throws if the identifier contains invalid characters that could enable injection. */ export declare function validateIdentifier(value: string, label: string): void; /** * Validates that a port number is within the valid TCP range. */ export declare function validatePort(port: number): void; export declare function buildBaseUrl(credentials: ClickHouseCredentials): string; export declare function buildAuthHeader(credentials: ClickHouseCredentials): string; export declare function buildUrlParams(database: string, settings?: string, queryParams?: QueryParam[]): string; export declare function chunkArray(arr: T[], size: number): T[][]; export declare function parseClickHouseResponse(body: string): Record[]; /** * Extracts a user-safe error message from a ClickHouse HTTP error response. * Strips potential credential/connection details and keeps only the * ClickHouse error code and message. */ export declare function extractClickHouseError(error: unknown): string; /** * Applies column mapping to a row object. * Renames source fields to target columns, optionally filtering to only mapped fields. */ export declare function applyColumnMapping(row: Record, mappings: ColumnMapping[], onlyMapped: boolean): Record; /** * Parses the X-ClickHouse-Summary header into a structured stats object. */ export declare function parseQueryStats(summaryHeader: string | undefined): QueryStats | null; /** * Infers a ClickHouse type from a JavaScript value. */ export declare function inferClickHouseType(value: unknown): string; /** * Builds a CREATE TABLE DDL from column definitions and options. */ export declare function buildCreateTableDDL(params: { table: string; database: string; columns: Array<{ name: string; type: string; }>; engine: string; orderBy: string; ifNotExists: boolean; partitionBy?: string; ttl?: string; }): string; export declare function formatRowCount(count: number | string): string; export declare function formatBytes(bytes: number | string): string; export declare function formatSchemaForAgent(database: string, tables: SchemaTable[]): string; /** * Validates a WHERE clause for SQL injection. * Uses strict allowlist approach - only permits safe operators. * @throws Error if dangerous patterns are detected */ export declare function validateWhereClause(whereClause: string): void; /** * Escapes a string value for safe use in SQL. * Escapes single quotes and backslashes. */ export declare function escapeStringValue(value: string): string; /** * Validates and sanitizes a SET expression for UPDATE operations. * Expects format: column1 = value1, column2 = value2 * @throws Error if the expression contains dangerous patterns */ export declare function validateSetExpression(setExpression: string): void; /** * Validates an array of column update specifications. * Each entry should have a column name and a value. */ export declare function validateColumnUpdates(updates: Array<{ column: string; value: string; }>): void; /** * Builds a safe SET clause from validated column updates. * Returns format: column1 = value1, column2 = value2 */ export declare function buildSafeSetClause(updates: Array<{ column: string; value: string; quoted?: boolean; }>): string;