import { IDatabaseConnection } from './IDatabaseConnection';
import { Readable } from 'stream';
import { Query } from './Query';
import { IsolationLevel } from './IsolationLevel';
import { IDatabasePosition } from './IDatabasePosition';
import { IQueryable } from './IQueryable';
export declare class ManagedDatabaseConnection implements IDatabaseConnection {
    private $connection;
    /**
     * When true, this class will not close the connection or
     * allow transaction starts or ends. Methods for these actions
     * will be a no-op.
     */
    private $managed;
    private $requiresWrite;
    private $instantionStack;
    constructor(requiresWrite?: boolean);
    formatQuery(query: IQueryable<any>): string;
    setConnection(connection: IDatabaseConnection): void;
    isClosed(): boolean;
    getCurrentDatabasePosition(): Promise<IDatabasePosition>;
    isWriteRequired(): boolean;
    isManaged(): boolean;
    hasConnection(): boolean;
    setInstantiationStack(stack: string): void;
    getInstantiationStack(): string;
    isReadOnly(): boolean;
    setTimeout(timeout: number): void;
    getTimeout(): number;
    query(query: Query, params?: any): Promise<any>;
    stream(query: Query, params?: any, streamOptions?: any): Readable;
    close(forceClose?: boolean): Promise<void>;
    startTransaction(isolationLevel?: IsolationLevel): Promise<void>;
    isTransaction(): boolean;
    commit(): Promise<void>;
    rollback(): Promise<void>;
    private $getConnection;
    getAPI(): any;
}
