///
import { Readable } from 'stream';
import { SQLQuery } from '@databases/sql';
import { Driver } from '@databases/shared';
import { Connection as MySqlClient } from 'mysql2/promise';
import TransactionOptions from './types/TransactionOptions';
import EventHandlers from './types/EventHandlers';
import QueryStreamOptions from './types/QueryStreamOptions';
export default class MySqlDriver implements Driver {
readonly acquireLockTimeoutMilliseconds: number;
readonly client: MySqlClient;
private readonly _handlers;
private _endCalled;
constructor(client: MySqlClient, handlers: EventHandlers, acquireLockTimeoutMilliseconds: number);
private _removeFromPool;
private _idleErrorEventHandler;
private readonly _onIdleError;
onAddingToPool(removeFromPool: undefined | (() => void), idleErrorEventHandler: undefined | ((err: Error) => void)): void;
onActive(): void;
onIdle(): void;
dispose(): Promise;
canRecycleConnectionAfterError(_err: Error): Promise;
beginTransaction(options?: TransactionOptions): Promise;
commitTransaction(): Promise;
rollbackTransaction(): Promise;
shouldRetryTransactionFailure(_transactionOptions: TransactionOptions | undefined, _ex: Error, _failureCount: number): Promise;
createSavepoint(savepointName: string): Promise;
releaseSavepoint(savepointName: string): Promise;
rollbackToSavepoint(savepointName: string): Promise;
private _executeQuery;
executeAndReturnAll(queries: SQLQuery[]): Promise;
executeAndReturnLast(queries: SQLQuery[]): Promise;
queryStream(query: SQLQuery, options?: QueryStreamOptions): AsyncGenerator;
queryNodeStream(query: SQLQuery, options?: QueryStreamOptions): Readable;
}