import type { Transaction } from '../core/transaction' import type { QueryBuilder } from '../query-builders/query-builder' export interface DatabaseDriver { close(): void hasTable(tableName: string): Promise dropTable(tableName: string, options?: { cascade: boolean }): Promise truncateTable(tableName: string, options?: { cascade: boolean }): Promise testConnection(): Promise runQuery(query: string, params: any[]): Promise transaction(callback: (trx: Transaction) => Promise): Promise commit(): Promise rollback(): Promise beginTransaction(): Promise> buildSelectQuery(queryBuilder: QueryBuilder): { sql: string; params: any[] } buildInsertQuery(queryBuilder: QueryBuilder): { sql: string; params: any[] } buildUpdateQuery(queryBuilder: QueryBuilder): { sql: string; params: any[] } buildDeleteQuery(queryBuilder: QueryBuilder): { sql: string; params: any[] } buildUpsertQuery(queryBuilder: QueryBuilder): { sql: string; params: any[] } }