import type { DatabaseAdapter, DatabaseResult, ColumnInfo, FieldDefinition } from "../types.js"; export interface MysqlConfig { host?: string; port?: number; user?: string; password?: string; database?: string; connectionString?: string; } export declare class MysqlAdapter implements DatabaseAdapter { private config; /** * Postgres, MySQL and MSSQL all REQUIRE a name for a derived table, so * the COUNT probe in Database.countProbe wraps as * `FROM (sql) AS _count_query`. SQLite and Firebird leave this unset and * get no alias - Firebird rejects `AS` in that position. */ readonly countSubqueryAlias = "_count_query"; private connection; private _lastInsertId; private _inTransaction; constructor(config: MysqlConfig | string); /** Connect to MySQL. Must be called before using the adapter. */ /** ADR-0044 required adapter capability. */ getDatabaseType(): string; /** ADR-0044: readable/writable native boolean. */ autocommit: boolean; /** * ADR-0044 / DBA-P02: every built-in adapter can guarantee an atomic * multi-row batch by default. A test-only deployment representing one * that cannot sets this false so executeMany rejects BEFORE the first * write rather than risking partial durability. */ supportsAtomicBatch: boolean; connect(): Promise; private ensureConnected; private queryPromise; /** Translate SQL for MySQL dialect. */ translateSql(sql: string): string; execute(sql: string, params?: unknown[]): unknown; executeMany(sql: string, paramsList: unknown[][]): { totalAffected: number; lastId?: number | bigint; }; executeManyAsync(sql: string, paramsList: unknown[][]): Promise<{ totalAffected: number; lastId?: number | bigint; }>; executeAsync(sql: string, params?: unknown[]): Promise; query>(sql: string, params?: unknown[]): T[]; queryAsync>(sql: string, params?: unknown[]): Promise; fetch>(sql: string, params?: unknown[], limit?: number, skip?: number): T[]; fetchAsync>(sql: string, params?: unknown[], limit?: number, skip?: number): Promise; fetchOne>(sql: string, params?: unknown[]): T | null; fetchOneAsync>(sql: string, params?: unknown[]): Promise; insert(table: string, data: Record | Record[]): DatabaseResult; insertAsync(table: string, data: Record | Record[]): Promise; update(table: string, data: Record, filter: Record, params?: unknown[]): DatabaseResult; updateAsync(table: string, data: Record, filter: Record | string, params?: unknown[]): Promise; delete(table: string, filter: Record, params?: unknown[]): DatabaseResult; deleteAsync(table: string, filter: Record | string, params?: unknown[]): Promise; startTransaction(): void; startTransactionAsync(): Promise; commit(): void; commitAsync(): Promise; rollback(): void; rollbackAsync(): Promise; getTables(): string[]; tablesAsync(): Promise; getColumns(table: string): ColumnInfo[]; columnsAsync(table: string): Promise; lastInsertId(): number | bigint | null; close(): void; tableExists(name: string): boolean; tableExistsAsync(name: string): Promise; createTable(name: string, columns: Record): void; createTableAsync(name: string, columns: Record): Promise; }