import { PdoAffectingData } from '../types/pdo-affecting-data';
import { PdoAttributes } from '../types/pdo-attributes';
import { PdoColumnData } from '../types/pdo-column-data';
import { PoolConnection, PoolI } from '../types/pdo-pool';
import { Params, ValidBindings, ValidBindingsSingle } from '../types/pdo-prepared-statement';
import { PdoRawConnectionI } from '../types/pdo-raw-connection';
import { PdoRowData } from '../types/pdo-raw-data';
export declare abstract class PdoRawConnection implements PdoRawConnectionI {
    protected readonly pool: PoolI<PoolConnection>;
    protected attributes: PdoAttributes;
    protected connection: PoolConnection | null;
    protected inTransaction: boolean;
    protected statements: Map<string, any>;
    constructor(pool: PoolI<PoolConnection>);
    protected abstract doBeginTransaction(connection: PoolConnection): Promise<void>;
    protected abstract doCommit(connection: PoolConnection): Promise<void>;
    protected abstract doRollback(connection: PoolConnection): Promise<void>;
    protected abstract doQuery(connection: PoolConnection, sql: string): Promise<[
        PdoAffectingData,
        PdoRowData[][] | PdoRowData[],
        PdoColumnData[][] | PdoColumnData[]
    ]>;
    protected abstract doExec(connection: PoolConnection, sql: string): Promise<PdoAffectingData>;
    protected abstract getStatement(sql: string, connection: PoolConnection): Promise<any>;
    protected abstract executeStatement(statement: any, bindings: Params, connection: PoolConnection): Promise<[
        string,
        PdoAffectingData,
        PdoRowData[][] | PdoRowData[],
        PdoColumnData[][] | PdoColumnData[]
    ]>;
    protected abstract closeStatement(statement: any, connection: PoolConnection): Promise<void>;
    protected abstract adaptBindValue(value: ValidBindingsSingle): ValidBindingsSingle;
    beginTransaction(): Promise<void>;
    commit(): Promise<void>;
    rollback(): Promise<void>;
    prepare(sql: string): Promise<any>;
    bindValue(value: ValidBindings): ValidBindings;
    execute(sql: string, params: Params | null): Promise<[
        string,
        PdoAffectingData,
        PdoRowData[][] | PdoRowData[],
        PdoColumnData[][] | PdoColumnData[]
    ]>;
    exec(sql: string): Promise<number>;
    query(sql: string): Promise<[
        PdoAffectingData,
        PdoRowData[][] | PdoRowData[],
        PdoColumnData[][] | PdoColumnData[]
    ]>;
    lastInsertId({ affectingResults, }: {
        affectingResults: PdoAffectingData;
    }): Promise<string | number | null>;
    close(): Promise<void>;
    getAttribute(attribute: string): string | number;
    setAttribute(attribute: string, value: number | string): boolean;
    setAttributes(attributes: PdoAttributes): void;
    protected release(): Promise<void>;
    protected generateStatement(sql: string): Promise<[string, any]>;
    protected generateOrReuseConnection(): Promise<PoolConnection>;
    protected generateConnection(): Promise<PoolConnection>;
}
export default PdoRawConnection;
