import type { Pool } from 'mysql2/promise';
import { Subscriber } from './logging';
import { Query } from './query';
export interface MySql<Database> extends Query<Database> {
    ping(options?: {
        timeoutMs?: number;
    }): Promise<void>;
    withTransaction<T = void>(fn: (connection: Query<Database>) => Promise<T>): Promise<T>;
    truncate(tableName: keyof Database): Promise<void>;
    subscribe(subscriber: Subscriber): void;
}
export declare const mysql: <Database>(pool: Pool) => MySql<Database>;
export declare const isDuplicatedError: (err: unknown) => boolean;
